Вы можете настроить уведомление пользователей о состоянии виртуальных машин (ВМ) и узлов кластера. Grafana позволяет отправлять уведомления по электронной почте и/или в различные мессенджеры (например, Slack или Telegram).

Статья содержит инструкции по настройке уведомлений для платформы VMmanager. В текущей версии платформа использует Grafana v6.7.4.

Инструкции для актуальной версии Grafana см. в официальной документации.

Каналы уведомлений


Telegram

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

  1. Создайте Telegram-бота по инструкции из статьи Отправка уведомлений в Telegram. Сохраните значение токена для бота.
  2. Перейдите в AlertingNotification channels.

  3. Нажмите Add channel (New Channel).
  4. В поле Name укажите название уведомления. Например, Telegram notify.
  5. В поле Type выберите тип уведомлений — Telegram.
  6. Включите опцию Default (send on all alerts), чтобы использовать этот метод для всех уведомлений.
  7. Включите опцию Include image, чтобы добавить в уведомление изображение дашборда.

    Не рекомендуем использовать эту опцию, так как создание изображения создаёт большую нагрузку на докер-контейнер с Grafana.

  8. Включите опцию Disable Resolve Message, чтобы не получать сообщения об устранении проблемы, по которой отправлялись уведомления.

  9. Включите опцию Send Reminders, чтобы получать напоминания о созданном уведомлении и укажите периодичность отправки в параметре Send reminder every. Например, 15m — для отправки каждые 15 минут.

    Напоминания не могут отправляться чаще, чем сами уведомления.

  10. Укажите настройки Telegram:
    1. BOT API Token — токен Telegram-бота.
    2. Chat ID — id чата в Telegram. 

      Чтобы узнать id чата, добавьте в чат бота @getmyid_bot.

  11. Нажмите Send Test для отправки тестового сообщения.
  12. Нажмите Save чтобы сохранить настройки.

Пример настроек

Slack

Для настройки канала уведомлений в Slack:

  1. Перейдите в AlertingNotification channels.
  2. Нажмите Add channel (New Channel).
  3. В поле Name укажите название уведомления. Например, Slack notify.
  4. В поле Type выберите тип уведомлений — Slack.
  5. Включите опцию Default (send on all alerts), чтобы использовать этот метод для всех уведомлений.
  6. Включите опцию Include image, чтобы добавить в уведомление изображение дашборда.

    Не рекомендуем использовать эту опцию, так как создание изображения создаёт большую нагрузку на докер-контейнер с Grafana.

  7. Включите опцию Disable Resolve Message, чтобы не получать сообщения об устранении проблемы, по которой отправлялись уведомления.
  8. Включите опцию Send Reminders, чтобы получать напоминания о созданном уведомлении и укажите периодичность отправки в параметре Send reminder every. Например, 15m — для отправки каждые 15 минут.

    Напоминания не могут отправляться чаще, чем сами уведомления.

  9. Укажите настройки Slack:
    1. Url — URL-адрес Slack для входящих вебхуков (webhooks). Подробнее см. в официальной документации Slack.

    2. Recipient — получатель сообщения. Введите название канала в формате #channel_name или имя пользователя в формате @username.
    3. Username — имя отправителя уведомления.
    4. Icon emoji — емодзи для иконки отправителя уведомления. Например, :exclamation:.
    5. Icon URL — URL с изображением для иконки отправителя уведомления.
    6. Mention Users — id пользователей Slack, на которых нужно сослаться в сообщении. Вы можете указать имена пользователей через запятую.
    7. Mention Groups — группы Slack, на которые нужно сослаться в сообщении.
    8. Mention Channel — кому из участников канала отправить уведомление:
      • Disabled — не отправлять уведомление;
      • Every active channel member — всем активным участникам;
      • Every channel member — всем участникам.
    9. Token — токен бота для использования API-функции Slack file.upload. Для работы функции укажите получателя сообщения в поле Recepient.
  10. Нажмите Send Test для отправки тестового сообщения.
  11. Нажмите Save чтобы сохранить настройки.

 

Пример настроек

Параметры уведомлений


Чтобы настроить правила для отправки уведомлений:

  1. Нажмите на заголовок графика → Edit.

  2. Нажмите Create alert.
  3. Укажите параметры уведомления:
    1. Name — произвольное имя уведомления.
    2. Evaluate every — частота уведомления. Например, 5m для уведомления каждые пять минут или 1h для уведомления каждый час.
    3. For — время, которое Grafana выжидает после наступления порогового значения параметра. Например, 15m для ожидания 15 минут.
    4. 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.

      Подробнее о формате условий см. в официальной документации Grafana.

    5. If no data or all values are null — статус уведомления в случае, если данные отсутствуют или имеют значения null. Возможные значения: Alerting, No Data, Keep Last State, OK;
    6. If execution error or timeout — статус уведомления в случае, если во время его выполнения возникла ошибка. Возможные значения: Alerting, Keep Last State.
  4. Выберите каналы уведомления в поле Send to.
  5. Введите текст уведомления в поле Message.
  6. Cохраните настройки: в верхнем правом меню нажмите значок → введите комментарий → кнопка Save.