Как заставить Prometheus Alertmanager замолчать, используя конфигурационные файлы?

Я использую официальную таблицу стабильных / прометей-операторов, развертываю Прометей со штурвалом.

Пока работает хорошо, кроме надоедливых CPUThrottlingHigh оповещение, которое запускается для многих модулей (включая собственные контейнеры Prometheus config-reloaders). Это предупреждение в настоящее время обсуждается, и я хочу пока отключить его уведомления.

Alertmanager имеет функцию молчания, но он основан на сети:

Молчание - это простой способ просто отключить звуковые сигналы на определенное время. Молчания настраиваются в веб-интерфейсе Alertmanager.

Есть способ отключить уведомления от CPUThrottlingHigh используя конфигурационный файл?

4 ответа

Решение

Ну, мне удалось это сделать, настроив хакерский injit_rule:

inhibit_rules:
- target_match:
     alertname: 'CPUThrottlingHigh'
  source_match:
     alertname: 'DeadMansSwitch'
  equal: ['prometheus']

DeadMansSwitch По замыслу, "всегда стреляющий" оповещение поставляется с оператором-прометеем, а prometheus метка является общей меткой для всех оповещений, поэтому CPUThrottlingHigh в конечном итоге блокируется навсегда. Воняет, но работает.

Плюсы:

  • Это можно сделать через файл конфигурации (используя alertmanager.config параметр руля).
  • CPUThrottlingHigh оповещение все еще присутствует на Прометея для анализа.
  • CPUThrottlingHigh предупреждение отображается в пользовательском интерфейсе Alertmanager только в том случае, если установлен флажок "Запрещено".
  • Нет раздражающих уведомлений о моих получателях.

Минусы:

  • Любые изменения на DeadMansSwitch или prometheus дизайн этикетки будет нарушать это (только подразумевает срабатывание предупреждений).

Редактировать: мои минусы стали реальными...
DeadMansSwitch altertname только что изменилось в стабильном / prometheus-операторе 4.0.0. Если используется эта версия (или выше), новое имя оповещения Watchdog,

Один из вариантов - направить оповещения, которые вы хотите отключить, на "нулевой" приемник. В alertmanager.yaml:

route:
  # Other settings...
  group_wait: 0s
  group_interval: 1m
  repeat_interval: 1h

  # Default receiver.
  receiver: "null"

  routes:
  # continue defaults to false, so the first match will end routing.
  - match:
      # This was previously named DeadMansSwitch
      alertname: Watchdog
    receiver: "null"
  - match:
      alertname: CPUThrottlingHigh
    receiver: "null"
  - receiver: "regular_alert_receiver"

receivers:
  - name: "null"
  - name: regular_alert_receiver
    <snip>

Я сомневаюсь, что существует способ заставить оповещения замолчать через конфигурацию (кроме маршрутизации указанных оповещений /dev/null получатель, т. е. тот, у которого нет электронной почты или какого-либо другого настроенного механизма уведомления, но предупреждение все равно будет отображаться в пользовательском интерфейсе Alertmanager).

Вы, очевидно, можете использовать инструмент командной строкиamtool это идет с alertmanager, чтобы добавить тишину (хотя я не вижу способа установить время истечения для тишины).

Или вы можете использовать API напрямую (даже если он не задокументирован и теоретически может измениться). В соответствии с этой веткой пользователей-прометей это должно работать:

curl https://alertmanager/api/v1/silences -d '{
      "matchers": [
        {
          "name": "alername1",
          "value": ".*",
          "isRegex": true
        }
      ],
      "startsAt": "2018-10-25T22:12:33.533330795Z",
      "endsAt": "2018-10-25T23:11:44.603Z",
      "createdBy": "api",
      "comment": "Silence",
      "status": {
        "state": "active"
      }

}'

Вы можете отключить его, отправив оповещения через Robusta. (Отказ от ответственности: я написал Робусту.)

Вот пример:

      - triggers:
  - on_prometheus_alert: {}
  actions:
  - name_silencer:
      names: ["Watchdog", "CPUThrottlingHigh"]

Однако, это, вероятно, не то, что вы хотите сделать!

Некоторые оповещения являются спамом и не могут быть исправлены, как оповещения для metrics-server на GKE..

Однако в целом предупреждение имеет смысл и может указывать на реальную проблему. Как правило, наилучшей практикой является изменение или удаление ограничения ЦП модуля..

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

Другие вопросы по тегам