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

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-адрес.
email SMTP. Обязательно: SMTP сервер, e-mail получателя. Gmail требует авторизацию.
telegram Telegram-бот. Токен бота (от @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.
  • Подробнее об архитектуре — Архитектура сервисов мониторинга.