Есть три основных варианта настроить алертинг на базе метрик из Prometheus/VictoriaMetrics:

  1. Alertmanager — решение от Prometheus
  2. Grafana Alerting — встроенная система в Grafana
  3. VictoriaMetrics Alert (vmalert) — легковесная альтернатива

Каждый имеет свои плюсы, а в целом можно использовать любой. В конце концов, важно не то, каким инструментом ты делаешь алерты, а то, как быстро ты реагируешь на инциденты.

Варианты

Alertmanager — классическое решение от Prometheus

Alertmanager — это официальный компонент Prometheus, специально созданный для обработки алертов. Он получает алерты от Prometheus сервера и отвечает за их группировку, подавление дублирующих уведомлений и доставку через различные каналы.

Алерт в терминах Prometheus/VictoriaMetrics - это определенный query, на значения которого можно повесить обработку. Или записать обратно в хранилище.

Ключевые возможности:

  • Группировка алертов по меткам (labels)
  • Интеграция с Slack, Telegram, email, webhook'и
  • Роутинг алертов в зависимости от условий
  • Подавление повторных уведомлений (inhibition)
  • Шаблонизация сообщений
  • Возможность описывать алерты в YAML (т.е. хранить в репозитории)

Alertmanager работает как отдельный сервис и принимает алерты от одного или нескольких Prometheus серверов. Это классическая архитектура, которая используется в большинстве промышленных инсталляций.

Grafana Alerting — альтернатива

Grafana с версии 8.0 получила встроенную систему алертов (они купили полу-готовое решение), которая может работать не только с Prometheus, но и с множеством других источников данных. Это решение "all-in-one", где алерты настраиваются прямо в интерфейсе дашбордов.

Преимущества Grafana Alerting:

  • Единый интерфейс для дашбордов и алертов — не нужно переключаться между разными инструментами
  • Визуальный конфигуратор правил с возможностью предпросмотра результатов
  • Встроенные интеграции для отправки уведомлений: Telegram, PagerDuty, Slack, email и множество других
  • Возможность тестирования алертов прямо в UI без влияния на продакшен
  • Поддержка множественных источников данных — можешь делать алерты по логам, метрикам из БД, трейсам

Недостатки:
- Настраивается через UI, что усложняет версионирование и автоматическое развертывание
- Сложнее масштабировать на множественные кластеры
- Больше потребляет ресурсов по сравнению с Alertmanager

VictoriaMetrics Alert (vmalert) — специализированное решение

Для пользователей VictoriaMetrics существует vmalert — легковесный компонент алертинга, который может работать как с VictoriaMetrics, так и с обычным Prometheus. Он совместим с правилами Prometheus и может отправлять алерты в Alertmanager.

Особенности vmalert:

  • Низкое потребление ресурсов, как и в целом самой VictoriaMetrics — идеально для high-load систем
  • Полная совместимость с Prometheus alert rules (можно перенести правила из Prometheus в vmalert, обратно — не всегда)
  • Возможность записи метрик обратно в VictoriaMetrics для дальнейшего анализа
  • Встроенная поддержка HA режима для критически важных систем
  • Поддержка recording rules для предвычисления сложных метрик

Научись быстро диагностировать проблемы в продакшене

Настроить алерты — это только половина дела. Важно уметь быстро разбираться с инцидентами, когда они случаются. Попробуй демо-тренировку и прочувствуй, как проходит диагностика реального сбоя в безопасной среде.

Пример алерта для Alertmanager

# Пример правила для Prometheus
groups:
  - name: basic-alerts
    rules:
      - alert: HighErrorRate
        expr: rate(http_requests_total{status=~"5.."}[5m]) > 0.1
        for: 2m
        labels:
          severity: critical
        annotations:
          summary: "High error rate detected"
          description: "Error rate is {{ $value }} errors per second"

Алерты можешь базировать на золотых сигналах мониторинга: задержке, ошибках, трафике и насыщении. Это покроет 80% потребностей в алертинге для большинства сервисов.

FAQ

Что лучше: Alertmanager или Grafana Alerting?

Выбор зависит от твоей архитектуры:

Используй Alertmanager, если:

  • Тебе важно иметь версионирование алертов (запросов в них) и хранить в Git'е
  • Тебе важно обновлять алерты из 1 места
  • У тебя в основном используются Prometheus-like решения.

Используй Grafana Alerting, если:

  • Нужен единый UI для дашбордов и алертов
  • Есть множественные datasources (не только Prometheus)
  • Настраивают алерты не DevOps, а например, QA

Сколько алертов должно быть в системе?

Нет универсального числа, но есть принципы:

  • Лучше меньше, да лучше — каждый алерт должен требовать действий. Учитывай критичность и другие параметры инцидентов.
  • Если алерт срабатывает, но не требует немедленных действий — это кандидат на удаление или понижение приоритета.
  • До 5-10 алертов, а лучше 2-3 алертов за рабочий день, которые требуют действий — это терпимое значение.
  • Помни про alert fatigue: слишком много шумных уведомлений приводят к игнорированию даже критических проблем.

Как избежать alert fatigue?

Alert fatigue — это когда команда перестает реагировать на алерты из-за их избытка. Способы борьбы:

  • Настраивай алерты только на симптомы, а не на причины
  • Используй группировку по времени и меткам
  • Настрой escalation — критические алерты должны "шуметь" громче
  • Регулярно пересматривай и удаляй неактуальные правила
  • Используй разные каналы для разного уровня критичности