深色模式
分组 group 与抑制 inhibit
摘要:当几十个实例同时挂掉,会瞬间产生海量告警。group 把同一类合并通知一次;inhibit 让“机房网络断了”自动压制“该机房所有服务超时”,避免雪崩式刷屏。
适用环境
- 已配好 route(见上文路由树配置)
- 告警带有层级标签,如
scope=region/scope=instance
操作步骤
1. 配置分组
yaml
route:
receiver: default
group_by: ['alertname', 'cluster', 'severity']
group_wait: 30s # 第一条到达后等 30s 凑一批
group_interval: 5m # 同组再次发送的最小间隔
repeat_interval: 4h # 未恢复时重复提醒间隔1
2
3
4
5
6
2
3
4
5
6
2. 配置抑制规则
yaml
inhibit_rules:
# 当存在 severity=critical 且 scope=region 的告警时
# 抑制同 region 下 severity<critical 的同类告警
- source_match:
severity: 'critical'
source_match_re:
scope: 'region'
target_match_re:
severity: 'warning|info'
equal: ['region']1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
3. 加载并查看
bash
amtool check-config /etc/alertmanager/alertmanager.yml
curl -X POST http://localhost:9093/-/reload
# 查看生效的抑制规则
amtool config inhibit1
2
3
4
2
3
4
验证
bash
# 模拟触发:先发一条 region 级 critical
amtool alert add alertname=RegionDown severity=critical scope=region region=sh
# 再发该 region 的 warning,应在 UI 中被标记为 suppressed
amtool alert add alertname=ServiceSlow severity=warning scope=instance region=sh
amtool alert query # 观察 suppression1
2
3
4
5
2
3
4
5
常见坑
WARNING
equal字段必须真有相同值,否则抑制不生效;常用equal: ['alertname','cluster']。group_wait太长会拖慢紧急告警通知,critical 建议单独路由配更短等待。
DANGER
inhibit 是“抑制展示”,不是“丢弃告警”,被抑制的告警仍在 Alertmanager 里;排障时别以为它消失了。