如何在Prometheus中统计1小时内温度变化超5的指标实例次数
解决办法
1. 先搞懂为啥之前的查询返回空
你写的(temperature - temperature offset 1m) > 5是瞬时查询——它只算当前时刻的温度差有没有超过5,如果当前时刻不满足条件,直接返回空结果。但你要统计的是过去1小时里所有符合条件的次数,必须用范围查询加聚合函数才行。
2. 正确的查询语句
用count_over_time函数配合步长参数(和你每分钟采集一次的频率匹配),就能统计出次数:
count_over_time((temperature - temperature offset 1m)[1h:1m] > bool 5)
拆解开说:
[1h:1m]:指定查询过去1小时的数据,步长设为1分钟,保证每个采集点都能被计算到。temperature - temperature offset 1m:对每个步长位置,算出当前温度和1分钟前温度的差值。> bool 5:把差值和5做比较,满足条件返回1,不满足返回0,生成一串布尔值序列。count_over_time(...):统计这串布尔值里1的个数,也就是温度差超过5的次数。
3. 先验证差值再统计
要是担心计算出错,可以先跑下面的查询查看所有差值:
(temperature - temperature offset 1m)[1h:1m]
在图表里确认确实有一个点超过5后,再用上面的统计语句,就能得到正确结果了。
内容的提问来源于stack exchange,提问作者maopuppets
相关产品推荐
相关产品推荐

