egg-healthy
Version:
Liveness and Readiness health check for egg application
50 lines (43 loc) • 1.18 kB
JavaScript
;
const statuses = require('statuses');
const HealthStatusCode = require('../../lib/health_status_code');
module.exports = (_, app) => {
const config = app.config.healthy;
return async function healthy(ctx, next) {
if (ctx.path === config.readinessPath) {
ctx.status = getReadinessStatus(ctx);
ctx.body = statuses[ctx.status];
return;
}
if (ctx.path === config.livenessPath) {
ctx.status = getLivenessStatus(ctx);
ctx.body = statuses[ctx.status];
return;
}
await next();
};
};
function getReadinessStatus(ctx) {
switch (ctx.app.serverHealthStatus.getStatus()) {
case HealthStatusCode.UP:
return 200;
case HealthStatusCode.STARTING:
case HealthStatusCode.DOWN:
case HealthStatusCode.STOPPING:
case HealthStatusCode.STOPPED:
default:
return 503;
}
}
function getLivenessStatus(ctx) {
switch (ctx.app.serverHealthStatus.getStatus()) {
case HealthStatusCode.UP:
case HealthStatusCode.STARTING:
return 200;
case HealthStatusCode.DOWN:
case HealthStatusCode.STOPPING:
case HealthStatusCode.STOPPED:
default:
return 503;
}
}