如何编写条件持续10分钟的PromQL查询(Grafana数据源)
实现PromQL持续条件检测的方案
要实现“当cpuLoad{instance="1.1.1.1"}>80持续10分钟以上才返回结果”的需求,有两种常用的PromQL写法,可根据业务场景选择:
严格检测:10分钟内所有采样点都满足条件
适合要求完全持续达标、不允许任何短暂回落的场景:
min_over_time(cpuLoad{instance="1.1.1.1"}[10m]) > 80
min_over_time会计算10分钟时间窗口内cpuLoad的最小值,只要最小值大于80,就说明这段时间里每一个采样点的CPU负载都超过了80,完全符合“持续10分钟”的要求。
宽松检测:允许短暂波动(按占比判断)
如果业务上允许偶尔出现不符合条件的采样点,比如要求90%以上的时间处于负载超标状态,可以用采样点占比来判断:
count_over_time((cpuLoad{instance="1.1.1.1"} > 80)[10m]) / count_over_time(cpuLoad{instance="1.1.1.1"}[10m]) > 0.9
- 分子:统计10分钟内满足
cpuLoad>80的采样点数量 - 分母:统计10分钟内
cpuLoad的总采样点数量 - 比值大于0.9表示90%的时间都处于负载超标状态
注意事项
- 要结合你的Prometheus采样间隔调整逻辑:比如采样间隔为1分钟时,
[10m]窗口内会有10个采样点,严格检测时只要所有10个点都达标就会返回结果。
内容的提问来源于stack exchange,提问作者Stas_khodorich
相关产品推荐
相关产品推荐

