Alertmanager 简介
Alertmanager 是 Prometheus 生态中的告警协调器。Prometheus 规则负责判定条件是否满足,Alertmanager 接收 firing/resolved 告警后按标签完成去重、分组、路由、静默、抑制和消息发送。
1. Alertmanager 解决的问题
单条时间序列告警直接通知,会在节点故障、网络异常或大规模发布时产生告警风暴。Alertmanager 通过分组减少重复消息,通过路由将告警交给责任团队,通过静默处理计划变更,通过抑制隐藏已知根因导致的症状告警。
它不采集指标、不计算 PromQL、不替代值班流程。接收器成功返回也不等于人员已响应,因此需要通知测试、OnCall 升级和运行手册。
2. 核心概念
| 概念 | 含义 |
|---|---|
| Alert | 带标签和注释的告警事件,包含 firing 或 resolved 状态 |
| Label | 用于路由、分组与去重的稳定维度,如 team、severity |
| Group | 相关告警合并为一条通知的集合 |
| Route | 根据标签匹配接收器与子路由的规则树 |
| Receiver | 邮件、Webhook、IM、电话等发送渠道定义 |
| Silence | 有过期时间的人工通知抑制,用于维护窗口 |
| Inhibition | 根因告警存在时自动抑制症状告警的长期规则 |
3. 工作流程
Prometheus Rule --> Alertmanager API --> 标签匹配 --> 分组 / 静默 / 抑制 --> Receiver --> 值班人员
每条生产告警应包含至少 alertname、severity、team、service、cluster、environment 等受控标签,并在注释中提供影响说明和运行手册。不要把用户 ID、请求 ID、完整错误文本等高基数或敏感内容放入标签。