Проверка живости в Nest
Оркестратор периодически спрашивает API, жив ли контейнер. Если ответ не приходит или процесс завис, экземпляр перезапускают, не дожидаясь жалоб пользователей.
Проверка живости
(liveness probe, зонд живости)
не трогает базу и очереди: важно
лишь, что NodeJS отвечает на HTTP.
Пакет @nestjs/terminus
даёт сервис сводки и пометку
адреса проверки. Пустой список
индикаторов в сводке означает,
что смотрят только на сам процесс.
Покажем на примере постов:
npm install @nestjs/terminus
Подключим модуль проверок и контроллер здоровья:
import { Module } from '@nestjs/common';
import { TerminusModule } from '@nestjs/terminus';
import { HealthController } from './health.controller.js';
@Module({
imports: [TerminusModule],
controllers: [HealthController],
})
export class HealthModule {}
Адрес живости отдаёт сводку без внешних индикаторов:
import { Controller, Get } from '@nestjs/common';
import { HealthCheck, HealthCheckService } from '@nestjs/terminus';
@Controller('health')
export class HealthController {
constructor(private health: HealthCheckService) {}
@Get('live')
@HealthCheck()
live() {
return this.health.check([]);
}
}
Модуль здоровья импортируем рядом с модулем темы:
import { Module } from '@nestjs/common';
import { HealthModule } from './health.module.js';
import { PostController } from './post.controller.js';
@Module({
imports: [HealthModule],
controllers: [PostController],
})
export class AppModule {}
Установите пакет проверок,
добавьте HealthModule
с адресом живости для приложения
работников и подключите модуль
к корневому.