深色模式
路由 route 树配置
摘要:Alertmanager 的 route 是一棵树,告警从根路由进入,按
match/matchers逐层匹配标签,最终落到某个 receiver。本文用分级、按团队的例子讲清楚怎么配。
适用环境
- 已部署 Alertmanager(见上文安装部署)
- 告警带有
severity、team、service等标签
yaml
# 在 Prometheus alerting rule 里给告警打标签
labels:
severity: critical
team: payment1
2
3
4
2
3
4
操作步骤
1. 设计路由树
根路由做默认兜底,下面按团队分,再按级别细分:
yaml
route:
receiver: 'default'
group_by: ['alertname', 'cluster']
group_wait: 30s
group_interval: 5m
repeat_interval: 4h
routes:
- matchers: ['team="payment"']
receiver: 'payment-oncall'
routes:
- matchers: ['severity="critical"']
receiver: 'payment-page'
repeat_interval: 30m
- matchers: ['severity="warning"']
receiver: 'payment-slack'
- matchers: ['team="infra"']
receiver: 'infra-oncall'1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2. 配对应 receiver
yaml
receivers:
- name: 'default'
email_configs:
- to: 'ops@example.com'
- name: 'payment-page'
webhook_configs:
- url: 'http://oncall.example.com/api/alert'
- name: 'payment-slack'
slack_configs:
- api_url: 'https://hooks.slack.com/services/XXX'
channel: '#payment-alert'
- name: 'infra-oncall'
webhook_configs:
- url: 'http://oncall.example.com/api/alert'1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
DANGER
matchers 语法(如 team="payment")是较新版本写法;老版本用 match: 字典,混用会报配置错误。
3. 热加载配置
bash
# 校验配置
amtool check-config /etc/alertmanager/alertmanager.yml
# 让进程重新加载
curl -X POST http://localhost:9093/-/reload1
2
3
4
2
3
4
验证
bash
# 打印实际路由匹配结果
amtool config routes test alertname=HighError team=payment severity=critical
# 应输出 receiver: payment-page1
2
3
2
3
常见坑
WARNING
- 路由从上到下匹配,第一条命中即停止(除非
continue: true),顺序写错会被错误接收者截走。 group_by字段要稳定,频繁变动的标签(如实例 IP)会让分组不断拆开,告警刷屏。