prometheus告警函数

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 类型的时间序列上

   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
原文地址:https://www.cnblogs.com/kevincaptain/p/10508628.html