fastify-custom-healthcheck
is a plugin for creating a health route with custom evaluations.
npm i fastify-custom-healthcheck
Require the module and just register it as any other fastify plugin. From fastify-custom-healthcheck
on decorator is going to be added to your server for adding custom health checks.
const fastify = require('fastify')();
const customHealthCheck = require('fastify-custom-healthCheck');
fastify.register(customHealthCheck, options).then(() => {
fastify.addHealthCheck('metric', () => {
return new Promise((resolve) => setTimeout(resolve, 5000));
});
});
fastify.listen(3000);
fastify.register(customHealthCheck, {
path: '/health/check', // default health
info: {}, // custom information object
});
path
: path where you can reach health check route.
'/health'
.info
: object where you can define custom information you would like to include in healthcheck response object.false
true
After registering plugin you can use the decorator for adding custom health checks.
fastify.addHealthCheck(label, () => {}, { value: true });
addHealthCheck
a value, when computing health check an equality check happens between evaluation and the value returned by the health check function. If the values are different health check fails.{
"healthChecks": {
"mongo": {
"status": "FAIL",
"reason": "MongoNetworkError: failed to connect to server [localhost:27017] on first connect [Error: connect ECONNREFUSED 127.0.0.1:27017\n at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1144:16) {\n name: 'MongoNetworkError'\n}]"
},
"kafka": "HEALTHY",
"redis": "HEALTHY"
},
"stats": {
"creationTime": "2020-08-04T19:16:29.766Z",
"uptime": 0.303361107,
"memory": {
"rss": 50102272,
"heapTotal": 29270016,
"heapUsed": 16499104,
"external": 20754444,
"arrayBuffers": 19273278
}
},
"info": {
"example": "Response",
}
}
This module is inspired by server-health and the need of having this functionality in fastify.
You can also check an example usage.
For any issues.
MIT License