35 lines
2.1 KiB
Markdown
35 lines
2.1 KiB
Markdown
|
|
# Доменная модель onGuard24
|
|||
|
|
|
|||
|
|
Версия **1.1.0** вводит явные сущности и задел под **события** между модулями. Таблицы БД для инцидентов пока не добавлены — см. [Alembic](../alembic/versions/).
|
|||
|
|
|
|||
|
|
## Сущности (код: `onguard24/domain/entities.py`)
|
|||
|
|
|
|||
|
|
| Сущность | Назначение |
|
|||
|
|
|----------|------------|
|
|||
|
|
| **Alert** | Нормализованный алерт после парсинга webhook (Grafana и др.): `severity`, `labels`, `payload`. |
|
|||
|
|
| **Incident** | Жизненный цикл инцидента: статус, связь с алертами (`alert_ids`). |
|
|||
|
|
| **EscalationPolicy** / **EscalationStep** | Цепочка эскалаций (уведомления, паузы) — задел под модуль schedules/IRM. |
|
|||
|
|
|
|||
|
|
**Severity** — перечисление: `info`, `warning`, `critical`.
|
|||
|
|
|
|||
|
|
## События (код: `onguard24/domain/events.py`)
|
|||
|
|
|
|||
|
|
| Событие | Когда |
|
|||
|
|
|---------|--------|
|
|||
|
|
| **AlertReceived** (`name=alert.received`) | Алерт принят и (в будущем) сохранён/сопоставлен. |
|
|||
|
|
|
|||
|
|
**EventBus** — протокол; **InMemoryEventBus** — простая реализация для тестов и прототипа.
|
|||
|
|
|
|||
|
|
### Как модули подписываются (план)
|
|||
|
|
|
|||
|
|
1. Модуль реализует **`Module`**: свойство `name`, метод `on_event(event)`.
|
|||
|
|
2. При старте приложения модуль регистрируется: `bus.subscribe("alert.received", handler)`.
|
|||
|
|
3. После успешного INSERT в `ingress_events` (или нормализации) ядро вызывает `await bus.publish(AlertReceived(...))`.
|
|||
|
|
|
|||
|
|
Сейчас **ingress** ещё не публикует в шину — подключение в следующих версиях.
|
|||
|
|
|
|||
|
|
## Связь с БД
|
|||
|
|
|
|||
|
|
- **ingress_events** — сырой JSON от Grafana (`alembic` миграция `001_initial`).
|
|||
|
|
- Сущности **Alert** / **Incident** — пока только в памяти; позже — таблицы и маппинг.
|