【云原生 | Kubernetes 系列】---PromQL语句
PromQL语句
Prometheus提供一个函数式的表达式语言PromQL(Prometheus Query Language).可以使用户实时地查找和聚合时间序列数据.表达式计算结果可以在图表中展示,也可以在Prometheus表达式浏览器中以数据表格形式展示,或者作为数据源,以http api的方式提供给外部系统使用.
1. PromQL数据基础
1.1 数据分类
瞬时向量,瞬时数据(instan vector): 是一组时间序列,每个时间序列包含单个数据样本.比如node_memory_MemTotal_bytes查询当前剩余内存就是一个瞬间向量,该表达式的返回值中只会包含该时间序列中的最新的一个样本值,而相应的这样的表达式称为时间向量表达式.
范围向量,范围数据(range vector):是指任何一个时间范围内,抓取的所有度量指标数据.
标量,纯量数据(scalar): 是一个浮点数类型的数据值,使用Node_load1获取到一个瞬时向量,但是可使用内置函数scalar()将瞬时向量转换为标量.
字符串(string):字符串类型的数据
1.2 数据类型
- counter: 计数器.没有被重置之前数字只增不减
- gauge:仪表盘.动态任意变化的数值.CPU负载,连接数等
- histogram:累积直方图.在一段时间内对数据进行采样.
- summary:摘要.统计不同区间的个数
2. PromQL-指标数据
参数 | 含义 |
---|---|
node_memory_MemTotal_bytes | node节点内存总大小 |
node_memory_MemFree_bytes | node节点可用内存大小 |
node_memory_MemTotal_bytes{instance=“192.168.31.121:9100”} | 指定node节点内存总大小 |
node_memory_MemFree_bytes{instance=“192.168.31.121:9100”} | 指定node节点可用内存大小 |
node_disk_io_time_seconds_total | node节点每秒磁盘io |
node_filesystem_free_bytes{device=“/dev/sda2”,fstype=“xfs”,mountpoint=“/”} | 查看指定磁盘剩余空间 |
node_load1 | 1分钟CPU平均负载 |
node_load5 | 5分钟CPU平均负载 |
node_load15 | 15分钟CPU平均负载 |
3. PromQL运算符
参数 | 含义 |
---|---|
+ | 加法 |
- | 减法 |
* | 乘法 |
/ | 除法 |
% | 模 |
^ | 幂 |
4. PromQL聚合运算
参数 | 含义 |
---|---|
max | * 最大值 |
min | 最小值 |
avg | 平均值 |
sum | * 求和 |
count | * 计数 |
abs | 平均值 |
absent | * 如果监控指标有值就返回空,没值就返回1 |
stddev | 标准差 |
stdvar | 方差 |
topk | * 最大的X个值 |
bottomk | 最小的X个值 |
rate | * 专门搭配conter数据类型使用,取counter数据类型再这个时间段中平均每秒的增量平均数.数据显示更平滑 |
irate | 专门搭配conter数据类型使用,取counter数据再这个时间段中平均每秒峰值 |
by | * 匹配.值保留计算结果中by指定的变迁值,并移除其他所有 |
without | 取反.从计算结果中移除列举的instance,job标签,保留其他标签. |