feat(admin/health): System Health Level 2 — метрики HTTP-запросов

backend/src/utils/metrics.js: лёгкие in-memory метрики (сброс при рестарте) —
всего запросов, req/min (скользящее окно), латентность avg/p50/p95/p99,
разбивка по статусам 2xx/3xx/4xx/5xx, топ маршрутов по частоте/латентности/
ошибкам (группировка по шаблону route.path, не по URL).

server.js: middleware (на /api, по res 'finish') пишет латентность и статус.
adminController.getMetrics + GET /api/admin/metrics (под admin-auth).

admin.js: health-страница переведена на refreshHealth/renderHealth (Level 1)
+ секция «Метрики запросов»: карточки req/min/всего/avg/p95/p99/5xx, цветная
полоса статусов, топ медленных/частых/ошибочных маршрутов.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Maxim Dolgolyov
2026-05-30 18:27:58 +03:00
parent f7d27ecb91
commit 4a424505a8
5 changed files with 224 additions and 42 deletions
+1
View File
@@ -38,6 +38,7 @@ router.delete('/error-log', ctrl.clearErrorLog);
/* System health */
router.get('/health', ctrl.getHealth);
router.get('/metrics', ctrl.getMetrics);
/* Topics CRUD */
router.get('/topics', ctrl.getTopics);