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

如何避免Prometheus误触发‘错误已恢复’的告警?

Prometheus误发错误恢复告警的解决办法

问题描述

按照相关指南配置Prometheus错误告警,使用的告警表达式为:

expr: increase(my_error_metric[15m]) > 0

但当错误持续存在时,15分钟后系统会误触发“错误已恢复”的告警,实际问题并未得到修复。

原因分析

increase(my_error_metric[15m])的判断逻辑是看过去15分钟内错误指标的增量是否大于0。如果错误持续但没有产生新的计数(比如错误一直发生但计数器停止增长,或者错误频率极低),连续15分钟内没有增量的话,increase会返回0,Prometheus就会判定告警已恢复。

解决思路

1. 改用sum_over_time配合for子句

用sum_over_time统计过去15分钟内的错误总量,只要总量大于0就保持告警状态,再通过for子句过滤瞬时波动:

expr: sum_over_time(my_error_metric[15m]) > 0
for: 1m

这样只有当连续1分钟以上,过去15分钟内完全没有错误时,才会触发恢复告警。

2. 用rate函数监控错误速率

如果错误指标是计数器类型,用rate监控短窗口内的错误发生速率,配合for子句确保告警持续:

expr: rate(my_error_metric[5m]) > 0
for: 1m

只要5分钟窗口内有错误发生的速率大于0,告警就会保持触发状态,避免长窗口无增量导致的误恢复。

3. 关闭恢复通知(激进方案)

如果不需要接收错误恢复的通知,可以在Alertmanager配置中对该告警关闭恢复发送:

routes:
- match:
    alertname: 你的错误告警名称
  receiver: 你的接收方配置
  send_resolved: false

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 15:55:17