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'

Readme

Keywords

none

Package Sidebar

Install

npm i node-healthz

Weekly Downloads

159

Version

1.0.2

License

MIT

Unpacked Size

32.1 kB

Total Files

16

Last publish

Collaborators

  • smolikjirka