You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在应用重启后计算Prometheus Counter的数值总和?

解决Prometheus Counter重启后在Grafana计算总和的方案
  • 用sum_over_time+increase组合(官方推荐)
    针对Counter类型指标,最省心的方式是先通过increase()计算每个时间窗口的增量(它会自动识别并处理Counter重置的情况),再用sum_over_time()把整个查询时间范围内的所有增量加总。比如你的指标是my_counter,查询语句可以这么写:

    sum_over_time(increase(my_counter[1m])[$__range:1m])
    

    这里increase(my_counter[1m])负责每1分钟算一次增量,sum_over_time(...)[$__range:1m]把整个时间范围内的所有1分钟增量累加起来,就能得到重启后的总累计值。

  • resets()函数做精细修正
    如果对标签维度有严格要求,可以用resets()函数识别Counter的重置次数,手动补全重置前的数值。示例语句:

    sum(
      my_counter
      + ignoring(instance, pod) group_left()
      (sum_over_time(my_counter[1m] offset 1m) * resets(my_counter[$__range]))
    )
    

    这个逻辑会把每次重置前的最后值加到当前数值上,适合需要精准对齐标签的场景。

  • Grafana动态变量适配K8s场景
    如果是监控K8s Pod的Counter,可以用Grafana的Pod动态变量,先获取所有目标Pod,再对每个Pod的指标分别计算增量后求和:

    sum(increase(my_counter{pod=~"$pod"}[$__interval]))
    

    配合Grafana的时间范围变量,能自动适配不同查询周期,同时处理Pod重启导致的Counter重置。

这些都是2019年后PromQL和Grafana功能迭代后的实用方案,相比早期的土方法,现在的组合方式是官方认可的标准做法,不用额外加自定义指标或外部存储,就能可靠处理Counter重置问题。

内容的提问来源于stack exchange,提问作者leotim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 22:36:09