- Alembic 006: teams, team_label_rules, irm_alerts.team_id - Вебхук: сопоставление команды по правилам лейблов (priority) - API/UI Команды; алерты: JOIN team, фильтр team_id - Тесты test_team_match, test_teams_api; обновлён test_root_ui Made-with: Cursor
4.0 KiB
4.0 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-задел |
| 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.
Рекомендуемый поток
- Grafana → webhook → алерт (
firing). - Дежурный в Алертах: прочитал → Ack → разобрался → Resolve (или сразу Resolve).
- При необходимости Создать инцидент (документирование, задачи, эскалация вручную).
Так модель ближе к IRM, где алерт и инцидент разведены.