[Taiga #53] Добавить endpoint /api/v1/diagnostics для базовой диагностики сервиса #4

Open
opened 2026-05-18 21:53:15 +00:00 by Grigo · 0 comments
Owner

Linked Taiga story: #53

Suggested branch:
feature/taiga-53-dobavit-endpoint-api-v1-diagnostics-dlya-bazovoy-diagnostiki

Project type: work
AI tags: work, ais, backend, rest-api, diagnostics, monitoring

Description

Реализовать новый REST endpoint, который возвращает базовую информацию о состоянии и диагностике сервиса AISHub. Endpoint должен предоставлять информацию о статусе подсистем, активных соединениях, использовании памяти и других метриках здоровья сервиса. Логика должна быть добавлена в модуль src/ais_hub/publish/rest.py, который уже содержит остальные REST endpoints, и должна быть задокументирована в docs/API.md.

Taiga: https://tasks.grigowashere.ru/project//us/53

Acceptance criteria

  • Endpoint GET /api/v1/diagnostics доступен и возвращает 200 OK
  • Ответ содержит статус подсистем инжеста (AIS UDP, GPS UART, radio UDP) - работают/не работают
  • Ответ содержит информацию о статусе БД (подключение, размер файла, WAL статус)
  • Ответ содержит информацию о памяти: текущее использование, пиковое использование (если доступно)
  • Ответ содержит информацию о WebSocket соединениях: количество активных клиентов
  • Ответ содержит информацию о системных очередях: размеры и количество дропов
  • Endpoint задокументирован в docs/API.md с примером ответа
  • Добавлены тесты для нового endpoint в tests/test_rest_smoke.py или отдельном файле

Code notes

  • В src/ais_hub/app.py используется pattern supervisors для управления подсистемами — потребуется доступ к их состоянию для диагностики.
  • src/ais_hub/core/stats.py уже содержит счетчики и gauges, которые могут быть полезны для диагностики (ais_fragment_timeouts, parser_in_dropped, etc.)
  • src/ais_hub/publish/rest.py следует использовать для добавления нового endpoint, он уже содержит структурированный код для обработки REST запросов.
  • Существует тестовый файл tests/test_rest_smoke.py, который проверяет REST endpoints — туда можно добавить тесты для diagnostics.
  • Информацию о WebSocket клиентах вероятно можно получить из src/ais_hub/publish/ws.py.
  • src/ais_hub/storage/db.py использует aiosqlite (WAL mode) — нужно проверить как получить информацию о статусе БД без прямого доступа к файлам.

Questions

  • Какие именно подсистемы должны быть отражены в статусе инжеста? Следует ли проверять только те, которые включены в конфиге, или все возможные?
  • Нужна ли история диагностики (тренды) или достаточно моментального снимка?
  • Какие метрики памяти наиболее важны для embedded-среды: текущее использование, пиковое, RSS, VMS?
  • Должен ли endpoint включать информацию о каждом источнике инжеста отдельно (например, статистика по каждому UDP порту) или только агрегированный статус?
  • Нужно ли добавлять информацию о версии сервиса в диагностический ответ или это уже есть в /health?
Linked Taiga story: #53 Suggested branch: `feature/taiga-53-dobavit-endpoint-api-v1-diagnostics-dlya-bazovoy-diagnostiki` Project type: `work` AI tags: work, ais, backend, rest-api, diagnostics, monitoring ## Description Реализовать новый REST endpoint, который возвращает базовую информацию о состоянии и диагностике сервиса AISHub. Endpoint должен предоставлять информацию о статусе подсистем, активных соединениях, использовании памяти и других метриках здоровья сервиса. Логика должна быть добавлена в модуль src/ais_hub/publish/rest.py, который уже содержит остальные REST endpoints, и должна быть задокументирована в docs/API.md. Taiga: https://tasks.grigowashere.ru/project//us/53 ## Acceptance criteria - Endpoint GET /api/v1/diagnostics доступен и возвращает 200 OK - Ответ содержит статус подсистем инжеста (AIS UDP, GPS UART, radio UDP) - работают/не работают - Ответ содержит информацию о статусе БД (подключение, размер файла, WAL статус) - Ответ содержит информацию о памяти: текущее использование, пиковое использование (если доступно) - Ответ содержит информацию о WebSocket соединениях: количество активных клиентов - Ответ содержит информацию о системных очередях: размеры и количество дропов - Endpoint задокументирован в docs/API.md с примером ответа - Добавлены тесты для нового endpoint в tests/test_rest_smoke.py или отдельном файле ## Code notes - В src/ais_hub/app.py используется pattern supervisors для управления подсистемами — потребуется доступ к их состоянию для диагностики. - src/ais_hub/core/stats.py уже содержит счетчики и gauges, которые могут быть полезны для диагностики (ais_fragment_timeouts, parser_in_dropped, etc.) - src/ais_hub/publish/rest.py следует использовать для добавления нового endpoint, он уже содержит структурированный код для обработки REST запросов. - Существует тестовый файл tests/test_rest_smoke.py, который проверяет REST endpoints — туда можно добавить тесты для diagnostics. - Информацию о WebSocket клиентах вероятно можно получить из src/ais_hub/publish/ws.py. - src/ais_hub/storage/db.py использует aiosqlite (WAL mode) — нужно проверить как получить информацию о статусе БД без прямого доступа к файлам. ## Questions - Какие именно подсистемы должны быть отражены в статусе инжеста? Следует ли проверять только те, которые включены в конфиге, или все возможные? - Нужна ли история диагностики (тренды) или достаточно моментального снимка? - Какие метрики памяти наиболее важны для embedded-среды: текущее использование, пиковое, RSS, VMS? - Должен ли endpoint включать информацию о каждом источнике инжеста отдельно (например, статистика по каждому UDP порту) или только агрегированный статус? - Нужно ли добавлять информацию о версии сервиса в диагностический ответ или это уже есть в /health?
Grigo added the workaisbackendrest-apidiagnosticsmonitoring labels 2026-05-18 21:53:18 +00:00
Sign in to join this conversation.