Enhance API and UI for incident management and live updates
- Added a new endpoint `/api/agg/incidents` to provide a normalized snapshot of incidents for fleet triage, including severity and recommended actions. - Implemented live event streaming via `/api/live/events` for real-time updates on fleet status and incidents, enhancing observability. - Updated the Web UI to include dedicated sections for incidents and live updates, improving user navigation and access to critical information. - Enhanced API documentation to reflect new endpoints and their functionalities, ensuring clarity for developers and users.
This commit is contained in:
@@ -33,6 +33,7 @@
|
||||
| GET | `/api/agg/users` | Объединённый список пользователей с `by_server`, суммарным `total_megabytes` и **смерженными лимитами** (см. ниже). |
|
||||
| GET | `/api/agg/user/{username}` | Один пользователь в том же формате, что элементы `/api/agg/users` (без списка всех). Имя в пути: `[A-Za-z0-9_.-]+`. Ответ **`404`**, если пользователь не найден ни на одном успешном upstream. |
|
||||
| GET | `/api/agg/fleet-status` | По каждому алиасу: параллельно health + system/info; в `data.servers[]` — статусы подзапросов и тела `health` / `system_info` при успехе. См. [AGGREGATE_OPENAPI.yaml](AGGREGATE_OPENAPI.yaml). |
|
||||
| GET | `/api/agg/incidents` | Нормализованный snapshot инцидентов для triage-панели: `critical/warning/info`, `affected_aliases`, рекомендуемые `actions` (runbook/deep links), счётчики по severity. |
|
||||
|
||||
Все методы — **GET**; действует тот же whitelist, что и для остального API шлюза.
|
||||
|
||||
@@ -57,6 +58,18 @@
|
||||
| `include_links` | `users`, `user/…` | `true` — добавить сгенерированные `tg://proxy` ссылки (берётся первая успешная запись по пользователю). |
|
||||
| `min_total_megabytes` | `users` | Порог суммарного трафика пользователя в MiB (строго больше 0). |
|
||||
| `min_total_octets` | `users` | Устаревший вариант порога в октетах (если задан `min_total_megabytes`, он приоритетнее). |
|
||||
| `aliases` | `incidents` | Список алиасов через запятую; позволяет строить incidents snapshot по выбранной группе нод. |
|
||||
|
||||
## Live stream (SSE)
|
||||
|
||||
Для оперативного режима NOC доступен поток событий:
|
||||
|
||||
- **`GET /api/live/events`** (`text/event-stream`)
|
||||
- query: `aliases` (опционально, как в `/api/agg/*`)
|
||||
- событие: `event: snapshot`
|
||||
- payload: JSON со статусом флота (`healthy/degraded/critical`), `partial`, и массивом `incidents`
|
||||
|
||||
Поток рассчитан на UI-клиент с авто-reconnect (на фронте используется экспоненциальный backoff).
|
||||
|
||||
## Конфигурация (опционально)
|
||||
|
||||
@@ -99,4 +112,8 @@ curl -sS "http://127.0.0.1:8080/api/agg/unique-ips"
|
||||
curl -sS "http://127.0.0.1:8080/api/agg/users?include_links=false&min_total_megabytes=1"
|
||||
curl -sS "http://127.0.0.1:8080/api/agg/fleet-status"
|
||||
curl -sS "http://127.0.0.1:8080/api/agg/user/myuser?aliases=gt1"
|
||||
curl -sS "http://127.0.0.1:8080/api/agg/incidents?aliases=gt1,gt2"
|
||||
|
||||
# SSE поток snapshot-событий (пример с curl)
|
||||
curl -N "http://127.0.0.1:8080/api/live/events?aliases=gt1,gt2"
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user