⚠️ Es importante tener en cuenta que este módulo se encuentra implementado en el package@tresdoce-nestjs-toolkit/paas
, ya que es una funcionalidad core para el starter.
Este módulo está pensada para ser utilizada en NestJS Starter, o cualquier proyecto que utilice una configuración centralizada, siguiendo la misma arquitectura del starter.
- 🥳 Demo
- 📝 Requerimientos básicos
- 🛠️ Instalar dependencia
- ⚙️ Configuración
- 👨💻 Uso
- 📄 Changelog
- 📜 License MIT
- NestJS Starter
- Node.js v20.18.1 or higher (Download)
- YARN v1.22.22 or higher
- NPM v10.9.1 or higher
- NestJS v10.4.13 or higher (Documentación)
npm install -S @tresdoce-nestjs-toolkit/health
yarn add @tresdoce-nestjs-toolkit/health
El módulo tiene la capacidad de utilizar la configuración centralizada para poder realizar los health checks correspondientes a los servicios configurados.
Siguiendo la arquitectura del NestJS Starter, la información que se agrega
en la configuración de los services
impacta en los health checks para él readiness
, como
asi también el uso de ciertos servicios como elasticsearch
, typeORM
, Redis
, Camunda
, etc.
Utilizando la propiedad timeout
para configurar el tiempo de respuesta del servicio, como también la
propiedad healthPath
para configurar la url
a la cual realizar el ping check, si no se completa este campo, por
defecto realiza el ping al dominio de la url.
//./src/config/configuration.ts
import { getSkipHealthChecks, Typings } from '@tresdoce-nestjs-toolkit/core';
import { registerAs } from '@nestjs/config';
export default registerAs('config', (): Typings.AppConfig => {
return {
//...
health: {
skipChecks: getSkipHealthChecks(process.env.SKIP_HEALTH_CHECKS),
},
services: {
myApi: {
url: process.env.MY_API_URL,
},
myApiTwo: {
url: process.env.MY_API_TWO_URL,
timeout: 5000,
healthPath: '/health/endpoint/of/api',
},
},
//...
};
});
💬 Para ver en detalle todas las propiedades de la configuración, hace clic acá.
skipChecks
: Lista de servicios predefinida por arquitectura para skipear los ping checks del readiness,
si no se requiere realizar un skipeo, lo recomendable es remover la variable y su configuración.
- Type:
String[]
- Values:
storage | memory | elasticsearch | redis | camunda | typeorm
- Example:
elasticsearch,memory
timeout
: Es tiempo de respuesta del servicio a consumir.
- Type:
Number
- Default:
0
healthPath
: Endpoint a realizar el ping check del servicio
- Type:
String
- Default:
/health/liveness
Importar healthModule
en módulo principal de nuestra aplicación.
//./src/app.module.ts
import { HealthModule } from '@tresdoce-nestjs-toolkit/health';
@Module({
imports: [
//...
HealthModule,
//...
],
//...
})
export class AppModule {}
Para visualizar las respuestas de los endpoints, basta con navegar a /health/liveness
y /health/readiness
.
Schema: <http|https>://<server_url><:port>/<app-context>/health/liveness
Example: http://localhost:8080/v1/health/liveness
{
"status": "up"
}
Schema: <http|https>://<server_url><:port>/<app-context>/health/readiness
Example: http://localhost:8080/v1/health/readiness
{
"status": "ok",
"info": {
"myApi": {
"status": "up"
},
"myApiTwo": {
"status": "up"
}
},
"error": {},
"details": {
"myApi": {
"status": "up"
},
"myApiTwo": {
"status": "up"
}
}
}
{
"status": "error",
"info": {
"myApi": {
"status": "up"
}
},
"error": {
"myApiTwo": {
"status": "down",
"message": "connect ECONNREFUSED myApiTwo.example.com"
}
},
"details": {
"myApi": {
"status": "up"
},
"myApiTwo": {
"status": "down",
"message": "connect ECONNREFUSED myApiTwo.example.com"
}
}
}
Todos los cambios notables de este paquete se documentarán en el archivo Changelog.