@nestjs-mod/terminus
v1.13.3
Published
Terminus integration provides readiness/liveness health checks for NestJS-mod (Wrapper for https://www.npmjs.com/package/@nestjs/terminus)
Downloads
228
Maintainers
Readme
@nestjs-mod/terminus
Terminus integration provides readiness/liveness health checks for NestJS-mod (Wrapper for https://www.npmjs.com/package/@nestjs/terminus)
Installation
npm i --save @nestjs/terminus @nestjs-mod/terminus
Modules
| Link | Category | Description | | ---- | -------- | ----------- | | TerminusHealthCheckModule | system | Terminus integration provides readiness/liveness health checks for NestJS-mod (Wrapper for https://www.npmjs.com/package/@nestjs/terminus) |
Modules descriptions
TerminusHealthCheckModule
Terminus integration provides readiness/liveness health checks for NestJS-mod (Wrapper for https://www.npmjs.com/package/@nestjs/terminus)
Use in NestJS
Example of use feature configurations and use standardHealthIndicators.
import { TerminusHealthCheckModule, TerminusHealthCheckFeatureConfiguration } from '@nestjs-mod/terminus';
import { NestFactory } from '@nestjs/core';
import { Module } from '@nestjs/common';
import { HealthIndicatorStatus, MemoryHealthIndicator } from '@nestjs/terminus';
export class FeatureTerminusHealthCheckFeatureConfiguration implements TerminusHealthCheckFeatureConfiguration {
name = 'Feature';
async isHealthy() {
return {
feature: {
status: 'up' as HealthIndicatorStatus,
},
};
}
}
@Module({
imports: [
TerminusHealthCheckModule.forFeature({
featureModuleName: 'feature',
featureConfiguration: new FeatureTerminusHealthCheckFeatureConfiguration(),
}),
],
})
export class FeatureModule {}
@Module({
imports: [
TerminusHealthCheckModule.forRootAsync({
configurationFactory: (memoryHealthIndicator: MemoryHealthIndicator) => ({
standardHealthIndicators: [
{ name: 'memory_heap', check: () => memoryHealthIndicator.checkHeap('memory_heap', 150 * 1024 * 1024) },
],
}),
inject: [MemoryHealthIndicator],
}),
FeatureModule,
],
})
export class AppModule {}
async function bootstrap() {
const app = await NestFactory.create(AppModule);
await app.listen(3000);
}
bootstrap();
Use in NestJS-mod
An example of using forRoot with parameters and use feature configurations with use standardHealthIndicators, you can see the full example here https://github.com/nestjs-mod/nestjs-mod-contrib/tree/master/apps/example-terminus.
import {
DefaultNestApplicationInitializer,
DefaultNestApplicationListener,
bootstrapNestApplication,
createNestModule,
} from '@nestjs-mod/common';
import { TerminusHealthCheckModule, TerminusHealthCheckFeatureConfiguration } from '@nestjs-mod/terminus';
import { HealthIndicatorStatus, MemoryHealthIndicator } from '@nestjs/terminus';
export class FeatureTerminusHealthCheckFeatureConfiguration implements TerminusHealthCheckFeatureConfiguration {
name = 'Feature';
async isHealthy() {
return {
feature: {
status: 'up' as HealthIndicatorStatus,
},
};
}
}
export const { FeatureModule } = createNestModule({
moduleName: 'FeatureModule',
imports: [
TerminusHealthCheck.forFeature({
featureModuleName: 'feature',
featureConfiguration: new FeatureTerminusHealthCheckFeatureConfiguration(),
}),
],
});
bootstrapNestApplication({
modules: {
system: [
DefaultNestApplicationInitializer.forRoot(),
TerminusHealthCheckModule.forRootAsync({
configurationFactory: (memoryHealthIndicator: MemoryHealthIndicator) => ({
standardHealthIndicators: [
{ name: 'memory_heap', check: () => memoryHealthIndicator.checkHeap('memory_heap', 150 * 1024 * 1024) },
],
}),
inject: [MemoryHealthIndicator],
}),
DefaultNestApplicationListener.forRoot({ staticEnvironments: { port: 3000 } }),
],
feature: [FeatureModule.forRoot()],
},
});
Shared providers
TerminusHealthCheckService
Shared imports
TerminusModule
Configuration
| Key | Description | Constraints | Default | Value |
| ------ | ----------- | ----------- | ------- | ----- |
|standardHealthIndicators
|Standard health indicators @see https://docs.nestjs.com/recipes/terminus#setting-up-a-healthcheck|optional|-|-|
Static configuration
| Key | Description | Constraints | Default | Value |
| ------ | ----------- | ----------- | ------- | ----- |
|endpoint
|Rest endpoint for health check|optional|health
|-|
|errorLogStyle
|The style of the error logger @default 'json'|optional|-|-|
|logger
|The logger to use. Either default logger or your own.|optional|-|-|
|gracefulShutdownTimeoutMs
|The timeout to wait in ms before the application shuts down @default 0|optional|-|-|
Feature configuration
| Key | Description | Constraints | Default | Value |
| ------ | ----------- | ----------- | ------- | ----- |
|name
|Name of health check|isNotEmpty (name should not be empty)|-|-|
|isHealthy
|Logic for health check|isNotEmpty (isHealthy should not be empty)|-|-|
Links
- https://github.com/nestjs-mod/nestjs-mod - A collection of utilities for unifying NestJS applications and modules
- https://github.com/nestjs-mod/nestjs-mod-contrib - Contrib repository for the NestJS-mod
- https://github.com/nestjs-mod/nestjs-mod-example - Example application built with @nestjs-mod/schematics
- https://github.com/nestjs-mod/nestjs-mod/blob/master/apps/example-basic/INFRASTRUCTURE.MD - A simple example of infrastructure documentation.
- https://github.com/nestjs-mod/nestjs-mod-contrib/blob/master/apps/example-prisma/INFRASTRUCTURE.MD - An extended example of infrastructure documentation with a docker-compose file and a data base.
- https://dev.to/endykaufman/collection-of-nestjs-mod-utilities-for-unifying-applications-and-modules-on-nestjs-5256 - Article about the project NestJS-mod
- https://habr.com/ru/articles/788916 - Коллекция утилит NestJS-mod для унификации приложений и модулей на NestJS
License
MIT