3.3 KiB
3.3 KiB
Health Check da API
Descrição
O sistema de Health Check implementado permite monitorar a saúde da aplicação e seus componentes críticos, como bancos de dados, uso de memória e espaço em disco. Isso facilita a detecção precoce de problemas e ajuda a manter a estabilidade da aplicação.
Endpoints Disponíveis
Verificação Geral
- URL:
/health - Método:
GET - Descrição: Verifica a saúde geral da aplicação, incluindo:
- Status da API (ping)
- Uso de disco
- Uso de memória
- Conexões de banco de dados (Oracle e PostgreSQL)
Verificação de Banco de Dados
- URL:
/health/db - Método:
GET - Descrição: Verifica apenas as conexões de banco de dados (Oracle e PostgreSQL)
Verificação de Memória
- URL:
/health/memory - Método:
GET - Descrição: Verifica o uso de memória da aplicação (heap e RSS)
Verificação de Disco
- URL:
/health/disk - Método:
GET - Descrição: Verifica o espaço disponível em disco
Formato de Resposta
A resposta segue o formato padrão do Terminus:
{
"status": "ok",
"info": {
"api": {
"status": "up"
},
"disk": {
"status": "up"
},
"memory_heap": {
"status": "up"
},
"oracle": {
"status": "up"
},
"postgres": {
"status": "up"
}
},
"error": {},
"details": {
"api": {
"status": "up"
},
"disk": {
"status": "up",
"freeBytes": 53687091200,
"usedBytes": 170573111296,
"totalBytes": 224260202496
},
"memory_heap": {
"status": "up",
"usedBytes": 45731840,
"thresholdBytes": 157286400
},
"oracle": {
"status": "up"
},
"postgres": {
"status": "up"
}
}
}
Níveis de Status
- up: O componente está funcionando corretamente
- down: O componente está com problemas
- ok: Todos os componentes estão funcionando corretamente
- error: Um ou mais componentes estão com problemas
Integração com Monitoramento
Prometheus (Recomendado)
Para integrar com Prometheus, instale e configure o pacote @willsoto/nestjs-prometheus:
npm install @willsoto/nestjs-prometheus prom-client --save
E então adicione o PrometheusModule ao HealthModule:
import { PrometheusModule } from '@willsoto/nestjs-prometheus';
@Module({
imports: [
// ...
PrometheusModule.register(),
],
})
export class HealthModule {}
Integração com Ferramentas de APM
Os health checks podem ser integrados com ferramentas de Application Performance Monitoring (APM) como:
- New Relic
- Datadog
- Dynatrace
- Grafana
Configuração de Alertas
Recomenda-se configurar alertas para quando os health checks falharem:
- Alertas de Banco de Dados: Notificação imediata para problemas em conexões de banco
- Alertas de Memória: Alerta quando o uso de memória estiver próximo ao limite
- Alertas de Disco: Alerta quando o espaço em disco estiver abaixo do limite seguro
Uso em Kubernetes
Se estiver usando Kubernetes, você pode integrar esses health checks como Readiness e Liveness Probes:
readinessProbe:
httpGet:
path: /health
port: 8066
initialDelaySeconds: 15
periodSeconds: 30