Отключить оповещения прометея через 10 минут

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

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

(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 раз, то он должен выдать предупреждение только один раз для слабины.

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

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

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


person Pradnya Alchetti    schedule 21.04.2019    source источник


Ответы (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


Дополнительная информация:

person Eduardo Baitello    schedule 24.04.2019