# Сравнение onGuard24 с Grafana IRM (Alerting / Incident) Grafana Cloud / IRM даёт **группы алертов**, **Acknowledge / Resolve**, **инциденты**, **команды (teams)**, **эскалационные цепочки**, **расписания дежурств**. Ниже — что уже есть в onGuard24 и что планировать отдельно. ## Уже есть (после разделения алерт / инцидент) | Grafana IRM (идея) | onGuard24 | |--------------------|-----------| | Входящие уведомления от интеграции | Webhook `POST /api/v1/ingress/grafana` → `ingress_events` + **`irm_alerts`** | | Статусы firing / acknowledged / resolved | Поле **`irm_alerts.status`**, UI **Алерты**, API `PATCH …/acknowledge`, `…/resolve` | | Просмотр labels / сырого payload | Карточка алерта в UI, JSON вебхука | | Инцидент как отдельная сущность | **`incidents`**, создание вручную или кнопка «Создать инцидент» на алерте; связь **`incident_alert_links`** | | Эскалации (JSON-шаги) | Модуль **Эскалации** (`escalation_policies`) — без автодвижка по таймерам | | Контакты / каналы | Модуль **Контакты** | | Расписания (заглушка) | **Календарь дежурств** — UI-задел | | **Teams** (команда по лейблам) | Таблицы **`teams`**, **`team_label_rules`**, поле **`irm_alerts.team_id`**; вебхук подбирает команду по первому совпадению правила (priority); UI/API **Команды**, фильтр по команде в **Алертах** | ## Пока нет (зрелые следующие этапы) | Функция Grafana IRM | Заметка | |---------------------|---------| | **Teams** как маршрутизация уведомлений (кому слать из коробки) | Команда назначена на алерт; **цепочки уведомлений по team** — впереди (связка с escalations / contact points) | | **Alert groups** (несколько алертов в одной группе с общим ID) | Сейчас **одна строка `irm_alerts` на один webhook**; группировка fingerprint / rule_uid — отдельная задача | | **Silence / Restart** из UI | Статус `silenced` в БД зарезервирован, логика не подключена | | **Эскалация по таймеру** (wait 15m → notify next) | Политики есть, **фонового исполнителя** нет | | **On-call из расписания** в цепочке | Нет связи schedules → escalation executor | | **Пользователи / «Mine» / назначение** | Нет учётных записей onGuard24 для дежурного; `acknowledged_by` — свободный текст (можно расширить) | | **Интеграция обратно в Grafana** (resolve в Grafana из IRM) | Не делалось | ## Переменные окружения - **`AUTO_INCIDENT_FROM_ALERT`** — если `1` / `true`, сохраняется старое поведение: **каждый** вебхук ещё и создаёт строку в **`incidents`**. По умолчанию **выключено**: только **`irm_alerts`**. ## Рекомендуемый поток 1. Grafana → webhook → **алерт** (`firing`). 2. Дежурный в **Алертах**: прочитал → **Ack** → разобрался → **Resolve** (или сразу Resolve). 3. При необходимости **Создать инцидент** (документирование, задачи, эскалация вручную). Так модель ближе к IRM, где **алерт** и **инцидент** разведены.