Деактивировать оповещения prometheus через 10 минут

#prometheus #prometheus-alertmanager

#prometheus #prometheus-alertmanager

Вопрос:

У меня есть кластер kubernetes, и для мониторинга и оповещений я использую Prometheus. Prometheus alertmanager продолжает повторять оповещения, пока они не станут активными. Я хочу настроить свой alertmanager так, чтобы он отправлял оповещение только один раз в slack и повторял оповещение только в случае изменения состояния оповещения

Я попытался генерировать оповещения только для определенного времени следующим образом

(kube_pod_container_status_restarts_total > 3) * ((time() % 86400 / 3600 > bool 3) == bool (time() % 86400 / 3600 <bool 4))

но у меня это не сработало

Конфигурация сервера Prometheus выглядит следующим образом:

 prometheus-server.yml

alert: PodRestartAlert
        expr: kube_pod_container_status_restarts_total >3
        for: 5m
        labels:
          severity:
        annotations:
          description: ""
          summary: 'The pods that are restarted more than 3 times'
  

Конфигурация Alertmanager выглядит следующим образом:

 global:
      slack_api_url: "http://"
    receivers:
    - name: default-receiver
      slack_configs:
      - channel: '#abc'
        text: Prometheus Alert generated
    route:
      group_by:
      - alertname
      - datacenter
      - app
      group_interval: 5m
      receiver: default-receiver
      repeat_interval: 0

  

Я пытаюсь добиться чего-то, как показано ниже:

Если изначально есть 10 модулей, которые перезапускались более 3 раз, тогда он должен выдавать предупреждение только один раз для slack

Если через день или два количество перезапущенных модулей увеличится только до 20 модулей, менеджер оповещений должен выдать предупреждение, чтобы ослабить его тоже только один раз

Любые предложения о том, что я мог бы попробовать или изменить, были бы очень полезны

Заранее спасибо!

Ответ №1:

Вы можете использовать slack_configs.title для создания общего сообщения, а их slack_configs.text — для ранжирования по срабатывающим / разрешенным предупреждениям, чтобы вы могли получать несколько предупреждений одного и того же типа в одном сообщении Slack.

Кроме того, убедитесь, что установлено slack_configs.send_resolved: true уведомление о разрешенных оповещениях.

например:

 alertmanager:
  config:
    global:
      resolve_timeout: 5m
    route:
      group_by:
        - alertname
        - datacenter
        - app
      group_wait: 30s
      group_interval: 5m
      repeat_interval: 12h
      receiver: 'default-receiver'
    receivers:
    - name: 'default-receiver'
      slack_configs:
      - channel: '#abc'
        send_resolved: true
        title: '[{{ .Status | toUpper }}{{ if eq .Status "firing" }}:{{ .Alerts.Firing | len }}{{ end }}] Monitoring Event Notification'
        text: |-
          {{ range .Alerts }}
            *Alert:* {{ .Labels.alertname }} - `{{ .Labels.severity }}`
            *Description:* {{ .Annotations.summary }}
            *Graph:* <{{ .GeneratorURL }}|:chart_with_upwards_trend:> *Runbook:* <{{ .Annotations.runbook_url }}|:spiral_note_pad:>
            *Details:*
            {{ range .Labels.SortedPairs }} • *{{ .Name }}:* `{{ .Value }}`
            {{ end }}
          {{ end }}
  

Приведенный выше пример также проходит через .Labels.SortedPairs , создавая полный раздел «Подробности:» со всем, что связано с предупреждением о срабатывании.

Оповещения должны выглядеть следующим образом: slack_alert_example


Дальнейшее чтение: