node-healthz
TypeScript icon, indicating that this package has built-in type declarations

1.0.2 • Public • Published

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'

Dependencies (0)

    Dev Dependencies (3)

    Package Sidebar

    Install

    npm i node-healthz

    Weekly Downloads

    347

    Version

    1.0.2

    License

    MIT

    Unpacked Size

    32.1 kB

    Total Files

    16

    Last publish

    Collaborators

    • smolikjirka