PromQL基础

  
http_request_total{}瞬时向量表达式,选择当前最新的数据
http_request_total{}[5m]区间向量表达式,选择以当前时间为基准,5分钟内的数据

http_request_total{} offset 5m

http_request_total{}[1d] offset 1d

分钟前的瞬时样本数据

昨天一天的区间内的样本数据

PromQL聚合操作

  
sum () by (cluster_name) 每个结果里的value值的求和,单位没限制,例如请求总时间
topk(3,count_netstat_wait_connections)

前n条时序   进行瞬时报警,不是为了观察曲线图

bottomk()后n条时序
quantile(0.5, http_requests_total)当φ为0.5时,即表示找到当前样本数据中的中位数
min max avg 最小 最大 平均
count()每条结果计数,单位次数
count_values()对value进行计数
  

PromQL 内置函数

rate(5m)

取一段时间增量的平均每秒数量,  5m内总增量/5m

适合缓慢变化的计数器(counter)

irate(5m)

指定时间范围内的最近两个数据点来算速率

适合快速变化的计数器(counter)

increase(5m)

取一段时间增量的总量,   5m内总增量

predict_linear(node_filesystem_free{job= "node"}[1h], 4 * 3600) 适合 gauges,对数据的变化趋势进行预测

by 与without(标签名)

avg without(cpu)  ( rate  (node_cpu_seconds_total{mode="idle"}[5m]) )

 without用于从计算结果中移除列举的标签,而保留其它标签。by则正好相反,结果向量中只保留列出的标签,其余标签

则移除。通过without和by可以按照样本的问题对数据进行聚合。

without不按cpu标签分组,然后计算平均值。

 ceil(node_load5{instance="192.168.1.75:9100"}) 四舍五入
 day_of_month() 返回被给定 UTC 时间所在月的第几天
 clamp_max(node_load5{instance="192.168.1.75:9100"}, 2)  输入一个瞬时向量和最大值,样本数据值若大于 max,则改为 max,否则不变
 changes(node_load5{instance="192.168.1.75:9100"}[1m])

输入一个区间向量, 返回这个区间向量内每个样本数据值变化的次数(瞬时向量)

如果样本数据值没有发生变化,则返回结果为 1
 delta(cpu_temp_celsius{host="zeus"}[2h])

它计算一个区间向量 v 的第一个元素和最后一个元素之间的差值

用在 Gauge 类型的时间序列上

  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
05-08 15:09