Nodejs Nestjs健康检查插件@nestjs/health的使用

Nodejs Nestjs健康检查插件@nestjs/health的使用
[@nestjs](/user/nestjs)/health 是 NestJS 官方提供的健康检查插件,可以帮助你监控应用的健康状态。下面是如何在你的 NestJS 应用中设置和使用这个插件的步骤。

1. 安装必要的依赖

首先,你需要安装 [@nestjs](/user/nestjs)/health-check[@nestjs](/user/nestjs)/terminus

npm install [@nestjs](/user/nestjs)/health-check [@nestjs](/user/nestjs)/terminus

2. 配置健康检查

接下来,在你的应用模块(通常是 AppModule)中配置健康检查。这里我们以数据库连接为例进行说明:

import { Module } from '[@nestjs](/user/nestjs)/common';
import { HealthCheckModule, HealthCheckController } from '[@nestjs](/user/nestjs)/health-check';
import { TypeOrmModule } from '[@nestjs](/user/nestjs)/typeorm';

@Module({
  imports: [
    TypeOrmModule.forRoot({
      type: 'sqlite',
      database: 'db.sqlite',
      entities: [__dirname + '/**/*.entity{.ts,.js}'],
      synchronize: true,
    }),
    HealthCheckModule.register([
      {
        name: 'database',
        module: TypeOrmModule,
        healthIndicators: ['ping'],
      },
    ]),
  ],
  controllers: [HealthCheckController],
})
export class AppModule {}

在这个例子中,我们注册了一个名为 database 的健康检查,它会检查与 SQLite 数据库的连接是否正常。

3. 创建健康检查控制器

NestJS 已经为你创建了一个默认的健康检查控制器 (HealthCheckController),你可以直接使用它。如果你需要自定义健康检查逻辑,可以继承 HealthCheckController 或者创建自己的控制器。

4. 访问健康检查端点

默认情况下,健康检查的端点是 /health。你可以通过访问这个 URL 来查看应用的健康状态。

5. 自定义健康检查

如果你想添加更多的健康检查逻辑,比如检查 Redis 连接或 CPU 使用率,你可以这样做:

import { HealthCheckModule } from '[@nestjs](/user/nestjs)/health-check';
import { HealthCheckService, TypeORMHealthIndicator, HealthCheckResult } from '[@nestjs](/user/nestjs)/terminus';
import { Injectable } from '[@nestjs](/user/nestjs)/common';

@Injectable()
export class CustomHealthCheckService {
  constructor(
    private readonly health: HealthCheckService,
    private readonly db: TypeORMHealthIndicator,
  ) {}

  async check(): Promise<HealthCheckResult> {
    return this.health.check([
      () => this.db.pingCheck('database'),
      // 添加其他健康检查
      () => this.someOtherCheck(),
    ]);
  }

  async someOtherCheck(): Promise<any> {
    // 实现你的自定义健康检查逻辑
  }
}

然后在你的控制器中调用这个服务:

import { Controller, Get } from '[@nestjs](/user/nestjs)/common';
import { CustomHealthCheckService } from './custom-health-check.service';

@Controller('health')
export class HealthController {
  constructor(private readonly customHealthCheckService: CustomHealthCheckService) {}

  @Get()
  async getHealth() {
    return this.customHealthCheckService.check();
  }
}

这样,你就可以自定义健康检查逻辑,并且通过 /health 端点访问结果了。

以上就是如何在 NestJS 应用中使用 [@nestjs](/user/nestjs)/health 插件的基本步骤。希望对你有所帮助!


3 回复

当然,没问题!在NestJS中使用@nestjs/health插件进行健康检查,可以让你的应用程序更加健壮和可靠。首先,你需要安装这个库:

npm install @nestjs/health-check

然后,在你的应用程序中创建一个健康检查模块或在现有模块中配置健康检查。这里有个小例子:

import { HealthCheckModule } from '@nestjs/health-check';
import { Module } from '@nestjs/common';

@Module({
  imports: [HealthCheckModule.register({
    checks: {
      db: () => new Promise((resolve, reject) => {
        // 这里你可以添加你的数据库连接测试逻辑
        resolve('数据库正常');
      }),
      api: () => new Promise((resolve, reject) => {
        // 这里你可以添加你的API响应测试逻辑
        resolve('API响应正常');
      }),
    },
  })],
})
export class AppModule {}

最后,你可以通过访问/health端点来查看系统的健康状态。这就像给你的应用做了一个全面的体检一样!

希望这能帮到你,如果有任何问题或者需要更详细的说明,随时告诉我!


在NestJS中使用@nestjs/health模块可以很方便地进行系统健康检查。这个模块提供了对应用和系统层面的健康状态监控,可以帮助你快速了解应用程序是否正常运行。

安装

首先,你需要安装@nestjs/health-check模块。你可以使用npm或yarn来安装:

npm install @nestjs/health-check

或者

yarn add @nestjs/health-check

配置

接下来,在你的NestJS应用中配置健康检查。通常,这需要在你的主要模块(通常是AppModule)中完成。

import { Module } from '@nestjs/common';
import { HealthCheckModule } from '@nestjs/health-check';

@Module({
  imports: [
    HealthCheckModule.register({
      // 这里可以设置一些全局配置,如默认健康检查的执行频率等
    }),
  ],
})
export class AppModule {}

创建健康检查逻辑

你可以在你的服务或控制器中定义具体的健康检查逻辑。例如,我们可以创建一个简单的内存使用率检查:

import { Injectable, OnModuleInit } from '@nestjs/common';
import { HealthCheckService, MemoryHealthIndicator } from '@nestjs/health-check';

@Injectable()
export class AppService implements OnModuleInit {
  constructor(
    private health: HealthCheckService,
    private memoryHealth: MemoryHealthIndicator,
  ) {}

  onModuleInit() {
    // 可以在这里初始化一些东西,比如启动时的健康检查
    this.checkMemoryHealth();
  }

  async checkMemoryHealth() {
    try {
      const result = await this.memoryHealth.checkHeapSize('memory_heap', '1mb');
      console.log(result); // 输出健康检查的结果
    } catch (error) {
      console.error(error);
    }
  }
}

使用健康检查

然后,你可以在你的控制器中添加一个端点来触发健康检查:

import { Controller, Get } from '@nestjs/common';
import { HealthCheck, HealthCheckResult } from '@nestjs/health-check';

@Controller()
export class AppController {
  @Get('health')
  @HealthCheck()
  getHealth(): Promise<HealthCheckResult> {
    return this.appService.health.check();
  }
}

以上就是如何在NestJS中使用@nestjs/health模块来进行基本的健康检查。通过这种方式,你可以轻松地为你的应用添加健康检查功能,并确保它在出现问题时能够及时通知你。

@nestjs/health 插件提供了健康检查的功能。首先安装该插件:

npm install @nestjs/health-check

然后,在模块中导入 HealthCheckModule

import { HealthCheckModule } from '@nestjs/health-check';

@Module({
  imports: [HealthCheckModule],
})
export class ApplicationModule {}

定义健康检查逻辑:

import { HealthCheckController } from '@nestjs/health-check';
import { HealthCheckService, Type, ExecutableHealthIndicator } from '@nestjs/health-check';

@Controller('health')
export class CustomHealthCheckController extends HealthCheckController {
  constructor(health: HealthCheckService, private readonly db: ExecutableHealthIndicator) {
    super();
  }

  @Get()
  getHealth(@Res() res) {
    this.health.check([
      async () => this.db.pingCheck('database', 'http://localhost:5432'),
    ], res);
  }
}

这样就完成了健康检查的基本配置。

回到顶部