diff --git a/package.json b/package.json index 096b2f9..ad91ceb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ipwhitelist", - "version": "0.1.25", + "version": "0.1.26", "description": "IP WhiteList microservice for cloud provider", "main": "server.js", "scripts": { diff --git a/server.js b/server.js index 83d44b3..da87c36 100644 --- a/server.js +++ b/server.js @@ -109,6 +109,31 @@ async function start() { res.send('OK'); }); + // Честный health-check для системы алертов: реальная проверка БД. + // Отдаёт максимум диагностической информации (без секретов). + app.get('/health', async (req, res) => { + const start = Date.now(); + const base = { + version: APP_VERSION, + uptimeSec: Math.round(process.uptime()), + pid: process.pid, + node: process.version, + env: process.env.NODE_ENV || 'development', + now: new Date().toISOString(), + latencyMs: 0, + db: 'up' + }; + try { + await pool.query('SELECT 1'); + base.latencyMs = Date.now() - start; + res.status(200).json({ status: 'ok', ...base }); + } catch (e) { + base.latencyMs = Date.now() - start; + base.db = 'down'; + res.status(503).json({ status: 'error', ...base, error: e.message }); + } + }); + // Если фатальная ошибка конфигурации — показываем на всех страницах сообщение if (fatalError) { console.error(fatalError);