Skip to main content

@nestjs-mod/terminus

Terminus integration provides readiness/liveness health checks for NestJS-mod (Wrapper for https://www.npmjs.com/package/@nestjs/terminus)

NPM version monthly downloads Telegram Discord

Installation

npm i --save @nestjs/terminus @nestjs-mod/terminus

Modules

LinkCategoryDescription
TerminusHealthCheckModulesystemTerminus 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

KeyDescriptionConstraintsDefaultValue
standardHealthIndicatorsStandard health indicators @see https://docs.nestjs.com/recipes/terminus#setting-up-a-healthcheckoptional--

Static configuration

KeyDescriptionConstraintsDefaultValue
endpointRest endpoint for health checkoptionalhealth-
errorLogStyleThe style of the error logger @default 'json'optional--
loggerThe logger to use. Either default logger or your own.optional--
gracefulShutdownTimeoutMsThe timeout to wait in ms before the application shuts down @default 0optional--

Feature configuration

KeyDescriptionConstraintsDefaultValue
nameName of health checkisNotEmpty (name should not be empty)--
isHealthyLogic for health checkisNotEmpty (isHealthy should not be empty)--

Back to Top

License

MIT