# 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: ```json { "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`: ```bash npm install @willsoto/nestjs-prometheus prom-client --save ``` E então adicione o PrometheusModule ao HealthModule: ```typescript 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: 1. **Alertas de Banco de Dados**: Notificação imediata para problemas em conexões de banco 2. **Alertas de Memória**: Alerta quando o uso de memória estiver próximo ao limite 3. **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: ```yaml readinessProbe: httpGet: path: /health port: 8066 initialDelaySeconds: 15 periodSeconds: 30 ```