Skip to content
Branch: master
Find file History
renovate-bot and nabdelgadir chore: update dependency @types/node to ^10.14.16
Signed-off-by: Renovate Bot <bot@renovateapp.com>
Latest commit 1495165 Aug 20, 2019
Permalink
Type Name Latest commit message Commit time
..
Failed to load latest commit information.
src feat(extension-health): add a component to run health checks Jul 30, 2019
.npmrc feat(extension-health): add a component to run health checks Jul 30, 2019
CHANGELOG.md chore: publish release Aug 19, 2019
LICENSE
README.md feat(extension-health): add a component to run health checks Jul 30, 2019
index.d.ts feat(extension-health): add a component to run health checks Jul 30, 2019
index.js feat(extension-health): add a component to run health checks Jul 30, 2019
index.ts feat(extension-health): add a component to run health checks Jul 30, 2019
package-lock.json chore: update dependency @types/node to ^10.14.16 Aug 20, 2019
package.json chore: update dependency @types/node to ^10.14.16 Aug 20, 2019
tsconfig.build.json feat(extension-health): add a component to run health checks Jul 30, 2019

README.md

@loopback/extension-health

This module contains a component to report health status using @cloudnative/health.

Installation

npm install --save @loopback/extension-health

Basic use

The component should be loaded in the constructor of your custom Application class.

Start by importing the component class:

import {HealthComponent} from '@loopback/extension-health';

In the constructor, add the component to your application:

this.component(HealthComponent);

By default, three routes are exposed at:

  • /health - overall health status
  • /live - liveness status
  • /ready - readiness status

The paths can be customized via Health configuration as follows:

this.configure(HealthBindings.COMPONENT).to({
  healthPath: '/health',
  livePath: '/live',
  readyPath: '/ready',
});

http://localhost:3000/health returns health in JSON format, such as:

{
  "status": "UP",
  "checks": [
    {"name": "readiness", "state": "UP", "data": {"reason": ""}},
    {"name": "liveness", "state": "UP", "data": {"reason": ""}}
  ]
}

Add custom live and ready checks

The health component allows extra live and ready checks to be added.

import {LiveCheck, ReadyCheck, HealthTags} from '@loopback/extension-health';

const myLiveCheck: LiveCheck = () => {
  return Promise.resolve();
};
app
  .bind('health.MyLiveCheck')
  .to(myLiveCheck)
  .tag(HealthTags.LIVE_CHECK);

// Define a provider to check the liveness of a datasource
class DBLiveCheckProvider implements Provider<LiveCheck> {
  constructor(@inject('datasources.db') private ds: DataSource) {}

  value() {
    return () => this.ds.ping();
  }
}

app
  .bind('health.MyDBCheck')
  .toProvider(DBLiveCheckProvider)
  .tag(HealthTags.LIVE_CHECK);

const myReadyCheck: ReadyCheck = () => {
  return Promise.resolve();
};
app
  .bind('health.MyReadyCheck')
  .to(myReadyCheck)
  .tag(HealthTags.READY_CHECK);

Contributions

Tests

Run npm test from the root folder.

Contributors

See all contributors.

License

MIT

You can’t perform that action at this time.