如何正确获取Prometheus Gauge指标在Grafana选定时间范围的增量
解决Gauge指标在Grafana中获取时间范围增量的问题
为什么increase()会出错
increase()是专门给Counter类型指标设计的,它会自动处理Counter重启归零的情况,但你的posts_total是Gauge类型——Gauge的数值可增可减,用increase()会把数值的波动错误当成Counter的持续增长,算出的结果自然远大于实际增量。
正确获取增量的PromQL写法
直接用当前值减去时间范围起始时刻的指标值即可,对应的PromQL:
posts_total - posts_total offset $__range
- 说明:
$__range是Grafana内置变量,对应你选择的时间范围长度(比如选“最近1小时”,它就是1h);offset关键字用来拉取指定时间偏移前的指标值,这样计算出的就是时间范围内的真实增量。
优化:处理采样点缺失的情况
如果时间范围起始时刻刚好没有采样点,用last_over_time()取起始窗口内的最后一个值,避免误差:
posts_total - last_over_time(posts_total[$__range] offset $__range)
这个写法会先获取时间范围开始前$__range窗口里的最新值,再用当前值减去它,结果更准确。
Grafana展示设置
- 把上述PromQL复制到面板的查询框中;
- 选择合适的可视化类型:比如用Stat面板单独展示每个
status的增量,Bar Chart适合对比不同状态的增量; - 可以设置别名,比如
{{status}} 增量,方便区分不同指标系列。
内容的提问来源于stack exchange,提问作者Some Guy
相关产品推荐
相关产品推荐

