Prometheus 告警的生命周期是怎样的?
Prometheus 告警生命周期:Inactive(未触发)→ Pending(表达式为真但未满足 for 时长)→ Firing(触发,送 Alertmanager)→ 恢复 Resolved。Alertmanager 侧还有分组、静默、抑制与通知去重。本文讲清全链路。
告警在 Prometheus 中有三个状态:表达式不成立是 Inactive;成立但未持续满 for 时长是 Pending;持续满足后进入 Firing 并发送给 Alertmanager,由它完成分组、路由、静默后通知到人。
Prometheus 侧的三态
表达式为假 → Inactive
表达式为真,for 未满 → Pending(告警规则页可见,但还不通知)
持续为真满 for 时长 → Firing(发送给 Alertmanager)
表达式恢复为假 → 下轮评估后视为 Resolved
for 是防抖核心:for: 10m 表示连续 10 分钟成立才告警,瞬时尖刺不会打扰值班人。
Alertmanager 侧的处理
- 分组(group_by):同组告警合并成一条通知;
- 路由(route):按标签匹配通知渠道(钉钉/邮件/PagerDuty);
- 静默(Silence):维护窗口期屏蔽指定匹配的告警;
- 抑制(Inhibition):高级别告警触发时压住低级别(如节点宕机抑制该节点的服务告警);
- 去重/等待:
group_wait、group_interval、repeat_interval控制通知节奏。
完整链路一图流
规则评估 → Pending → Firing → Alertmanager 分组/路由/静默 → 通知渠道 → 恢复后 Resolved 通知。
观测云对照
观测云监控器把这条链路产品化:检测条件(含持续时长)、告警策略(通知合并/升级)、静默(免打扰时段)、通知对象全部界面化;事件中心统一呈现 Pending/触发/恢复全过程。
常见问题(FAQ)
Q:Pending 期间会通知吗? 不会,只有 Firing 才发给 Alertmanager。
Q:恢复通知怎么开? Alertmanager 的 receiver 里 send_resolved: true(多数渠道默认开)。
Q:告警风暴怎么压? 合理 group_by + 抑制规则 + repeat_interval 拉长。