Prometheus alertmanager 将通知发送到多个松弛通道

Prometheus alertmanager send notifications to multiple slack channel

我们有两个不同的团队在不同的地方工作 applications.I 希望通过使用相同的警报表达式将警报通知发送到不同的松弛通道。我找到了一些例子,但不明白在尝试添加新路线时使用 receiver: 'default' 的主要原因是什么?这个有什么作用,如果我改了会影响什么?

同时,如果您能提供帮助,我将不胜感激。我应该如何将通知发送到多个松弛通道。我尝试了新的。

当前alertmanager.yml

receivers:
  - name: 'team-1'
    slack_configs:
    - api_url: 'https://hooks.slack.com/services/1'
      channel: '#hub-alerts'
route:
  group_wait: 10s
  group_interval: 5m
  receiver: 'team-1'
  repeat_interval: 1h
  group_by: [datacenter]

新建alertmanager.yml

alertmanager.yml:
    receivers:
      - name: 'team-1'
        slack_configs:
        - api_url: 'https://hooks.slack.com/services/1'
          channel: '#channel-1'
          send_resolved: true
      
      - name: 'team-2'
        slack_configs:
        - api_url: 'https://hooks.slack.com/services/2'
          channel: '#channel-2'
          send_resolved: true

route:
  group_wait: 10s
  group_interval: 5m
  repeat_interval: 1h
  group_by: [datacenter]
  receiver: 'default'
  routes:
  - receiver: 'team-1'
  - receiver: 'team-2'

您需要将路线上的继续 属性 设置为 true。默认为 false。

AlertManager 的默认行为是遍历您的路由寻找匹配项并在找到匹配项的第一个节点处退出。

您要做的是在匹配时发出警报,然后继续搜索其他匹配项并将它们也触发。

相关文档部分:https://prometheus.io/docs/alerting/latest/configuration/#route

一个使用这个的例子: https://awesome-prometheus-alerts.grep.to/alertmanager.html

内联上面的示例以防它中断。

# alertmanager.yml

route:
  # When a new group of alerts is created by an incoming alert, wait at
  # least 'group_wait' to send the initial notification.
  # This way ensures that you get multiple alerts for the same group that start
  # firing shortly after another are batched together on the first
  # notification.
  group_wait: 10s

  # When the first notification was sent, wait 'group_interval' to send a batch
  # of new alerts that started firing for that group.
  group_interval: 5m

  # If an alert has successfully been sent, wait 'repeat_interval' to
  # resend them.
  repeat_interval: 30m

  # A default receiver
  receiver: "slack"

  # All the above attributes are inherited by all child routes and can
  # overwritten on each.
  routes:
    - receiver: "slack"
      group_wait: 10s
      match_re:
        severity: critical|warning
      continue: true

    - receiver: "pager"
      group_wait: 10s
      match_re:
        severity: critical
      continue: true

receivers:
  - name: "slack"
    slack_configs:
      - api_url: 'https://hooks.slack.com/services/XXXXXXXXX/XXXXXXXXX/xxxxxxxxxxxxxxxxxxxxxxxxxxx'
        send_resolved: true
        channel: 'monitoring'
        text: "{{ range .Alerts }}<!channel> {{ .Annotations.summary }}\n{{ .Annotations.description }}\n{{ end }}"

  - name: "pager"
    webhook_config:
      - url: http://a.b.c.d:8080/send/sms
        send_resolved: true