Healthcheck and monitoring middleware for koa inspired by java spring's actuators
$ npm install koa-actuator --save
const Koa = require('koa');
const actuator = require('koa-actuator');
const app = new Koa();
//...
app.use(actuator());
//...
app.listen(3000);
Ones you start your koa application, it will add endpoints /health, /info
The list of service endpoints and examples of responses is below:
Performs health checks and returns the results:
{
"status": "UP",
"details: {
"db": {
"status": "UP",
"details": {
"freeConnections": 10
}
}
"redis": {
"status": "UP",
"details": {
"usedMemory": "52m",
"uptimeDays": 16
}
}
}
}
The statuses of the health checks are aggregated in a root-level status
field. If at least one check yields DOWN
status, the aggregated status will become DOWN
. Health checks can be defined on actuator construction:
const healthChecks = {
db: async () => {
return {
status: (await isDbAlive()) ? 'UP' : 'DOWN',
freeConnections: await freeDbConnectionsLeft()
}
},
//...
};
app.use(actuator(healthChecks));
A check can return an object of an arbitrary structure. If the returned structure contains status
field, it will be counted in the aggregated status.
Main application info from package.json
{
"build": {
"version": "1.0.0",
"name": "koa-act-test",
"main": "index.js",
"description": "test"
}
}
If git.properties file is present in application root directory, git section will also be available. In this case the response will look like:
{
"build": {
"version": "1.0.0",
"name": "koa-act-test",
"main": "index.js",
"description": "test"
},
"git": {
"commit": {
"time": {
"epochSecond": 1531473434,
"nano": 0
},
"id": "a94ff08"
},
"branch": "origin/master"
}
}