如何通过PromQL计算cleaning_executed指标结果的最大/最小时间间隔
问题解答
完全可以通过PromQL查询得到指定时间范围内清理间隔的最大、最小值,具体方法如下:
前提说明
你的cleaning_executed是Gauge类型指标,指标值为每次清理执行时的Unix时间戳,相邻两次上报的指标值差值就是两次清理的时间间隔(单位为秒)。
查询方法
1. 计算最大时间间隔
max_over_time(idelta(cleaning_executed{folder="foo"}[<窗口大小>])[<统计范围>:])
2. 计算最小时间间隔
min_over_time(idelta(cleaning_executed{folder="foo"}[<窗口大小>])[<统计范围>:])
参数说明
<窗口大小>:需要设置为大于你预期的最长单次清理间隔,保证窗口内能覆盖到至少两个连续的清理样本,比如你预期最长间隔是48小时,这里可以填48h<统计范围>:你需要计算最大、最小间隔的总时间范围,比如要统计最近7天的间隔,这里填7d
示例验证
以你给出的样本值为例,相邻间隔分别为11100秒、51300秒、97800秒:
- 执行最大间隔查询会返回
97800(约27.2小时) - 执行最小间隔查询会返回
11100(约3.1小时)
注意事项
如果短时间内连续触发多次清理,两次清理间隔小于Prometheus的指标采集频率,会出现中间的清理记录未被采集的情况,最终统计结果会忽略这类过短间隔。
内容的提问来源于stack exchange,提问作者Arthur
相关产品推荐
相关产品推荐

