Prometheus中按标签聚合计算rate/irate的方法问询
解决Prometheus按标签聚合rate/irate的问题
针对你需要按app标签聚合错误指标速率的需求,正确的PromQL写法如下:
计算总错误速率(rate)
sum by (app) (rate(application_errors_total[15s]))
计算瞬时错误速率(irate)
sum by (app) (irate(application_errors_total[15s]))
关键说明
- 逻辑顺序:先对每个
application_errors_total时间序列计算指定时间窗口内的速率(rate/irate必须作用于范围向量,即带[15s]的指标),再通过sum by (app)将同一app下不同error_type的结果求和,得到每个app的总错误速率。 - 你之前尝试的
rate((sum(application_errors_total) by (app))[15s])不生效,因为sum by (app)返回的是瞬时向量,无法直接通过[15s]转换为范围向量,而rate只能处理范围向量。 - 你期望的
rate(application_errors_total) by (app)属于Prometheus较新版本(v2.40+)支持的即时聚合器语法,你的v2.33.4版本不兼容该语法,因此采用sum by包裹rate的写法是兼容旧版本的最优方案。
内容的提问来源于stack exchange,提问作者Mateusz Wicherski
相关产品推荐
相关产品推荐

