Настройка уведомлений
Уведомления — неотъемлемая часть системы мониторинга. Они позволяют пользователю своевременно узнавать о происходящем.
Настройка уведомлений в Okmeter состоит из двух частей: в части triggers настраиваются правила, определяющие, когда отправляется уведомление. Часть notifications определяет, куда отправляется уведомление
Okmeter предлагает большое количество преднастроенных триггеров. Также можно создавать свои триггеры или переопределять преднастроенные.
threshold
.
Триггер
Ниже приведен пример триггера. Данный триггер проверяет количество ошибок в логах доступа 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
.
api_url: api.eu
.opsgenie.com.
alertmanager
Чтобы отправлять уведомления в Prometheus Alertmanager, задайте следующие поля в секции Prometheus:
- url — адрес вашего Alertmanager’а.
- basic auth — данные Basic Auth для вашего Aletrmanager’а. Настоятельно рекомендуется всегда включать Basic Auth для инсталяции Alertmanager’а.
- username — имя пользователя.
- password — пароль.