Files
portalweb-api/health-check.md
2025-04-02 19:31:13 -03:00

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:

  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:

readinessProbe:
  httpGet:
    path: /health
    port: 8066
  initialDelaySeconds: 15
  periodSeconds: 30