Система алертинга в Grafana превращает пассивные метрики в активные предупреждения. Это руководство проведет вас через полную настройку системы с нуля в 2026 году. Вы научитесь создавать правила, настраивать политики уведомлений и подключать Telegram, Slack и Email, чтобы построить надежную систему мониторинга, которая предупреждает о проблемах до того, как они повлияют на пользователей.
Мы разберем архитектуру Grafana Alerting, чтобы вы понимали, как связаны правила, политики и точки контакта. Вы получите готовые, копируемые конфигурации, проверенные на актуальных версиях Grafana. Инструкции ориентированы на практическое применение в production-среде с минимизацией рисков.
Подготовка инфраструктуры: без этого алертинг не заработает
Алертинг в Grafana зависит от корректно настроенных источников данных. Если источник данных недоступен, правила будут показывать состояние "No Data", и система не сработает. Этап подготовки предотвращает типичные ошибки соединения и проблемы с TLS.
Проверьте каждый источник данных, который будет использоваться в правилах алертинга. Убедитесь, что метрики поступают стабильно и без задержек. Настройки сети и безопасности должны быть согласованы между Grafana и целевыми системами.
Проверка источника данных: почему алерт видит 'No Data'?
Самая частая причина состояния "No Data" - ошибки подключения к источнику данных. Например, при настройке Jaeger как источника данных для трейсов можно столкнуться с ошибкой "404 Not Found". Согласно документации Grafana, пересмотренной в марте 2026 года, эта ошибка часто возникает из-за указания лишнего пути в URL.
Некорректный URL: http://jaeger-host:16686/api/traces. Корректный URL: http://jaeger-host:16686.
Используйте этот чек-лист для диагностики любого источника данных:
- Запущен ли сервис? Проверьте, что служба (Prometheus, Jaeger, база данных) работает на целевом хосте.
- Корректен ли URL и порт? Убедитесь, что адрес и порт в настройках источника данных в Grafana совпадают с реальными настройками сервиса. Избегайте лишних путей в URL.
- Открыты ли порты в firewall? Проверьте правила межсетевого экрана на хосте с источником данных и на хосте с Grafana. Распространенная ошибка - "Connection refused".
- Работает ли reverse proxy? Если доступ к источнику данных идет через обратный прокси (Nginx, Apache), проверьте его конфигурацию и логи.
Безопасное подключение: TLS, сертификаты и Grafana Cloud
Для защищенного соединения, особенно при использовании Grafana Cloud, требуется корректная настройка TLS. Ошибки сертификатов блокируют получение данных.
В настройках источника данных в Grafana есть поле "CA certificate". Укажите в нем сертификат вашего приватного центра сертификации, если вы используете внутренние TLS-сертификаты. Для Grafana Cloud, подключающейся к приватному Jaeger через Private data source connect, это поле обязательно.
Опция Skip TLS Verify предназначена только для тестирования в изолированных средах. Не используйте ее в production, так как это отключает проверку подлинности сервера и делает соединение уязвимым.
Перед созданием правил алертинга убедитесь, что на дашбордах Grafana данные из источника отображаются без ошибок и задержек. Это база для работы всей системы.
Архитектура Grafana Alerting: как устроена система оповещений
Понимание архитектуры помогает осознанно настраивать систему. Grafana Alerting состоит из связанных компонентов, которые преобразуют условие в метрике в уведомление в нужном канале.
Основной поток: Alert Rules (Правила) → Evaluation (Оценка) → States (Состояния) → Notification Policies (Политики) → Contact Points (Точки контакта).
Alert Rules и Evaluation: от метрики до состояния 'Alerting'
Alert Rule - это ядро системы. Оно определяет, за какой метрикой следить и при каких условиях генерировать алерт.
- Запрос (Query): Выражение на PromQL, SQL или встроенном языке запросов источника данных, которое возвращает числовое значение или временной ряд.
- Условие (Condition): Логическое правило, например, "значение больше 80" или "последнее значение равно 0".
- Интервал оценки (Evaluate every): Как часто Grafana проверяет правило. Например, каждые 30 секунд.
Процесс Evaluation запускается по расписанию. Система вычисляет запрос, проверяет условие и присваивает правилу одно из состояний:
- OK: Условие не выполнено. Все в порядке.
- Pending: Условие выполнено, но длится меньше времени, указанного в параметре "For". Это состояние предотвращает ложные срабатывания при кратковременных скачках.
- Alerting: Условие выполнено дольше времени, указанного в "For". Правило активировано, система передает алерт в модуль уведомлений.
- No Data: Запрос не вернул данных. Это состояние тоже требует обработки, так как может означать падение экспортера метрик.
Notification Policies и Contact Points: маршрутизация уведомлений
Когда правило переходит в состояние "Alerting", в дело вступают политики уведомлений. Они решают, куда отправить оповещение.
- Notification Policies: Набор правил маршрутизации. Политика сопоставляет алерты по меткам (labels) и направляет их на определенную контактную точку. Вы можете создать дерево политик: от общей (default) до специфичных для команды или уровня критичности.
- Contact Points: Конечные каналы для отправки уведомлений. Это интеграции с Telegram, Slack, Email, Webhook и другими системами.
Ключевая функция политик - группировка (group by). Она объединяет несколько связанных алертов в одно сообщение. Например, если на одном инстансе одновременно сработали алерты на высокую CPU и память, вы получите одно уведомление, а не два. Это снижает информационный шум.
Если вы сомневаетесь в выборе между встроенным алертингом Grafana и Prometheus Alertmanager, вам поможет практическое руководство по выбору системы алертинга. В нем разбираются архитектурные отличия и конкретные сценарии использования.
Практика: создаем первое правило алерта (Alert Rule)
Перейдем к созданию правила для мониторинга загрузки CPU. Это практический пример, который можно адаптировать для своей инфраструктуры.
В интерфейсе Grafana перейдите в раздел "Alerting" → "Alert rules" и нажмите "Create alert rule".
Пишем запрос и задаем условия: пример для мониторинга сервера
Настройте правило по этому образцу:
- Название: HighCPUUsage
- Запрос (PromQL):
100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[2m])) * 100). Этот запрос возвращает среднюю загрузку CPU в процентах по каждому инстансу. - Условие: Выберите функцию
last()от запроса A и операторAboveзначения80. - Интервалы: Установите "Evaluate every" =
30s, "For" =2m. Это значит: проверять каждые 30 секунд, и переводить в "Alerting", если условие выше 80% держится 2 минуты (4 цикла оценки). Состояние "Pending" будет длиться эти 2 минуты.
Добавьте метки (Labels) для лучшей маршрутизации:
severity: warning
team: infra
instance: "{{ $labels.instance }}"
Добавьте аннотации (Annotations) для информативного уведомления:
summary: "Высокая загрузка CPU на {{ $labels.instance }}"
description: "Средняя загрузка CPU составляет {{ $values.A }}%. Проверьте процессы на инстансе."
runbook_url: "https://ваш-wiki/runbooks/high-cpu"
Обработка состояний No Data и Error: чтобы система была надежной
Отсутствие данных - это тоже инцидент. Создайте отдельное правило для отслеживания состояния "No Data" от ключевых экспортеров.
- Запрос: Используйте функцию
last()от вашей основной метрики. - Условие: Выберите специальное состояние "No Data" и настройте период, например, "For" =
5m. Это позволит избежать ложных срабатываний при кратковременных сетевых проблемах. - Метки: Присвойте метку
severity: critical, так как отсутствие данных часто критично.
Для обработки состояния "Error" в настройках правила есть соответствующая опция. Настройте ее аналогично, чтобы получать уведомления об ошибках выполнения запроса.
Настройка уведомлений в Telegram, Slack и по Email (Contact Points)
Точки контакта определяют, как и куда придет уведомление. Настроим три самых популярных канала.
Telegram Bot: быстрое подключение и полезный шаблон сообщения
Telegram - самый быстрый способ получить персональное оповещение.
- Создайте бота через @BotFather в Telegram. Получите токен.
- Начните диалог с созданным ботом.
- Получите Chat ID: отправьте любое сообщение боту, затем выполните запрос
https://api.telegram.org/bot<ВАШ_ТОКЕН>/getUpdates. В ответе JSON найдитеchat.id. - В Grafana: "Alerting" → "Contact points" → "Add contact point".
- Выберите тип "Telegram". Вставьте URL:
https://api.telegram.org/bot<ВАШ_ТОКЕН>/sendMessageи укажите "Chat ID".
Используйте этот шаблон сообщения для читаемости:
🚨 *{{ .Status | toUpper }}: {{ .Labels.alertname }}*
*Инстанс:* {{ .Labels.instance }}
*Серьезность:* {{ .Labels.severity }}
{{ .Annotations.summary }}
{{ .Annotations.description }}
[Дашборд]({{ .GeneratorURL }})
Slack Webhook и Email: для командной работы и критических инцидентов
Slack: Идеален для командных каналов.
- В Slack: зайдите в "Settings & administration" → "Manage apps" → "Incoming Webhooks".
- Добавьте новый вебхук для нужного канала и скопируйте URL.
- В Grafana создайте Contact Point типа "Slack". Вставьте URL вебхука.
Email: Канал для критических алертов и архивных уведомлений.
- В Grafana: "Alerting" → "Contact points" → "Add contact point" → "Email".
- Заполните настройки SMTP: адрес сервера (например,
smtp.gmail.com:587), пользователь, пароль (часто требуется пароль приложения). - Укажите адреса получателей. Задайте понятного отправителя (From), например,
grafana-alerts@ваша-компания.com.
Создайте отдельную политику уведомлений, которая будет отправлять все алерты с меткой severity: critical на Email, обеспечивая гарантированную доставку. Для создания более сложных шаблонов сообщений и управления метками изучите руководство по продвинутым алертам в Grafana.
Сборка системы: политики уведомлений, группировка и тестирование
Теперь соберем компоненты в целостную систему, которая отправляет правильные уведомления правильным людям.
Создание дерева политик: направляем алерты нужным людям
Политики уведомлений работают по принципу специфичности. Grafana проверяет политики сверху вниз и применяет первую, условия которой совпали.
Пример дерева политик:
- Критические алерты в Telegram и Email:
- Matchers:
severity=critical - Contact Point: Ваш Telegram и Email.
- Группировка:
group_by: [alertname, instance]
- Matchers:
- Алерты команды БД в Slack:
- Matchers:
team=database - Contact Point: Slack-канал DBA.
- Matchers:
- Алерты команды фронтенд в Slack:
- Matchers:
team=frontend - Contact Point: Slack-канал фронтенд-разработчиков.
- Matchers:
- Default policy (все остальное):
- Matchers: (пусто - совпадает со всем)
- Contact Point: Общий Email-лист для инцидентов.
- Группировка:
group_by: [...]- настройте по необходимости.
Группировка по alertname и instance объединяет все срабатывания одного правила для одного инстанса в одно уведомление, даже если они произошли в разное время в пределах интервала группировки.
Тестирование и запуск в production: чек-лист перед включением
Перед тем как считать систему готовой к работе, выполните этот чек-лист:
- Источники данных: Проверены, данные поступают без ошибок.
- Тестовое правило: Создано и протестировано на тестовом инстансе. Используйте искусственную нагрузку (например,
stress-ng --cpu 4 --timeout 3m), чтобы вызвать срабатывание. - Уведомления: Приходят во все настроенные каналы (Telegram, Slack, Email). Сообщения читаемы и содержат всю нужную информацию.
- Обработка No Data: Правило для состояния "No Data" создано и протестировано (можно временно остановить экспортер метрик).
- Группировка: Настроена и работает - несколько алертов объединяются в одно сообщение.
Рекомендация для запуска: начните с более широких интервалов оценки (например, 1m) и более высоких порогов срабатывания. По мере наблюдения за поведением системы в production можно ужесточать параметры. Это снизит риск "алертного шторма" в первый же день.
После настройки базового алертинга вы можете углубиться в тонкости настройки связки Prometheus и Alertmanager. В практическом руководстве по настройке алертинга в Prometheus вы найдете готовые конфигурации правил и механизмы подавления ложных срабатываний.
Готовая система Grafana Alerting - это надежный страж вашей инфраструктуры. Она автоматически отслеживает ключевые метрики, фильтрует шум и оперативно доставляет предупреждения туда, где на них отреагируют. Следуя этому руководству, вы развернете рабочую конфигурацию, которую затем сможете развивать под нужды вашего проекта.