heath impl

This commit is contained in:
JurTI-BR
2025-04-02 19:31:13 -03:00
parent 15bb11fc4c
commit 8ba6f345c7
32 changed files with 2620 additions and 395 deletions

146
health-check.md Normal file
View File

@@ -0,0 +1,146 @@
# 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
```