# 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 | ## Поток данных (алерт → инцидент) 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](MODULES.md), [DOMAIN.md](DOMAIN.md).