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

Last modification:September 21, 2022
如果觉得我的文章对你有用,请随意赞赏