解决alertmanager重复发送消息的问题

1,问题

在前一篇博客中有讲到说使用alertmanager,即便设置了repeat_interval,但还是收到了两条告警,且间隔时间是for标签的时间

alertmanager片段示例:
routes:
  - receiver: message
    match:
      xxxx:xxxx
    repeat_interval: 3600s
    continue: true
receivers:
- name: message
  webhook_configs:
  - send_resolved: true
    url: http://localhost:8080/message/yyyy
prometheus 规则片段示例:
rules:
- alert: alertName
  expr: up == 1
  for: 5m
  labels:
    xxxx:xxxx

2,可能的原因

1,send_resloved = true

这个标签表示告警恢复后,会发送通知,已经正常了。(就是这个标签的锅)

2,没有group_by标签。

后边查证,没有group_by标签,默认在一组里边,所以也没影响。

3,repeat_interval设置的是s不是h。

这个就更离谱了,Prometheus的duration里边有常用的时间单位,当然包含s。

3,结果

1,试验了一下,是send_resloved=true引起的。

至于收到两条告警,猜想原因是第二条告警是告警恢复通知,但是由于routes里边配置的都是web_hook,触发到业务接口,都当成告警处理了,所以其实第二个通知的内容可能是告警已经恢复的通知,而不是告警,所以这里可能是业务逻辑的bug,但还好,在设置send_resloved = false后,就没有收到第二条消息了,ps,send_resloved默认就是false的,我就是手残,没事儿设置这个,测试还专门提了bug。服气。

2,关于repeat_interval的理解。

如果repeat_interval:1h,那么这个小时内,如果有产生多个告警,那么只会通知一次,一条消息。

你可能感兴趣的:(个人,alertmanager,告警重复,监控告警,Prometheus,重复)