Алерты Prometheus и Grafana в телефон
Prometheus уже знает, что у вас горит, — не хватает только доставки: почта
теряется, а поднимать отдельный бот-шлюз ради push на телефон не хочется.
В Notifly есть нативный приёмник формата Alertmanager: один receiver в
alertmanager.yml — и алерты приходят push-уведомлениями с правильным
приоритетом, ссылками на Runbook и Silence и отдельным [RESOLVED].
Тот же приёмник понимает webhook contact point из Grafana Alerting.
Шаг 1. Канал и токен
Заголовок раздела «Шаг 1. Канал и токен»Создайте в админке канал, например prometheus,
и скопируйте его токен канала (префикс A). В настройках канала на вкладке
Отправка → Приём из систем мониторинга уже лежат готовые фрагменты
конфигурации с этим токеном.
Шаг 2. Receiver в Alertmanager
Заголовок раздела «Шаг 2. Receiver в Alertmanager»route: receiver: notifly group_by: ['alertname', 'instance'] group_wait: 30s group_interval: 5m repeat_interval: 4h
receivers: - name: notifly webhook_configs: - url: https://api.notifly.ru/integrations/alertmanager send_resolved: true max_alerts: 50 http_config: authorization: type: Bearer credentials: <токен канала>Перечитайте конфигурацию (SIGHUP или POST /-/reload). Токен лучше держать в
заголовке, а не в URL: адреса вебхуков попадают в логи Alertmanager.
Одно уведомление Alertmanager = одно сообщение Notifly: вся группа из
group_by приходит одним push-ем [FIRING:3] HighCPUUsage, а не сотней
отдельных. Восстановление — отдельным тихим сообщением [RESOLVED] ….
Шаг 3. Приоритеты из severity
Заголовок раздела «Шаг 3. Приоритеты из severity»Приоритет берётся из метки severity: critical/page → 9, error/high → 8,
warning → 6, info → 3. Если шкала у вас своя — поставьте в правиле метку
notifly_priority:
groups: - name: node rules: - alert: DiskAlmostFull expr: node_filesystem_avail_bytes / node_filesystem_size_bytes < 0.05 for: 10m labels: severity: warning notifly_priority: '8' # громче обычного warning annotations: summary: 'На {{ $labels.instance }} осталось меньше 5% диска' runbook_url: https://wiki.example.com/runbooks/diskПолная таблица соответствий — в документации приёмника.
Grafana Alerting
Заголовок раздела «Grafana Alerting»Alerting → Contact points → Add contact point, интеграция Webhook:
- URL —
https://api.notifly.ru/integrations/alertmanager; - Optional Webhook settings → Authorization Header: схема
Bearer, credentials — токен канала.
Тап по уведомлению открывает панель Grafana, с которой пришёл алерт.
Проверка без Prometheus
Заголовок раздела «Проверка без Prometheus»curl -X POST "https://api.notifly.ru/integrations/alertmanager" \ -H "Authorization: Bearer $NOTIFLY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"version":"4","status":"firing","alerts":[{"status":"firing", "labels":{"alertname":"TestAlert","severity":"warning","instance":"host-1"}, "annotations":{"summary":"Проверка приёма"}}]}'# {"created":1,"ids":[...]}Чтобы ночью будил только critical
Заголовок раздела «Чтобы ночью будил только critical»- Эскалация канала: если push с
criticalне прочитан за 5 минут — SMS или звонок, за 15 минут — PagerDuty или Opsgenie. Отметка «Прочитано» (в приложении или прямо из уведомления Android) останавливает досылку. - Тихие часы: ночью эскалируется только то, что не
ниже порога (по умолчанию 8) —
criticalпробивает тишину,warningждёт утренней сводки. - Окна обслуживания: алерты во время плановых работ приходят беззвучно и не эскалируются — см. «Плановые работы без ложных алертов».
- Без своего шлюза: никаких alertmanager-telegram-ботов и прокси — только receiver в конфиге.
- Шум под контролем: группировку задаёт сам Alertmanager, а Notifly не дробит группу на отдельные push-и.
- Контекст в кармане: summary, метки и ссылки Source / Runbook / Silence прямо в уведомлении.
Что улучшить дальше
Заголовок раздела «Что улучшить дальше»- Разнести алерты по разным каналам (
prod,staging,db) — отдельный receiver с токеном своего канала для каждой ветки маршрута. - Добавить heartbeat на сам мониторинг: вечно
горящее правило
Watchdog(expr: vector(1)) отправляйте отдельным маршрутом сrepeat_intervalкороче интервала heartbeat-а в receiver с URLhttps://api.notifly.ru/heartbeat/ping/H…. Замолчал Prometheus или Alertmanager — пинги прекратятся, и Notifly пришлёт алерт.