feat: честный /health эндпоинт с расширенной диагностикой (без секретов)
This commit is contained in:
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "ipwhitelist",
|
"name": "ipwhitelist",
|
||||||
"version": "0.1.25",
|
"version": "0.1.26",
|
||||||
"description": "IP WhiteList microservice for cloud provider",
|
"description": "IP WhiteList microservice for cloud provider",
|
||||||
"main": "server.js",
|
"main": "server.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@@ -109,6 +109,31 @@ async function start() {
|
|||||||
res.send('OK');
|
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) {
|
if (fatalError) {
|
||||||
console.error(fatalError);
|
console.error(fatalError);
|
||||||
|
|||||||
Reference in New Issue
Block a user