Package Exports
- @loopback/extension-health
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@loopback/extension-health) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
@loopback/extension-health
This module contains a component to report health status using @cloudnative/health.
Installation
npm install --save @loopback/extension-health
Basic use
{% include note.html content="this.configure() must be called before this.component() to take effect. This is a known limitation." %}
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