共计 900 个字符,预计需要花费 3 分钟才能阅读完成。
k8s 的 prometheus operator 如果报警没有收敛配置,触发报警后,会一直报警,导致人容易麻木。
这里只是用到了 prometheus 告警收敛的最基本配置。
在 k8s 中修改 alertmanager.yaml 密文。
"global":
"resolve_timeout": "5m"
route:
group_by: ['alertname']
receiver: 'default'
routes:
- receiver: webhook
match_re:
severity: warning|info|critical|emergency
group_wait: 30s
group_interval: 5m
repeat_interval: 3h
receivers:
- name: 'default'
webhook_configs:
- send_resolved: true
url: 'http://wechat-webhook.monitoring.svc.cluster.local:8888/alert'
max_alerts: 0
- name: 'webhook'
webhook_configs:
- send_resolved: true
url: 'http://wechat-webhook.monitoring.svc.cluster.local:8888/alert'
max_alerts: 0
原理是基于标签的告警处理路由。
每一个告警都会从配置文件中顶级的 route 进入路由树,需要注意的是顶级的 route 必须匹配所有告警 (即不能有任何的匹配设置 match 和 match_re),每一个路由都可以定义自己的接受人以及匹配规则。默认情况下,告警进入到顶级 route 后会遍历所有的子节点,直到找到最深的匹配 route,并将告警发送到该 route 定义的 receiver 中。
这里配置了一个 receiver 为 webhook,并且匹配 severity 告警级别,如果匹配到了就走 webhook,没有匹配到就走 default
实际我配置 default 是多余的,但是后面可能有新需求保留。
更多内容请参考官当文档。当然如果你有开发能力也可以在 webhook 报警端抑制。
正文完