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:
@@ -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();
|
||||
|
||||
@@ -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
|
||||
};
|
||||
|
||||
@@ -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 };
|
||||
Reference in New Issue
Block a user