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

Prometheus慢增长计数器重启后告警失效问题求助

解决方案:计数器重启场景下的客户操作告警配置

针对你遇到的计数器重启后误触发告警的问题,以下是几种简单可行的配置方案,无需使用absent或复杂的时间序列关联:

方案1:基于最后操作时间的直接判断

直接计算当前时间与计数器最新样本的时间差,若超过24小时则触发告警:

time() - last_over_time(some_counter{customer_id="1"}[25h]) > 86400

逻辑说明:

  • last_over_time(some_counter{customer_id="1"}[25h])会获取该客户计数器在最近25小时内的最新样本时间戳
  • 用当前时间(time())减去这个时间戳,若结果大于86400秒(24小时),说明近24小时内没有新的操作样本生成
  • 选择25小时的窗口是为了覆盖24小时的告警阈值,避免因窗口范围过小漏掉重启后的样本

方案2:基于计数器区间内的差值判断

通过对比25小时内计数器的最大值与最小值,判断是否有操作发生:

max_over_time(some_counter{customer_id="1"}[25h]) - min_over_time(some_counter{customer_id="1"}[25h]) > 0

逻辑说明:

  • 若近25小时内有操作,计数器值至少会从0(重启后)或原有值递增到更大的数,最大值与最小值的差值会大于0
  • 若近25小时内无操作,无论计数器是否重启,最大值与最小值都会相等(始终为0或某个固定值),差值为0,触发告警

方案3:修复增量函数的使用逻辑

结合计数器重置检测与增量判断,覆盖正常与重启场景:

max by(customer_id) (
  increase(some_counter{customer_id="1"}[1h]) 
  or 
  (resets(some_counter{customer_id="1"}[25h]) > 0 and last_over_time(some_counter{customer_id="1"}[1h]) > 0)
) > 0

逻辑说明:

  • 正常场景下,increase会返回操作带来的增量,大于0则说明有操作
  • 重启场景下,resets会检测到计数器在25小时内发生过重置,同时last_over_time确认最近1小时内计数器值大于0(即重启后执行过操作),两者结合判定操作已发生

以上方案均可直接在Grafana告警中配置,适配动态customer_id标签的场景,无需复杂的关联逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 14:28:18