Prometheus 告警的生命周期是怎样的?

Prometheus 告警生命周期:Inactive(未触发)→ Pending(表达式返回该标签集但未满 for 时长)→ Firing;条件消失且保持期结束后回到 Inactive,恢复通知取决于 Alertmanager 配置。Alertmanager 侧还有分组、静默、抑制与通知去重。本文讲清全链路。

最佳实践
Prometheus 告警的生命周期是怎样的?封面

告警在 Prometheus 中有三个状态:表达式未返回该标签集的向量元素时是 Inactive;返回该元素但未持续满 for 时长是 Pending;持续满足后进入 Firing 并发送给 Alertmanager,由它完成分组、路由、静默后通知到人。

Prometheus 侧的三态

表达式未返回该标签集且无保持期 → Inactive
表达式返回该标签集,for 未满 → Pending(告警规则页可见,但还不通知)
连续评估返回该标签集满 for 时长 → Firing(发送给 Alertmanager)
表达式不再返回该元素 → 无 keep_firing_for 保持期时,下轮评估转为 Inactive,并报告恢复

告警按向量元素是否存在判断,数值为0也可能仍触发;比较表达式加 bool 会保留0值元素,不能把它误当过滤。keep_firing_for 可在条件消失后继续保持Firing。

for 是防抖核心:for: 10m 表示连续 10 分钟成立才告警,瞬时尖刺不会打扰值班人。

Alertmanager 侧的处理

  1. 分组(group_by):同组告警合并成一条通知;
  2. 路由(route):按标签匹配通知渠道(钉钉/邮件/PagerDuty);
  3. 静默(Silence):维护窗口期屏蔽指定匹配的告警;
  4. 抑制(Inhibition):高级别告警触发时压住低级别(如节点宕机抑制该节点的服务告警);
  5. 去重/等待:group_wait、group_interval、repeat_interval 控制通知节奏。

完整链路一图流

规则评估 → Pending → Firing → Alertmanager 分组/路由/静默 → 通知渠道 → 恢复后是否通知取决于接收器配置和发送结果;规则状态不等于通知已送达。

常见问题(FAQ)

Q:Pending 期间会通知吗? 不会,只有 Firing 才发给 Alertmanager。

Q:恢复通知怎么开? Alertmanager 的 receiver 里 send_resolved: true,默认值因集成而异,应检查具体receiver文档。

Q:告警风暴怎么压? 合理 group_by + 抑制规则 + repeat_interval 拉长。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台