Настройка уведомлений


Уведомления — неотъемлемая часть системы мониторинга. Они позволяют пользователю своевременно узнавать о происходящем.

Настройка уведомлений в Okmeter состоит из двух частей: в части triggers настраиваются правила, определяющие, когда отправляется уведомление. Часть notifications определяет, куда отправляется уведомление

Okmeter предлагает большое количество преднастроенных триггеров. Также можно создавать свои триггеры или переопределять преднастроенные.

Триггер

Ниже приведен пример триггера. Данный триггер проверяет количество ошибок в логах доступа NGINX:

expression: 'sum(n2z(metric(name="nginx.requests.rate", status="5*")))'
threshold: '>= 1'
severity: critical
message: '5xx NGINX %(value).1f per sec'
notify_after: 120
resolve_after: 180
notification_config: ops

Для настройки триггеров доступны следующие опции:

expression

Expression содержит выражение, которое будет использоваться для рассчета значения триггера.

Оно состоит из селектора метрики (metric(name="..", label_foo="..")) в включает ряд математических операций. См. раздел о языке запросов для получения дополнительной информации.

threshold

Threshold - значение, с которым сравнивается значение триггера, полученное в результате выполнения запроса, указанного в expression, и операции сравнения. Если условие в операции сравнения истинно, триггер становится активным. Допускаются следующие операции сравнения: <, <=, >, >=.

severity

Критичность триггера. Для данного поля может иметь значение: critical, warning или info.

Уведомления с уровнем критичности:info никогда не отправляются.

message

Message — поле, содержащее текстовое описание триггера. Оно будет добавлено в уведомление. С помощью языка форматирования в это поле можно добавить результаты выполнения запроса и лейблы.

Например, чтобы включить в сообщение конкретный код ошибки, который привел к срабатыванию триггера, измените стандартный триггер NGINX следующим образом:

expression: 'sum_by(status, n2z(metric(name="nginx.requests.rate", status="5*")))'
message: '%(status)s NGINX %(value).1f per sec'

notify_after / resolve_after

Для игнорирования краткосрочных всплесков можно использовать параметры notify_after и resolve_after.

  • notify_after — задержка для отправки уведомления после перехода триггера в активный статус. Задержка задается в секундах.
  • resolve_after — задержка между моментом, когда условие в threshold перестает быть истинным, и моментом, когда триггер переходит в неактивное состояние. Данная настройка позволяет избежать “дребезга” (наплыва одинаковых алертов) в случае, когда значения триггера близки к порогу срабатывания. Задержка задается в секундах.

notification_config

notification_config — данное поле задает каналы (подробней про настройку каналов доставки уведомлений в разделе: Уведомления), по которым будет отправлено уведомление. По умолчанию все уведомления доставляются по email и sms и для этого не требуется дополнительных настроек.

Чтобы изменить поведение по умолчанию, создайте notification_config с именем default. При этом задавать для каждого триггера notification_config: default не требуется, поскольку notification_config с именем default используется для них по умолчанию.

Чтобы отключить уведомления для триггера, укажите: notification_config: off.

Уведомления

В notification config могут содержаться следующие поля:

renotify_interval: 600
notify_resolve: on
oncalls: # email and sms
  - admin_1
  - admin_2
  - boss
slack_url: https://hooks.slack.com/services/XXXX/XXXX/XXXXXXXX
slack_channel: '#ops'
telegram_chat_id: -XXXXXXXX
opsgenie:
  api_key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
prometheus:
  url: http://HOST:PORT/api/v1/alerts
basic_auth:
  username: XXXX
  password: XXXX

renotify_interval

renotify_interval — задает частоту повторной отправки уведомлений для активных триггеров. Отправка уведомлений (независимо от значения этого поля) прекращается, если триггер перестал быть активным или для него выставлено значение acknowledged или resolved

notify_resolve

notify_resolve — определяет, нужно ли отправлять уведомление, когда триггер изменил свое состояние на неактивное.

oncalls

oncalls — определяет список пользователей, которые получат уведомления. Адреса электронной почты и телефоны пользователей можно задать на странице contacts. Контакты соотносятся по полю Name на странице notification_contacts.

Если не задано ни одного notification configs, уведомления будут отправлены всем пользователям, для которых разрешены уведомления на странице notification_contacts.

slack

Для отправки уведомлений в Slack необходимо создать WebHook в настройках Slack’а.

  • slack_url — в данном поле необходимо указать адрес WebHook.
  • slack_channel — в данном поле можно задать канал, в который будут отправляться уведомления. Оно не является обязательным.

telegram

Для отправки уведомлений в Telegram необходимо:

  • Добавить в чат или группу нашего бота: @OkmeterBot.
  • В поле telegram_chat_id указать ID чата. Для получения ID чата можно воспользоваться нашим ботом. Добавив @OkmeterBot в чат, выполните следующую команду: /chat_id@OkmeterBot

opsgenie

Чтобы отправлять уведомления в Opsgenie, создайте новую интеграцию API (Rest API over JSON) в настройках Opsgenie и укажите полученный API key в поле api_key.

alertmanager

Чтобы отправлять уведомления в Prometheus Alertmanager, задайте следующие поля в секции Prometheus:

  • url — адрес вашего Alertmanager’а.
  • basic auth — данные Basic Auth для вашего Aletrmanager’а. Настоятельно рекомендуется всегда включать Basic Auth для инсталяции Alertmanager’а.
    • username — имя пользователя.
    • password — пароль.