146 lines
3.3 KiB
Markdown
146 lines
3.3 KiB
Markdown
# 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
|
|
``` |