Files
onGuard24/docs/IRM.md
Alexandr 89b5983526 v1.5.0: IRM — инциденты, задачи, эскалации
- docs/IRM.md; Alembic 002: incidents, tasks, escalation_policies
- Модули incidents/tasks/escalations: API, UI, register_events(bus, pool)
- Авто-инцидент из alert.received; тесты test_irm_modules.py

Made-with: Cursor
2026-04-03 09:03:16 +03:00

3.7 KiB
Raw Permalink Blame History

IRM: функционал, назначение и реализация в onGuard24

Краткий ориентир для разработки (аналог облачного IRM: инциденты, задачи, эскалации, дежурства).

Матрица: что это, зачем, как у нас, что в Grafana

Область Назначение onGuard24 Grafana / внешнее
Инциденты Учёт сбоев, статусы (open → resolved), связь с алертом Модуль incidents: таблица incidents, API, UI, авто-создание из alert.received Contact point WebhookPOST /api/v1/ingress/grafana; правила алертинга в Grafana
Задачи Подзадачи по инциденту (разбор, фикс) Модуль tasks: таблица tasks, привязка к incident_id Опционально: ссылки из алерта; основная работа в onGuard24
Цепочки эскалаций Кого звать и в каком порядке при таймаутах Модуль escalations: таблица escalation_policies (JSON steps), API/UI заготовка Маршрутизация уведомлений может дублироваться в Grafana contact points; целевая логика — в onGuard24
Календарь дежурств Кто в смене, расписание Модуль schedules (развитие) Календари/команды — данные в onGuard24; уведомления — через интеграции
Контакты Люди, каналы Модуль contacts Получатели в Contact points (email, Slack, webhook)
Светофор / статус сервисов Агрегат здоровья Модуль statusboard Источник метрик — Prometheus/Loki; правила — Grafana
Группы алертов Группировка шумных алертов План: отдельная сущность / правила Alertmanager / группировка в Grafana Alerting
Интеграции Внешние системы integrations/, статус в /api/v1/status API-ключи Grafana, Vault, Forgejo в .env
Пользователи / права RBAC Пока нет SSO Grafana, сеть за reverse proxy
SLO Цели по доступности Вне скоупа v1 Grafana SLO / Mimir

Поток данных (алерт → инцидент)

  1. Grafana срабатывает правило → шлёт JSON на webhook onGuard24.
  2. Сервис пишет строку в ingress_events, публикует alert.received.
  3. Модуль incidents подписан на событие и создаёт запись в incidents с ссылкой на ingress_event_id.

Что настроить в Grafana (обязательно для приёма алертов)

  1. Alerting → Contact points → New — тип Webhook, URL: https://<ваш-хост>/api/v1/ingress/grafana, метод POST, Optional HTTP headers если задан GRAFANA_WEBHOOK_SECRET: X-OnGuard-Secret: <секрет>.
  2. Notification policies — направить нужные правила на этот contact point (или default policy).
  3. Убедиться, что сеть до onGuard24 доступна (firewall, TLS).

Подробнее: MODULES.md, DOMAIN.md.