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报警端抑制。