Health checks
Checking if the system is healthy.
We may use Terminus to check the health of our components. It offers a set of health indicators, in order to confirm the overall health of the system. Let's then check the database health.
First, we should install the necessary dependency.
yarn add @nestjs/terminus
Now, create a resource for health with no CRUD, and inside the module import the TerminusModule
.
nest g res health
In the controller, create a route for performing the health check. We may restrict it to an admin.
@Roles(Role.ADMIN)
@HealthCheck()
@Get()
check() {
return this.healthService.check();
}
Then, in the service, inject the HealthCheckService
and the TypeOrmHealthIndicator
.
private readonly health: HealthCheckService,
private readonly database: TypeOrmHealthIndicator,
Finally, we should use the HealthCheckService
to determine the overall health, passing to it all the indicators we want. In this case, it will be just the database indicator.
check() {
return this.health.check([() => this.database.pingCheck('database')]);
}
If you want to add more indicators, this NestJS doc shows all the available options, and examples of how to use some of them.
Commit - Adding health check
Last updated