Wondering what’s next for npm?Check out our public roadmap! »

    hapi-k8s-health
    TypeScript icon, indicating that this package has built-in type declarations

    1.1.1 • Public • Published

    hapi-k8s-health

    npm version Build Status

    Hapi plugin to expose health and metrics endpoint for kubernetes or other orchestration platform

    Requirements

    Works with Hapi v17 or higher

    Installation

    npm i hapi-k8s-health

    In your code:

    import { Server } from '@hapi/hapi'
    import { HealthPlugin } from 'hapi-k8s-health'
     
     
    const server = new Server({
        port: 8080
    })
     
    server.register({
        plugin: HealthPlugin,
        options: options{
          livenessProbes: {
            status: () => Promise.resolve('Yeah !')
          },
          readinessProbes: {
            sequelize: () => container.sequelize.authenticate()
          }
        }
    })

    Features

    Metrics endpoint

    Exposes Prometheus formatted metrics for http requests and, by default, the default prom-client metrics for node.js.

    http metrics

    • http_request_count: Counter total http requests by:

      • path
      • method
      • returned http code
    • http_current_request_count: Gauge number of http requests currently running by:

      • method
    • http_request_duration_seconds: Histogram histogram of http requests duration in seconds by:

      • path
      • method
      • returned http code
    • http_request_duration_ms: Summary summary of http requests duration in milliseconds by:

      • path
      • method
      • returned http code

    Liveness endpoint

    Endpoint /liveness used by kubernetes to status whether or not the server is alive. Default probe shoule be enough for most cases.

    Readiness endpoint

    Endpoint /readiness used by kubernetes to status whether or not the server is ready to accept connections. You should probably check your database connection here, for example.

    Options

    • prometheusRegister: custom Prometheus register from prom-client library. Defaults to default register
    • collectDefaultMetrics: whether or not the plugin should exposee prom-client default node.js metrics. Default to true
    • defaultMetricsOptions: prom-client options for default metrics. Defaults to {}
    • readinessProbes: object containing the probes you want your readiness endpoint to execute. A probe is a function returning a Promise object of a string or void. Example:
    {
        database: () => Promise.resolve('It works'),
        queuer: () => Promise.resolve()
    }

    Default:

    {
        statusPromise.resolve('OK')
    }
    • livenessProbes: object containing the probes you want your liveness endpoint to execute. A probe is a function returning a Promise object of a string or void. Example:
    {
        database: () => Promise.resolve('It works'),
        queuer: () => Promise.resolve()
    }

    Default:

    {
        statusPromise.resolve('OK')
    }
    • livenessRoute: the route you want for your liveness probes. Default: /liveness
    • readinessRoute: the route you want for your readiness probes. Default: /readiness
    • metricsRoute: the route you want for your metrics. Default: /metrics
    • monitorProbes: whether or not you want your probes to be monitored by metrics. Default to false
    • monitorAllRoutesByDefault: whether or not you want all routes to be monitored by default. Default to true
    • exposeLiveness: should the liveness probe be active. Default to true
    • exposeReadiness: should the readiness probe be active. Default to true
    • exposeMetrics: should the metrics endpoint be active. Default to true
    • probesSuccessCode: http status code when successfully executes all probes of liveness or readiness endpoints.Defaults to 200
    • probesErrorCode: http status code when one of the probes of liveness or readiness endpoints throws an error. Defaults to 500
    • auth: hapi route auth option. Can either be for all endpoints
      auth'simple'
      auth{
        mode'try',
        strategy'jwt'
      }
      Or for each endpoint:
      auth{
        livenessfalse,
        readiness'simple',
        metrics{
          mode'try',
          strategies['jwt', 'simple']
        }
      }
    • metricsName: metrics naming. Override the default metrics names:
      // Default values
      metricsName{
        requestCounter'http_request_count',
        requestSummary'http_request_duration_ms',
        requestDurationHistogram'http_request_duration_seconds',
        currentRequests'http_current_request_count'
      }

    Install

    npm i hapi-k8s-health

    DownloadsWeekly Downloads

    1,211

    Version

    1.1.1

    License

    MIT

    Unpacked Size

    52.2 kB

    Total Files

    16

    Last publish

    Collaborators

    • avatar