Tema
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: 200Containers
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 100Logs 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).logLogs 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_SENTJobs e filas
BullBoard (interface web)
Se ENABLE_BULLBOARD=true, a interface fica disponível em:
https://apicrm.galdix.com.br/admin/queuesProtegida 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-failedVerificar 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:failedMé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:
| Evento | Threshold | Canal sugerido |
|---|---|---|
Backend não responde em /health | > 30s | Email / Telegram |
| Jobs com falha acumulando | > 50 jobs | |
| Disco do servidor | > 80% | |
| RAM do servidor | > 85% | |
| Sync ERP sem completar | > 24h |
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'));"