micro-health is used as an extension for micro to add the route /health
to your service. It was meant to implement the Health Check API microservice design pattern for microservices monitoring. For long read I suggest reading this page.
cd my-micro-project/
npm install --save micro-health
and add use the package like this:
// index.js
const health = require('micro-health')
const microFn = () => 'Hello World'
module.exports = health(microFn)
then just run your microservice normally and it will expose a /health
endpoint.
By default the health request it will return you an HTTP 200 response with a 'success' message and it will fail if the microservice isn't available, this guarantees that your microservice is working or not regardless of the other functions of microservice itself. Also it supports a custom errorChecker:
// index.js
const health = require('micro-health')
const microFn = (req, res) => {
// Wonderful code
}
const errorChecker = async () => {
// Check if database pool connection is full
// Check if there is still space on filesystem
// Check if external APIs are working
try {
await customChecking()
catch (e) {
return { error: e }
}
// You can also return false to pass the health checking
}
module.exports = health(microFn, errorChecker)
If error aren't falsy the health request will return an HTTP 500 response with the returned object by the error checker.
There are several tools for health checking such us:
Or... you can just build your own!
- Fork this repository to your own GitHub account and then clone it to your local device
- Link the package to the global module directory:
npm link
- Within the module you want to test your local development instance of micro-cacheable, just link it to the dependencies:
npm link micro-health
. Instead of the default one from npm, node will now use your clone of micro-health!
Thanks to ZEIT Team for giving us micro to make our life easier!