@goodandco/nest-health
TypeScript icon, indicating that this package has built-in type declarations

2.0.2 • Public • Published

Installation

$ npm install @goodandco/nest-health

Using

Health Module consists of controller for health check and specific configuration setup.

If you use yaml config module from @goodnadco/nest-config the configuration file for using this module should look like this one:

x-kafka-brokers: &KafkaBrokers
  - 'localhost:29092'

x-kafka-consumer-options: &KafkaConsumerOptions
  client:
    clientId: 'my-kafka-client'
    brokers: *KafkaBrokers
  consumer:
    groupId: 'my-kafka-consumer-group'


app:
  healthcheck:
    memoryHeap:
      key: 'memory_heap'
      options:
        heapUsedTreshhold: 209715200 # 200 * 1024 * 1024
        memoryRSS:
          key: 'memory_rss'
          options:
            rssTreshhold: 3145728000 # 3000 * 1024 * 1024
    microservices:
      - key: 'main kafka consumer'
        options:
          transport: 6
          options:
            client:
              clientId: 'health-consumer'
              brokers: *KafkaBrokers
            consumer:
              groupId: 'health-consumer'
            producerOnlyMode: true
    dbs:
      - key: 'mongodb'
        options:
          timeout: 300

For kafka, it needs to specify transport for kafka which is specifed in constant Transport.KAFKA. Also the producerOnlyMode flag should be turned on.

In case of using yaml configuration loader your configuration will look like:

import { HealthModule, THealthControllerOptions } from '@goodandco/health';
import { ConfigModule, ConfigService } from '@nestjs/config';

@Module({
  imports: [
    ...
    ConfigModule.forRoot({ 
      load: ConfigLoader.load<TConfig>(),
      isGlobal: true,
    }),
    HealthModule.forRootAsync({
      imports: [ConfigModule],
      inject: [ConfigService],
      useFactory: (configService: ConfigService) =>
        configService.get<THealthControllerOptions>('app.healthcheck'),
    }),
    ...

The simple configuration with forRoot method:

@Module({
  imports: [
    ...
    HealthModule.forRoot({ 
      memoryHeap: {
        key: 'memory_heap',
        options: {
          heapUsedTreshhold: 209715200
        }
      }, 
      memoryRSS: {
        key: 'memory_rss',
        options: {
          rssTreshhold: 209715200
        }
      },
      dbs: [
        {
          key: 'mongodb',
          options: {
            timeout: 300
          }
        }
      ],
      microservices: [
        {
          key: 'main kafka consumer',
          options: {
            transport: Transport.KAFKA,
            options: {
              producerOnlyMode: true,
              client: {
                clientId: 'health-consumer',
                brokers: ['localhost:29092']
              },
              consumer: {
                 groupId: 'health-consumer'
              }
            }
          }
        }
      ]
    }),
    ...

Go to http://localhost:<PORT>/health and there should be:

{
  "status": "ok",
  "info": {
    "memory_heap": {
      "status": "up"
    },
    "memory_rss": {
      "status": "up"
    },
    "mongodb": {
      "status": "up"
    },
    "kafka": {
      "status": "up"
    }
  },
  "error": {},
  "details": {
    "memory_heap": {
      "status": "up"
    },
    "memory_rss": {
      "status": "up"
    },
    "mongodb": {
      "status": "up"
    },
    "kafka": {
      "status": "up"
    }
  }
}

Package Sidebar

Install

npm i @goodandco/nest-health

Weekly Downloads

5

Version

2.0.2

License

MIT

Unpacked Size

149 kB

Total Files

38

Last publish

Collaborators

  • goodandco