Как настроить алертинг по метрикам

vmalert, Alertmanager, группы правил, каналы уведомлений.

Обзор

Алертинг в платформе «Штурвал» реализован на основе Victoria Metrics AlertManager и AlertManagerConfig. Используются компоненты:

  • vmalert (VM Alert) — оценка правил алертинга на основе метрик;
  • Alertmanager — маршрутизация и доставка уведомлений.

По умолчанию оповещения отображаются в интерфейсе платформы. Для отправки в Email, Telegram, Webhook и др. настраиваются получатели и маршруты.


Условия работы алертинга

Клиентский кластер

Алертинг доступен из интерфейса, если включены:

  • в кластере управления: shturval-monitoring и shturval-metrics-collector;
  • в клиентском кластере: shturval-metrics-collector.

Кластер управления

Алертинг настраивается, если включены:

  • shturval-monitoring в кластере управления;
  • shturval-metrics-collector в кластере управления.

Просмотр оповещений

Страница Оповещения → Просмотр оповещений (или блок «Алертинг» на дашборде кластера).

Интерфейс оповещений

Оповещения

Оповещения разбиты по вкладкам:

СтатусОписание
FiringАлерт срабатывает — актуальное нарушение условия или событие.
PendingАлерт не срабатывает, но возможен в будущем (временные изменения).
InactiveАлерт не срабатывает длительное время или отключён администратором.

На каждой вкладке алерты сгруппированы по группам правил. В группе: выражение, описание условий, счётчик событий, список алертов.

Состав алерта: идентификатор, название, дата и время срабатывания, описание, выражение, критичность.


Предустановленные правила

В кластерах по умолчанию установлены правила оповещений (VMRule с префиксом system). Перечень доступен:

  • на странице Правила оповещения кластера;
  • в Администрирование → Кастомные ресурсы → API-группа operator.victoriametrics.com → VMRule в неймспейсе с именем кластера.

Предустановленные правила охватывают: Alertmanager, Velero, Victoria Metrics, Kubernetes (узлы, поды, PVC, сервисы), Prometheus и др.


Группы правил оповещения

Для кастомных правил создаётся группа правил.

  1. Правила оповещения → Добавить группу правил оповещения.
  2. Заполните:
    • Имя группы (обязательно);
    • Тип выражений — Prometheus или Graphite (по умолчанию Prometheus);
    • Тип правил — оповещения (alert) или запись (record);
    • Интервал оценки — как часто оцениваются правила;
    • Параллелизм — сколько правил выполняются одновременно в группе.
Группы правил оповещения

Группы правил

После создания имя группы, тип выражений и тип правил неизменяемы. Удаление группы приводит к каскадному удалению правил.


Правила в группе

В группе создаются правила: + в списке правил.

Правила оповещения (alert)

ПолеОписание
НазваниеОбязательное, неизменяемое после создания.
Время ожиданияВременной лаг перед отправкой — система ждёт, сохранится ли состояние.
КритичностьЗаписывается в лейбл severity. Уровни: Emergency, Alert, Critical, Error, Warning, Notice, Info, Debug.
Ссылка на решениеАннотация runbook_url.
Короткое описаниеАннотация summary.
ОписаниеАннотация description.
ВыражениеОбязательное. PromQL-выражение.
Лейблы, аннотацииДополнительные метаданные. Как добавить и изменить — в разделе Лейблы и аннотации.

Аннотации с ключами description, summary, runbook_url перезаписываются значениями из полей правила.

Пример правила — срабатывание при создании нового Pod:

sum by(namespace, pod) (increase(kube_pod_created[5m])) > 0

С описаниями: summary: "New pod created in {{ $labels.namespace }}", description: "Pod {{ $labels.pod }} was created in namespace {{ $labels.namespace }}".

Правила записи (record)

Предварительно вычисляют выражения и сохраняют результат как временные ряды. Полезно для дашбордов.

Поля: Название (обязательное), Выражение (обязательное), Лейблы.


Получатели (receivers)

По умолчанию оповещения маршрутизируются в Victoria Metrics (отображаются в интерфейсе). Получатель devnull (тип default) создаётся по умолчанию и блокирует отправку; его нельзя удалить или изменить.

Для дополнительной доставки создаются получатели в разделе Оповещения → Получатели:

Получатели оповещений

Получатели

ТипНазначение
webhookОтправка в сервисы агрегации, service-desk, task-manager. Обязательно: URL-адрес.
emailSMTP. Обязательно: SMTP сервер, e-mail получателя. Gmail требует авторизацию.
telegramTelegram-бот. Токен бота (от @BotFather), идентификатор чата.

Webhook: URL-адрес, опционально — авторизация (Username/Password или Bearer-токен), TLS, «Отправлять решённые», макс. количество алертов в сообщении.

Email: SMTP сервер, e-mail получателя, опционально — авторизация (PLAIN, LOGIN, CRAM-MD5), шаблон HTML, «Отправлять решённые». Порты 25, 587, 465 должны быть доступны на стороне SMTP.

Telegram: токен бота, идентификатор чата (узнать: https://t.me/userinfobot), формат сообщения (Markdown, HTML), шаблон, «Отправлять решённые», «Отключить уведомления».


Маршруты (routes)

Маршруты задают, куда и при каких условиях отправлять оповещения. Сначала настраивается корневой маршрут, затем подмаршруты.

Параметры маршрута:

ПараметрОписание
ПолучательВыбор из списка получателей.
Время ожидания до первичной отправкиЛаг для отбрасывания ложных срабатываний.
Время ожидания до обновлённых оповещенийЛаг до отправки изменений по ранее отправленному оповещению.
Время ожидания до повторной отправкиЛаг до повторной отправки.
Совпадающие лейблыЛейблы для маршрутизации (например, severity, alertname).
Ключи для группировкиПо каким лейблам группировать оповещения.
Интервалы блокировкиКогда приостанавливать отправку (выходные, ночь и т.п.).

Подмаршруты задают более детальную маршрутизацию. Можно указать, продолжать ли обработку в других подмаршрутах.


Временные интервалы (time_intervals)

Интервалы, когда оповещения не отправляются (заглушение).

Настраиваются: месяцы, дни месяца, дни недели, часовые диапазоны. Интервалы указываются в маршрутах.

Если в конфигурации не задано ни одного значения — равнозначно «все значения». Например, выбраны только дни недели без месяцев — эти дни применяются в каждом месяце.


Блокировка оповещений (inhibit)

Критерии, при которых оповещения блокируются (не отправляются).

ПараметрОписание
Ключи лейблов (equal)Ключи оповещений: alertname, severity, namespace и др.
target_matchersЦелевые лейблы — при совпадении оповещения отправляются.
source_matchersОповещения с этими лейблами не отправляются, пока есть нерешённые оповещения с target_matchers.

Пример: блокировать Warning, если есть Critical с тем же alertname и namespace.


Порядок настройки

  1. Убедитесь, что работают shturval-monitoring и shturval-metrics-collector.
  2. При необходимости создайте группу правил и добавьте правила (alert или record).
  3. Создайте получателей (Email, Telegram, Webhook).
  4. Настройте маршруты — укажите получателя, лейблы, интервалы блокировки.
  5. При необходимости задайте временные интервалы и блокировку оповещений.

Дополнительно

  • Правила можно добавлять через ShturvalServicePatch или конфигурацию сервиса shturval-metrics-collector.
  • Victoria Metrics Operator поддерживает импорт AlertmanagerConfig от Prometheus Operator.
  • Подробнее об архитектуре — Архитектура сервисов мониторинга.