Skip to content

Monitoramento

O sistema não tem uma stack de monitoramento dedicada (sem Prometheus, Grafana, Datadog). O monitoramento é manual via logs e health checks.

Health checks

Backend

bash
# Verificar se o backend está respondendo
curl -f http://localhost:3001/health

# Resposta esperada:
# {"status":"ok","timestamp":"..."}

Frontend

bash
# Verificar se o frontend está respondendo
curl -so /dev/null -w '%{http_code}' http://localhost:3000
# Esperado: 200

Containers

bash
# Status de todos
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Image}}" | grep crm-galdix

# Health check interno do Docker
docker inspect crm-galdix-postgres-1 | grep -A 5 '"Health"'
docker inspect crm-galdix-redis-1 | grep -A 5 '"Health"'

Logs

Logs em tempo real

bash
# Backend
docker logs crm-galdix-backend-1 -f

# Frontend
docker logs crm-galdix-frontend-1 -f

# PostgreSQL
docker logs crm-galdix-postgres-1 -f

# Últimas 100 linhas do backend
docker logs crm-galdix-backend-1 --tail 100

Logs persistidos

O backend salva logs em arquivo além do stdout:

bash
# Logs salvos em disco
ls -lh /home/crm/logs/backend/

# Ver logs de hoje
tail -f /home/crm/logs/backend/$(date +%Y-%m-%d).log

Logs de auditoria via API

bash
# Últimas ações no sistema
GET /audit/logs?startDate=2026-05-20&endDate=2026-05-24

# Filtrar por usuário
GET /audit/logs?userId=user-uuid&startDate=...

# Filtrar por tipo de ação
GET /audit/logs?actionType=CAMPAIGN_SENT

Jobs e filas

BullBoard (interface web)

Se ENABLE_BULLBOARD=true, a interface fica disponível em:

https://apicrm.galdix.com.br/admin/queues

Protegida por AdminGuard (Super Admin nível 0 apenas).

Verificar jobs com falha via API

bash
# Jobs que falharam
GET /admin/queue/failed

# Retry de jobs com falha
POST /admin/queue/retry-failed

Verificar jobs pelo Redis

bash
# Conectar no Redis
docker exec -it crm-galdix-redis-1 redis-cli -a $REDIS_PASSWORD

# Ver filas
KEYS bull:*
LLEN bull:whatsapp-send:failed
LLEN bull:email-send:failed

Métricas de campanha

bash
# Status de uma campanha
GET /campaigns/:id

# Retorna:
{
  "sent": 1250,
  "delivered": 1243,
  "reads": 892,
  "replies": 45,
  "clicks": 312,
  "conversions": 28,
  "revenue": 15420.00,
  "failed": 7,
  "skipped": 3
}

Sync ERP

bash
# Histórico de syncs
GET /erp/sync/history

# Triggerar sync manual
POST /erp/sync/trigger
{ "startDate": "2026-05-01", "endDate": "2026-05-23" }

Alertas recomendados

Não há sistema de alertas automático. Recomendações para implementação futura:

EventoThresholdCanal sugerido
Backend não responde em /health> 30sEmail / Telegram
Jobs com falha acumulando> 50 jobsEmail
Disco do servidor> 80%Email
RAM do servidor> 85%Email
Sync ERP sem completar> 24hEmail

Diagnóstico rápido

bash
# Uso de disco
df -h

# Uso de memória pelos containers
docker stats --no-stream | grep crm-galdix

# Conexões PostgreSQL ativas
docker exec crm-galdix-postgres-1 \
  psql -U $POSTGRES_USER -d $POSTGRES_DB \
  -c "SELECT count(*) FROM pg_stat_activity WHERE state = 'active';"

# Tamanho do banco
docker exec crm-galdix-postgres-1 \
  psql -U $POSTGRES_USER -d $POSTGRES_DB \
  -c "SELECT pg_size_pretty(pg_database_size('$POSTGRES_DB'));"

Documentação interna — Galdix CRM