Troubleshooting

🔧 Troubleshooting - C-Suite Ecosystem

Guia rápido de resolução de problemas comuns no ecossistema C-Suite.


🚨 Problemas Críticos

Serviço não inicia

Sintomas:
- Serviço não aparece em docker service ls
- Status 0/1 ou 0/N replicas
- Logs mostram erro de inicialização

Soluções:

# 1. Verificar logs do serviço
docker service logs -f <service_name>

# 2. Verificar configuração do stack
docker stack ps <stack_name> --no-trunc

# 3. Verificar recursos disponíveis
docker node ls
docker system df

# 4. Reiniciar serviço
docker service update --force <service_name>

Causas comuns:
- Variáveis de ambiente faltando
- Secrets não configurados
- Porta já em uso
- Memória insuficiente
- Imagem Docker não encontrada


Erro de conexão com banco de dados

Sintomas:
- Connection refused ou Access denied
- Timeout ao conectar
- Can't connect to MySQL server

Soluções:

# 1. Verificar se o MySQL está rodando
docker service ls | grep mysql
docker service logs mysql

# 2. Testar conexão
mysql -h $CSUITE_DB_HOST -P $CSUITE_DB_PORT -u $CSUITE_DB_USER -p

# 3. Verificar variáveis de ambiente
docker service inspect <service_name> | grep -A 10 Env

# 4. Verificar secrets
docker secret ls
docker secret inspect <secret_name>

Causas comuns:
- Credenciais incorretas
- Host/porta errados
- Firewall bloqueando
- MySQL não está rodando
- Secret não montado corretamente


Traefik não roteia corretamente

Sintomas:
- 404 Not Found em URLs corretas
- Redirecionamento incorreto
- Certificado SSL inválido

Soluções:

# 1. Verificar labels Traefik
docker service inspect <service_name> | grep -A 20 Labels

# 2. Verificar logs do Traefik
docker service logs -f traefik

# 3. Verificar regras de roteamento
# Acesse: https://traefik.internut.com.br (se configurado)

# 4. Verificar prioridades
# Serviços com prioridade maior são avaliados primeiro

Causas comuns:
- Labels Traefik faltando ou incorretos
- Prioridade muito baixa (outro serviço intercepta)
- PathPrefix não configurado corretamente
- Certificado Let's Encrypt não gerado


⚠️ Problemas de Performance

Serviço lento ou timeout

Sintomas:
- Respostas lentas (> 5s)
- Timeouts frequentes
- Alta utilização de CPU/memória

Soluções:

# 1. Verificar recursos do container
docker stats <container_id>

# 2. Verificar logs de queries lentas
# (se slow query log habilitado no MySQL)

# 3. Escalar serviço
docker service scale <service_name>=N

# 4. Verificar índices do banco
# Executar: scripts/analyze_database_indexes.py

Causas comuns:
- Queries sem índices
- Falta de cache
- Recursos insuficientes
- Conexões de banco esgotadas
- Processamento síncrono pesado


Alta utilização de memória

Sintomas:
- Containers sendo mortos (OOM)
- Sistema lento
- Out of memory nos logs

Soluções:

# 1. Verificar uso de memória
docker stats --no-stream

# 2. Verificar limites de memória
docker service inspect <service_name> | grep -i memory

# 3. Ajustar limites no docker-stack.yml
deploy:
  resources:
    limits:
      memory: 512M
    reservations:
      memory: 256M

# 4. Reiniciar serviços com vazamento
docker service update --force <service_name>

🔐 Problemas de Autenticação

Login não funciona

Sintomas:
- 401 Unauthorized
- Invalid credentials
- Token não aceito

Soluções:

# 1. Verificar se csuite-auth está rodando
docker service ls | grep csuite-auth
curl https://csuite.internut.com.br/auth/health

# 2. Verificar logs
docker service logs -f csuite-auth_csuite-auth-api

# 3. Testar login diretamente
curl -X POST https://csuite.internut.com.br/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email":"test@example.com","password":"senha"}'

# 4. Verificar JWT_SECRET_KEY
docker service inspect csuite-auth_csuite-auth-api | grep JWT_SECRET

Causas comuns:
- csuite-auth não está rodando
- JWT_SECRET_KEY diferente entre serviços
- Token expirado
- Usuário não existe no banco


Endpoint protegido retorna 401

Sintomas:
- Endpoint retorna 401 mesmo com token
- Token invalid ou Token expired

Soluções:

