- 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
3.7 KiB
3.7 KiB
IRM: функционал, назначение и реализация в onGuard24
Краткий ориентир для разработки (аналог облачного IRM: инциденты, задачи, эскалации, дежурства).
Матрица: что это, зачем, как у нас, что в Grafana
| Область | Назначение | onGuard24 | Grafana / внешнее |
|---|---|---|---|
| Инциденты | Учёт сбоев, статусы (open → resolved), связь с алертом | Модуль incidents: таблица incidents, API, UI, авто-создание из alert.received |
Contact point Webhook → POST /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 |
Поток данных (алерт → инцидент)
- Grafana срабатывает правило → шлёт JSON на webhook onGuard24.
- Сервис пишет строку в
ingress_events, публикуетalert.received. - Модуль incidents подписан на событие и создаёт запись в
incidentsс ссылкой наingress_event_id.
Что настроить в Grafana (обязательно для приёма алертов)
- Alerting → Contact points → New — тип Webhook, URL:
https://<ваш-хост>/api/v1/ingress/grafana, метод POST, Optional HTTP headers если заданGRAFANA_WEBHOOK_SECRET:X-OnGuard-Secret: <секрет>. - Notification policies — направить нужные правила на этот contact point (или default policy).
- Убедиться, что сеть до onGuard24 доступна (firewall, TLS).
Подробнее: MODULES.md, DOMAIN.md.