node-healthz

Define a set of checkers to your express application. `/healthz` endpoint then becomes available. ```js router.use( expressMiddleware( { sql: { type: 'knex', adapter: knex, // Your knex instance

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
node-healthz
1.0.25 years ago5 years agoMinified + gzip package size for node-healthz in KB

Readme

node-healthz
Define a set of checkers to your express application. /healthz endpoint then becomes available.
router.use(
    expressMiddleware(
        {
            sql: {
                type: 'knex',
                adapter: knex, // Your knex instance
            },
            mongo: {
                type: 'mongoose',
                adapter: mongoose, // Your mongoose instance
            },
            custom: {
                check: () => true,/* Custom check. May be async */
            }
        }
    )
)
..and resulting GET /healthz resopnse:
{
    "tldr": "OK",
    "t": "501ms",
    "checkers": {
        "sql": {
            "result": true,
            "error": null,
            "t": "0ms",
            "health": "OK",
            "crucial": false
        },
        "hello": {
            "result": null,
            "error": null,
            "t": "501ms",
            "health": "TIMEOUT",
            "crucial": false
        },
    },
    "options": {
        "timeout": 500
    }
}

API

expressMiddleware({ [key: string]: AdapterOptions }): RequestHandler

Define a set of app health checkers. Returns an express route handler.
System is considered healthy if all the checkers responded without error in given timeout.
If request comes, and routes starts /healthz, system health is calculated and returned:
GET /healthz
|Supported query parameters|| |-|-| | timeout | Optional. Default: 5000. How much time in ms do the checkers have to respond.
Status code is 500 for unhealthy system, 200 otherwise.
Response JSON body:
{
    tldr: 'OK' | 'NOT_OK',
    checkers: [
        {
            result: boolean // true if checker responds in given time
            error: string | null // error message if the checker fails
            t: string // time, 245ms
            health: 'OK' | 'ERROR' | 'TIMEOUT'
            crucial: boolean
        }
    ],
    t: string // total time, 245ms
    options: { // Optional parameters from the input
        timeout: 1000,
    }
}

Types

AdapterOptions: object

|Attribute|Type|Description |-|-|-| |type| AdapterType | Optional. If not supplied, check function has to be defined. |adapter| any | Optional. If type is specified, appropriate adapter instance has to be passed in here. E.g. you Mongoose instance. | crucial | boolean | Optional. Default: false. If true and checker fails, system health outcome cannot be OK. | check | function | Optional. Use this if you want to do the check completely by yourself. Check may return a Promise. Check is called with AdapterOptions, extended with a timeout: number prop.

AdapterType: string

Supported adapter types defining the instance that is found in adapter option.
'knex' | 'mongoose'