feat: implement comprehensive health check endpoints for API, Auth, and Realtime services to monitor database, Redis, MinIO, and InfluxDB connectivity.

This commit is contained in:
Giuseppe Raffa
2026-04-04 12:10:00 +02:00
parent ba6941fd2a
commit b31a04b1a7
10 changed files with 106 additions and 8 deletions

View File

@@ -35,6 +35,22 @@ app.set('view engine', 'html');
const authRoutes = require('./routes/auth');
app.use('/', authRoutes);
app.get('/health', async (req, res) => {
const dbConnected = await database.checkPostgres();
const redisHelper = require('./storage/redis');
const redisConnected = await redisHelper.checkRedis();
res.json({
status: dbConnected && redisConnected ? "ok" : "degraded",
service: "auth",
database: dbConnected ? "connected" : "disconnected",
redis: redisConnected ? "connected" : "disconnected",
version: version,
build_number: vBuild,
version_state: vState
});
});
// Startup
async function start() {
await database.initDb();

View File

@@ -97,9 +97,19 @@ async function initDb() {
`);
}
async function checkPostgres() {
try {
await pool.query('SELECT NOW()');
return true;
} catch (error) {
return false;
}
}
module.exports = {
pool,
query,
getClient,
initDb
initDb,
checkPostgres
};

View File

@@ -32,5 +32,17 @@ async function configure() {
function connected() {
return redis.status === 'ready';
}
async function checkRedis() {
try {
if (redis.status !== 'ready') {
await redis.connect().catch(() => {});
}
await redis.ping();
return true;
} catch (err) {
return false;
}
}
module.exports = { redis, configure, connected };
module.exports = { redis, configure, connected, checkRedis };