Диагностика и формат уведомлений

Жизненный цикл алерта (pending/firing/resolved), чек-лист «почему уведомление не пришло» и формат уведомлений Proto Observability Platform — содержимое email и Telegram, payload вебхука.

На этой странице:

Жизненный цикл алерта

Условие правила вычисляется постоянно. Алерт проходит через состояния:

СостояниеЧто значитУведомление
pendingУсловие выражения выполняется, но ещё не прошло время из поля for.Не отправляется
firingУсловие держится дольше for — алерт считается сработавшим.Отправляется по политикам
resolvedУсловие перестало выполняться.Отправляется, если у канала включено «Отправлять завершённые?» (send_resolved)

Поле keep_firing_for удерживает алерт в состоянии firing ещё заданное время после того, как условие перестало выполняться, — это откладывает разрешение и гасит «дребезг».

Почему уведомление не пришло

Проверьте по порядку:

  1. Нажата ли «Применить». Правила вступают в силу за ~1 минуту, политики — почти сразу.
  2. Правило включено (статус включено, а не отключено).
  3. Алерт уже в firing, а не pending. Условие должно продержаться время из поля for. Текущее состояние видно в Алерты > Активные.
  4. Есть политика с подходящими матчерами. Алерт маршрутизируется только если его лейблы совпадают с матчерами какой-либо политики (например, severity = WARNING). Без совпавшей политики уведомление не отправляется.
  5. Канал привязан к политике, и его реквизиты верны (токен бота и Telegram ID, SMTP-сервер, URL вебхука).
  6. Для уведомлений о разрешении проверьте «Отправлять завершённые?» (send_resolved) у канала — для email он по умолчанию выключен.
  7. Нет активной тишины (silence), заглушающей этот алерт (см. Просмотр алертов → Активные).

Подробнее о создании каналов, правил и политик — Настройка оповещений.

Что приходит в уведомление

Текст уведомления формируется из лейблов и аннотаций алерта. Зарезервированные аннотации (summary, dashboard, dashboardHost, dashboardContainer) задают заголовок и ссылки на дашборды — см. Метрики и выражения → Аннотации со ссылками на дашборды. Отправку уведомлений о разрешении (resolved) включает поле «Отправлять завершённые?» у канала.

Telegram

Сообщение в формате HTML:

  • заголовок: 🔥 + описание (summary) и эмодзи критичности (🟡 для WARNING, 🔴 для CRITICAL); для разрешённого алерта — ✅ Устранено: …;
  • Сервис / Хост / Контейнер — ссылками на соответствующие дашборды, если заданы аннотации dashboard*;
  • блоки Лейблы и Аннотации;
  • Начало, а для разрешённого алерта — Конец и Длительность.

По умолчанию для Telegram-каналов уведомления о разрешении включены.

Email

  • Тема: эмодзи статуса + имя алерта + число сработавших + критичность (и при наличии — сервис/хост/контейнер);
  • Тело (HTML): цветной баннер «Активно алертов: N» (или «Устранено алертов: N»), кнопки перехода к дашбордам и к разделам Активные/История, затем посекционно каждый алерт с лейблами, аннотациями, временем начала/конца и длительностью.

По умолчанию для email-каналов уведомления о разрешении выключены (включаются полем «Отправлять завершённые?»).

Webhook

На указанный URL отправляется HTTP POST со стандартным payload Alertmanager (версия 4). Используйте его для интеграции со сторонними системами (ITSM, чат-боты, автоматизация). Структура:

{
  "version": "4",
  "groupKey": "{}:{alertname=\"Высокая доля ошибок сервиса\"}",
  "truncatedAlerts": 0,
  "status": "firing",
  "receiver": "Webhook интеграции",
  "groupLabels": { "alertname": "Высокая доля ошибок сервиса" },
  "commonLabels": {
    "alertname": "Высокая доля ошибок сервиса",
    "severity": "WARNING",
    "service": "credit-bureau-service"
  },
  "commonAnnotations": { "summary": "Доля ошибок сервиса выше 5% в течение 5 минут" },
  "externalURL": "https://<адрес-вашей-платформы>",
  "alerts": [
    {
      "status": "firing",
      "labels": {
        "alertname": "Высокая доля ошибок сервиса",
        "severity": "WARNING",
        "service": "credit-bureau-service",
        "service_id": "..."
      },
      "annotations": { "summary": "Доля ошибок сервиса выше 5% в течение 5 минут" },
      "startsAt": "2026-06-10T12:00:00.000Z",
      "endsAt": "0001-01-01T00:00:00Z",
      "generatorURL": "http://.../vmalert/...",
      "fingerprint": "a1b2c3d4e5f6a7b8"
    }
  ]
}

Поля каждого элемента alerts[]: status (firing/resolved), labels, annotations, startsAt, endsAt (для firing — нулевая дата), generatorURL, fingerprint. Для разрешённого алерта status становится resolved, а endsAt заполняется (при включённом «Отправлять завершённые?»).