Grafana. Настройка уведомлений
Вы можете настроить уведомление пользователей о состоянии виртуальных машин (ВМ) и узлов кластера. Grafana позволяет отправлять уведомления по электронной почте и/или в различные мессенджеры (например, Slack или Telegram).
Статья содержит инструкции по настройке уведомлений для платформы VMmanager. В текущей версии платформа использует Grafana v6.7.4.
Инструкции для актуальной версии Grafana см. в официальной документации.
Каналы уведомлений
Telegram
Для настройки канала уведомлений в Telegram:
- Создайте Telegram-бота по инструкции из статьи Отправка уведомлений в Telegram. Сохраните значение токена для бота.
- Перейдите в Alerting → Notification channels.
- Нажмите Add channel (New Channel).
- В поле Name укажите название уведомления. Например, Telegram notify.
- В поле Type выберите тип уведомлений — Telegram.
- Включите опцию Default (send on all alerts), чтобы использовать этот метод для всех уведомлений.
Включите опцию Include image, чтобы добавить в уведомление изображение дашборда.
Не рекомендуем использовать эту опцию, так как создание изображения создаёт большую нагрузку на докер-контейнер с Grafana.
Включите опцию Disable Resolve Message, чтобы не получать сообщения об устранении проблемы, по которой отправлялись уведомления.
Включите опцию Send Reminders, чтобы получать напоминания о созданном уведомлении и укажите периодичность отправки в параметре Send reminder every. Например, 15m — для отправки каждые 15 минут.
Напоминания не могут отправляться чаще, чем сами уведомления.
- Укажите настройки Telegram:
- BOT API Token — токен Telegram-бота.
Chat ID — id чата в Telegram.
Чтобы узнать id чата, добавьте в чат бота @getmyid_bot.
- Нажмите Send Test для отправки тестового сообщения.
- Нажмите Save чтобы сохранить настройки.
Пример настроек
Slack
Для настройки канала уведомлений в Slack:
- Перейдите в Alerting → Notification channels.
- Нажмите Add channel (New Channel).
- В поле Name укажите название уведомления. Например, Slack notify.
- В поле Type выберите тип уведомлений — Slack.
- Включите опцию Default (send on all alerts), чтобы использовать этот метод для всех уведомлений.
Включите опцию Include image, чтобы добавить в уведомление изображение дашборда.
Не рекомендуем использовать эту опцию, так как создание изображения создаёт большую нагрузку на докер-контейнер с Grafana.
- Включите опцию Disable Resolve Message, чтобы не получать сообщения об устранении проблемы, по которой отправлялись уведомления.
Включите опцию Send Reminders, чтобы получать напоминания о созданном уведомлении и укажите периодичность отправки в параметре Send reminder every. Например, 15m — для отправки каждые 15 минут.
Напоминания не могут отправляться чаще, чем сами уведомления.
- Укажите настройки Slack:
Url — URL-адрес Slack для входящих вебхуков (webhooks). Подробнее см. в официальной документации Slack.
- Recipient — получатель сообщения. Введите название канала в формате #channel_name или имя пользователя в формате @username.
- Username — имя отправителя уведомления.
- Icon emoji — емодзи для иконки отправителя уведомления. Например, :exclamation:.
- Icon URL — URL с изображением для иконки отправителя уведомления.
- Mention Users — id пользователей Slack, на которых нужно сослаться в сообщении. Вы можете указать имена пользователей через запятую.
- Mention Groups — группы Slack, на которые нужно сослаться в сообщении.
- Mention Channel — кому из участников канала отправить уведомление:
- Disabled — не отправлять уведомление;
- Every active channel member — всем активным участникам;
- Every channel member — всем участникам.
- Token — токен бота для использования API-функции Slack file.upload. Для работы функции укажите получателя сообщения в поле Recepient.
- Нажмите Send Test для отправки тестового сообщения.
- Нажмите Save чтобы сохранить настройки.
Пример настроек
Параметры уведомлений
Чтобы настроить правила для отправки уведомлений:
- Нажмите на заголовок графика → Edit.
- Нажмите
→ Create alert.
- Укажите параметры уведомления:
- Name — произвольное имя уведомления.
- Evaluate every — частота уведомления. Например, 5m для уведомления каждые пять минут или 1h для уведомления каждый час.
- For — время, которое Grafana выжидает после наступления порогового значения параметра. Например, 15m для ожидания 15 минут.
Conditions — условия для уведомления:
Формат условия
WHEN function OF query(id, start_time, end_time) condition value
CODEПояснения к форматуfunction — функция для расчёта параметра. Возможные значения:
- avg() — среднее значение;
- min() — минимальное значение;
- max() — максимальное значение;
- sum() — сумма всех значений;
- count() — количество значений;
- last() — последнее значение;
- median() — среднее значение по медиане;
- diff() — разница между значениями;
- percent_diff() — разница между значениями в процентах;
- count_non_null() — количество значений, отличных от null;
id — идентификатор очереди. Значение по умолчанию для первого графика — A, для второго — B и т.д. Вы можете посмотреть идентификатор в разделе
(Queries);
start_time — время, с которого нужно вести расчёт. Параметр start_time задаётся относительно текущего времени. Например, 15m — за 15 минут до текущего времени;
end_time — время, до которого нужно вести расчёт. Параметр end_time задаётся относительно текущего времени в формате now-<time>. Например, now-5m — за 5 минут до текущего времени;
condition — условие. Возможные значения:
- IS ABOVE — больше;
- IS BELOW — ниже;
- IS OUTSIDE RANGE — вне диапазона;
- IS WITHIN RANGE — в диапазоне;
- HAS NO VALUE — отсутствуют значения;
value — значение или диапазон
Пример условия
WHEN avg() OF query(A, 15m, now) IS ABOVE 90
CODEПояснения к примеруУсловие сработает, если за последние 15 минут среднее значение данных из очереди А превысило 90.
Чтобы задать дополнительное условие, нажмите
. Чтобы добавить условие через логическое "И" укажите в начале условия операнд AND. Чтобы добавить условие через логическое "ИЛИ" укажите в начале условия операнд OR.
Пример условия
WHEN avg() OF query(A, 15m, now) IS ABOVE 90 AND max() OF query(A, 15m, now) IS ABOVE 95
CODEПояснения к примеруУсловие сработает, если за последние 15 минут среднее значение данных из очереди А превысило 90 и максимальное превысило 95.
Дополнительные условия проверяются последовательно в порядке их ввода.
- If no data or all values are null — статус уведомления в случае, если данные отсутствуют или имеют значения null. Возможные значения: Alerting, No Data, Keep Last State, OK;
- If execution error or timeout — статус уведомления в случае, если во время его выполнения возникла ошибка. Возможные значения: Alerting, Keep Last State.
- Выберите каналы уведомления в поле Send to.
- Введите текст уведомления в поле Message.
- Cохраните настройки: в верхнем правом меню нажмите значок
→ введите комментарий → кнопка Save.
Может быть полезно
Связанные статьи: