feat(admin/health): System Health Level 1 — живой мониторинг + вердикт
getHealth обогащён: вердикт здоровья (ok/warning/critical) по порогам (память %, диск, ошибки/24ч, лаг event-loop, размер БД) + причины; реальный % памяти, лаг event-loop (perf_hooks), load average, свободное место на диске (statfs), PID/NODE_ENV, версия+git-commit, число активных SSE-соединений, размер WAL, разбивка БД по крупнейшим таблицам. sse.js: экспорт stats() (онлайн-пользователи/гости/соединения). admin.js loadHealth: светофор-баннер вердикта с причинами, тумблер авто-обновления (live, поллинг 5с с самоостановкой при уходе с вкладки), 8 карточек (uptime/БД/файлы/ошибки/SSE/память/event-loop/диск), панели платформы и активности, горизонтальные бары крупнейших таблиц БД. Проверено: getHealth собирает полный payload, вердикт срабатывает (диск<2ГБ → warning), NaN-лаг защищён. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
+11
-1
@@ -79,7 +79,17 @@ function getOnlineUserIds() {
|
||||
return [...clients.keys()];
|
||||
}
|
||||
|
||||
/* Сводка SSE-соединений для мониторинга: онлайн-пользователи, гости и
|
||||
суммарное число открытых стримов. */
|
||||
function stats() {
|
||||
let conns = 0;
|
||||
for (const set of clients.values()) conns += set.size;
|
||||
let guestConns = 0;
|
||||
for (const set of guestClients.values()) guestConns += set.size;
|
||||
return { users: clients.size, guests: guestClients.size, connections: conns + guestConns };
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
addClient, removeClient, emit, emitToClass, getOnlineUserIds,
|
||||
addClient, removeClient, emit, emitToClass, getOnlineUserIds, stats,
|
||||
addGuestClient, removeGuestClient, emitToGuests,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user