O endpoint de health check fornece informações sobre o status de todos os componentes da aplicação, incluindo banco de dados, Redis, Evolution API e outros serviços.
Visão Geral
Este endpoint é fornecido pelo Spring Boot Actuator e permite monitorar a saúde da aplicação. Útil para:
Monitoramento - Sistemas de monitoramento podem verificar se a API está funcionando
Load Balancers - Verificar se a instância está saudável
Containers - Health checks do Docker/Kubernetes
Debugging - Identificar componentes com problemas
Endpoint Público
Este endpoint não requer autenticação e está disponível publicamente.
curl -X GET https://api.disparador.com/actuator/health
Response
Status geral da aplicação
UP
- Todos os componentes funcionando
DOWN
- Um ou mais componentes com problemas
OUT_OF_SERVICE
- Aplicação fora de serviço
UNKNOWN
- Status não determinado
Status individual de cada componente Show Componentes monitorados
Status do banco de dados PostgreSQL
Status do cache Redis (implementação customizada)
Status da conexão com Evolution API Show Detalhes Evolution API
activeConfigurations
- Número de configurações ativas
status
- connected/disconnected/no active configurations
testedInstance
- Nome da instância testada
connectionError
- Erro de conexão (se houver)
Status do espaço em disco
Status básico da aplicação
200 - Sistema Saudável
503 - Sistema com Problemas
{
"status" : "UP" ,
"components" : {
"db" : {
"status" : "UP" ,
"details" : {
"database" : "PostgreSQL" ,
"validationQuery" : "SELECT 1"
}
},
"redis" : {
"status" : "UP" ,
"details" : {
"response" : "PONG"
}
},
"evolutionApi" : {
"status" : "UP" ,
"details" : {
"service" : "Evolution API" ,
"activeConfigurations" : 2 ,
"status" : "connected" ,
"testedInstance" : "WhatsApp Principal"
}
},
"diskSpace" : {
"status" : "UP" ,
"details" : {
"total" : 107374182400 ,
"free" : 53687091200 ,
"threshold" : 10485760 ,
"path" : "/" ,
"exists" : true
}
},
"ping" : {
"status" : "UP"
}
}
}
Detalhes dos Componentes
Database (db)
Verifica conexão com PostgreSQL
Executa query de validação
Retorna DOWN
se não conseguir conectar
Redis
Implementação customizada que executa comando PING
Verifica se a resposta é “PONG”
Retorna DOWN
se Redis estiver inacessível
Evolution API
Verifica conexão com as instâncias configuradas
Testa a primeira configuração ativa encontrada
Retorna UP
mesmo sem configurações ativas
Inclui detalhes sobre configurações e status de conexão
Disk Space
Verifica espaço disponível em disco
threshold
: Espaço mínimo necessário (10MB)
Retorna DOWN
se espaço livre < threshold
Ping
Verificação básica se a aplicação está respondendo
Sempre retorna UP
se a aplicação estiver rodando
Códigos HTTP
Código Status Descrição 200 UP Todos os componentes funcionando 503 DOWN Um ou mais componentes com problemas 503 OUT_OF_SERVICE Aplicação em manutenção
Monitoramento Automatizado
// Script de monitoramento com verificação de Evolution API
async function monitorHealth () {
const healthUrl = 'https://api.disparador.com/actuator/health' ;
const alertWebhook = 'https://seu-webhook.com/alerts' ;
try {
const response = await fetch ( healthUrl );
const health = await response . json ();
if ( health . status !== 'UP' ) {
// Identificar componentes com problema
const problemComponents = Object . entries ( health . components )
. filter (([ _ , component ]) => component . status !== 'UP' )
. map (([ name , component ]) => ({
name ,
status: component . status ,
error: component . details ?. error
}));
// Enviar alerta detalhado
await fetch ( alertWebhook , {
method: 'POST' ,
headers: { 'Content-Type' : 'application/json' },
body: JSON . stringify ({
service: 'API Disparador' ,
status: health . status ,
problemComponents ,
timestamp: new Date (). toISOString ()
})
});
console . error ( '⚠️ API com problemas:' , problemComponents );
}
} catch ( error ) {
console . error ( '❌ API inacessível:' , error );
}
}
// Verificar a cada minuto
setInterval ( monitorHealth , 60000 );
# docker-compose.yml
services:
api:
image: disparador-api:latest
healthcheck:
test: [ "CMD" , "curl" , "-f" , "http://localhost/actuator/health" ]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
# deployment.yaml
apiVersion : apps/v1
kind : Deployment
spec :
template :
spec :
containers :
- name : api
livenessProbe :
httpGet :
path : /actuator/health
port : 80
initialDelaySeconds : 30
periodSeconds : 10
readinessProbe :
httpGet :
path : /actuator/health
port : 80
initialDelaySeconds : 5
periodSeconds : 5
Verificação de Componentes Específicos
// Verificar apenas Evolution API
async function checkEvolutionApi () {
const response = await fetch ( 'https://api.disparador.com/actuator/health' );
const health = await response . json ();
const evolutionStatus = health . components ?. evolutionApi ;
if ( evolutionStatus ?. status === 'DOWN' ) {
console . error ( 'Evolution API com problemas:' , evolutionStatus . details );
// Verificar se é problema de configuração
if ( evolutionStatus . details ?. activeConfigurations === 0 ) {
console . log ( 'Nenhuma configuração Evolution ativa' );
}
}
}
Boas Práticas
Frequência Não verificar mais de 1x por minuto em produção
Timeouts Configure timeout de 10 segundos para evitar travamentos
Alertas Configure alertas apenas para falhas consecutivas
Logs Registre mudanças de status para análise