- Alembic 005: таблицы irm_alerts и incident_alert_links - Модуль alerts: API/UI, Ack/Resolve, привязка к инциденту через alert_ids - Вебхук Grafana: одна транзакция ingress + irm_alerts; разбор payload в grafana_payload - По умолчанию инцидент из вебхука не создаётся (AUTO_INCIDENT_FROM_ALERT) - Документация IRM_GRAFANA_PARITY.md, обновления IRM.md и CHANGELOG Made-with: Cursor
3.6 KiB
3.6 KiB
Сравнение 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-задел |
Пока нет (зрелые следующие этапы)
| Функция Grafana IRM | Заметка |
|---|---|
| Teams с фильтрами и привязкой маршрутов | Нет сущности team; алерты не маршрутизируются по команде |
| 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.
Рекомендуемый поток
- Grafana → webhook → алерт (
firing). - Дежурный в Алертах: прочитал → Ack → разобрался → Resolve (или сразу Resolve).
- При необходимости Создать инцидент (документирование, задачи, эскалация вручную).
Так модель ближе к IRM, где алерт и инцидент разведены.