# 1. Verificar token no JWT.io
# https://jwt.io

# 2. Verificar se AUTH_ENABLED=true
docker service inspect <service_name> | grep AUTH_ENABLED

# 3. Verificar AUTH_SERVICE_URL
docker service inspect <service_name> | grep AUTH_SERVICE_URL

# 4. Testar validação de token
curl https://csuite.internut.com.br/auth/validate \
  -H "Authorization: Bearer <token>"

📊 Problemas de Observabilidade

Grafana não mostra dados

Sintomas:
- Dashboards vazios
- "No data" em todos os painéis
- Datasource não conecta

Soluções:

# 1. Verificar se Prometheus está rodando
docker service ls | grep prometheus
curl http://prometheus:9090/-/healthy

# 2. Verificar datasource no Grafana
# Acesse: https://grafana.internut.com.br
# Configuration → Data Sources → Prometheus

# 3. Verificar se métricas estão sendo coletadas
curl http://prometheus:9090/api/v1/query?query=up

# 4. Verificar configuração do Prometheus
docker exec $(docker ps -q -f name=prometheus) cat /etc/prometheus/prometheus.yml

Logs não aparecem no Kibana

Sintomas:
- Kibana vazio
- Index pattern não encontra dados
- Filebeat não coleta logs

Soluções:

# 1. Verificar se ELK stack está rodando
docker service ls | grep elk

# 2. Verificar logs do Filebeat
docker service logs -f elk_filebeat

# 3. Verificar Elasticsearch
curl http://elasticsearch:9200/_cat/indices

# 4. Verificar Logstash
docker service logs -f elk_logstash

# 5. Verificar index pattern no Kibana
# Management → Index Patterns → csuite-logs-*

🐳 Problemas Docker

Container não inicia

Sintomas:
- Status Exited ou Restarting
- Cannot connect to Docker daemon

Soluções:

# 1. Verificar logs
docker logs <container_id>

# 2. Verificar Docker daemon
sudo systemctl status docker

# 3. Reiniciar Docker (cuidado!)
sudo systemctl restart docker

# 4. Verificar espaço em disco
df -h
docker system df

Volume não monta

Sintomas:
- Volume not found
- Dados não persistem
- Permissões negadas

Soluções:

# 1. Verificar se volume existe
docker volume ls
docker volume inspect <volume_name>

# 2. Criar volume se não existir
docker volume create <volume_name>

# 3. Verificar permissões
docker volume inspect <volume_name> | grep Mountpoint
sudo ls -la <mountpoint>

# 4. Verificar paths no docker-stack.yml

🔄 Problemas de Deploy

Stack não faz deploy

Sintomas:
- docker stack deploy falha
- service not found
- network not found

Soluções:

# 1. Verificar sintaxe YAML
docker stack config <docker-stack.yml>

# 2. Verificar rede
docker network ls | grep superbot-swarm-network
docker network create --driver overlay superbot-swarm-network

# 3. Verificar secrets
docker secret ls
docker secret create <secret_name> <file>

# 4. Verificar variáveis de ambiente
# Certifique-se de que todas as variáveis necessárias estão definidas

📝 Comandos Úteis

Diagnóstico Rápido

# Status de todos os serviços
docker service ls

# Logs de um serviço
docker service logs -f <service_name>

# Recursos do sistema
docker stats --no-stream

# Espaço em disco
docker system df

# Limpar recursos não utilizados
docker system prune -a

# Verificar saúde do Swarm
docker node ls
docker info

Reset Completo (Cuidado!)

# ⚠️ ATENÇÃO: Isso remove TODOS os serviços!
docker stack rm $(docker stack ls --format "{{.Name}}")

# Limpar tudo
docker system prune -a --volumes

📞 Suporte

Coletar Informações para Debug

# Script de diagnóstico
cat > /tmp/diagnose.sh << 'EOF'
#!/bin/bash
echo "=== Docker Swarm Status ==="
docker node ls
echo ""
echo "=== Services ==="
docker service ls
echo ""
echo "=== System Resources ==="
docker stats --no-stream
echo ""
echo "=== Disk Usage ==="
docker system df
echo ""
echo "=== Networks ==="
docker network ls
echo ""
echo "=== Volumes ==="
docker volume ls
EOF

chmod +x /tmp/diagnose.sh
/tmp/diagnose.sh > diagnose_output.txt


Última atualização: 2025-12-06

🔊 Text-to-Speech

1.0x
1.0
Pronto para reproduzir