LoginSignup
0
0

More than 3 years have passed since last update.

【NestJS】ヘルスチェック(v7版)

Last updated at Posted at 2020-09-24

【NestJS】ヘルスチェック(v6版) を NestJS 7 へのバージョンアップに伴い、変更した内容になります。

環境

NestJS 6 時代は、godaddy/terminus が必要でしたが、7 から依存が排除されています。

インストール

yarn add @nestjs/terminus --no-optional

// or

npm install --save @nestjs/terminus --no-optional

実装

  • ほとんど、↓のページに書いている通りです。
  • const dbConfig = config.get('database') とそれに関連する箇所は、各環境に応じて変更してください。
  • src/health/health.module.ts に置いていますが、場所は任意です。
src/health/health.module.ts
import config from '@config'
import { Controller, Get, Module } from '@nestjs/common'
import {
  HealthCheck,
  HealthCheckResult,
  HealthCheckService,
  HealthIndicatorResult,
  TerminusModule,
  TypeOrmHealthIndicator,
} from '@nestjs/terminus'
import { TypeOrmModule } from '@nestjs/typeorm'

@Controller('healthz')
export class HealthController {
  constructor(
    private readonly health: HealthCheckService,
    private readonly db: TypeOrmHealthIndicator
  ) {}

  @Get()
  @HealthCheck()
  healthCheck(): Promise<HealthCheckResult> {
    return this.health.check([
      // Set the timeout for a response to 300ms
      (): Promise<HealthIndicatorResult> =>
        this.db.pingCheck('database', { timeout: 300 }),
    ])
  }
}

const dbConfig = config.get('database')

@Module({
  imports: [TerminusModule, TypeOrmModule.forRoot(dbConfig)],
  controllers: [HealthController],
})
export class HealthRestModule {}
src/health/health.module.ts
// https://github.com/nestjs/config を使って TypeORM の設定をしている時の @Module 部分の例

@Module({
  imports: [TerminusModule, TypeOrmModule.forRootAsync(typeOrmModuleConfig)],
  controllers: [HealthController],
})
src/app.module.ts
@Module({
  imports: [
    ConfigModule.forRoot(configModuleConfig),
    TypeOrmModule.forRootAsync(typeOrmModuleConfig),

    // REST modules
    HealthRestModule,  // この行を追加
  ],
  controllers: [],
  providers: [],
})
export class AppModule {}

正常動作を curl で確認。

$ curl -X GET "http://localhost:3000/healthz"
{"status":"ok","info":{"database":{"status":"up"}},"error":{},"details":{"database":{"status":"up"}}}% 

上記以外の設定

【NestJS】ヘルスチェック(v6版) を参考にしてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0