🚨 Troubleshooting
Guide de résolution des problèmes courants lors du déploiement et de l'utilisation de Commerce Tracking.
🔍 Diagnostic général
Vérification de l'état du système
# État général des containers
docker ps -a --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
# Utilisation des ressources
docker stats --no-stream
# Espace disque disponible
df -h
# Mémoire disponible
free -h
# Logs système
journalctl -f
Vérification des dépendances
# Vérifier Docker
docker --version
docker-compose --version
# Vérifier les ports utilisés
netstat -tulpn | grep -E "(3005|3340|4222|8080)"
# Vérifier les processus
ps aux | grep docker
🐳 Problèmes Docker
Container ne démarre pas
# Vérifier les logs détaillés
docker logs freetrade-auth-service --details
# Vérifier la configuration
docker-compose -f auth-docker-compose.yml config
# Tester la configuration
docker-compose -f auth-docker-compose.yml config --quiet
Solutions courantes :
- Vérifier les variables d'environnement
- S'assurer que les ports ne sont pas déjà utilisés
- Vérifier l'espace disque disponible
- Redémarrer Docker daemon
Erreur de build
# Nettoyer le cache Docker
docker system prune -a
# Rebuild sans cache
docker-compose -f auth-docker-compose.yml build --no-cache
# Vérifier les layers Docker
docker history freetrade-auth-service
Problème de réseau
# Vérifier les réseaux Docker
docker network ls
docker network inspect bridge
# Tester la connectivité entre containers
docker exec freetrade-auth-service ping freetrade-mysql
docker exec freetrade-auth-service ping freetrade-nats
# Recréer le réseau
docker-compose -f auth-docker-compose.yml down
docker network prune
docker-compose -f auth-docker-compose.yml up -d
🗄️ Problèmes de base de données
MySQL ne démarre pas
# Vérifier les logs MySQL
docker logs freetrade-mysql
# Vérifier les volumes
docker volume ls | grep mysql
docker volume inspect freetrade_mysql_data
# Vérifier les permissions
docker exec freetrade-mysql ls -la /var/lib/mysql
Solutions :
# Redémarrer MySQL
docker-compose -f db-docker-compose.yml restart
# Réinitialiser la base de données
docker-compose -f db-docker-compose.yml down -v
docker-compose -f db-docker-compose.yml up -d
# Vérifier la configuration
docker exec freetrade-mysql mysql -u root -p -e "SHOW VARIABLES LIKE 'max_connections';"
Erreurs de connexion à la base
# Tester la connexion
docker exec freetrade-mysql mysql -u root -p -e "SELECT 1;"
# Vérifier les utilisateurs
docker exec freetrade-mysql mysql -u root -p -e "SELECT User, Host FROM mysql.user;"
# Vérifier les permissions
docker exec freetrade-mysql mysql -u root -p -e "SHOW GRANTS FOR 'tradeflow_user'@'%';"
Base de données corrompue
# Vérifier l'intégrité
docker exec freetrade-mysql mysqlcheck -u root -p --all-databases
# Réparer si nécessaire
docker exec freetrade-mysql mysqlcheck -u root -p --repair --all-databases
# Restaurer depuis une sauvegarde
docker exec -i freetrade-mysql mysql -u root -p tradeflow_db < backup.sql
📡 Problèmes NATS
NATS ne démarre pas
# Vérifier les logs NATS
docker logs freetrade-nats
# Vérifier la configuration
docker exec freetrade-nats nats server info
# Tester la connectivité
telnet localhost 4222
Solutions :
# Redémarrer NATS
docker-compose -f nats-docker-compose.yml restart
# Vérifier les permissions
docker exec freetrade-nats ls -la /etc/nats
# Nettoyer et redémarrer
docker-compose -f nats-docker-compose.yml down
docker-compose -f nats-docker-compose.yml up -d
Erreurs de communication NATS
# Tester la publication
docker exec freetrade-gateway-api sh -c "echo 'test' | nats pub test_queue"
# Tester la souscription
docker exec freetrade-auth-service sh -c "timeout 5 nats sub test_queue"
# Vérifier les connexions
docker exec freetrade-nats nats server report connections
Messages bloqués
# Vérifier les queues
docker exec freetrade-nats nats server report subscriptions
# Purger les messages
docker exec freetrade-nats nats stream purge STREAM_NAME
# Redémarrer les services consommateurs
docker-compose -f auth-docker-compose.yml restart
🌐 Problèmes API Gateway
Gateway non accessible
# Vérifier les logs
docker logs freetrade-gateway-api
# Tester la connectivité locale
curl -v http://localhost:3005/health
# Vérifier les ports
netstat -tulpn | grep 3005
Solutions :
# Redémarrer le Gateway
docker-compose -f gateway-docker-compose.yml restart
# Vérifier les variables d'environnement
docker exec freetrade-gateway-api env | grep -E "(PORT|NATS|DATABASE)"
# Rebuild le Gateway
docker-compose -f gateway-docker-compose.yml up --build -d
Erreurs 500/502/503
# Vérifier les logs détaillés
docker logs freetrade-gateway-api --tail 100
# Vérifier la connectivité aux microservices
docker exec freetrade-gateway-api sh -c "echo 'health_check' | nats pub auth_queue"
# Vérifier la base de données
docker exec freetrade-gateway-api sh -c "mysql -h freetrade-mysql -u root -p -e 'SELECT 1'"
Problèmes d'authentification
# Tester l'endpoint de login
curl -X POST http://localhost:3005/auth/login \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"password"}'
# Vérifier les tokens JWT
docker exec freetrade-gateway-api sh -c "echo 'token_validation' | nats pub auth_queue"
# Vérifier la configuration JWT
docker exec freetrade-gateway-api env | grep JWT
🔧 Problèmes de services individuels
Auth Service
# Vérifier les logs
docker logs freetrade-auth-service
# Tester la connexion DB
docker exec freetrade-auth-service sh -c "mysql -h freetrade-mysql -u root -p -e 'USE tradeflow_db; SELECT COUNT(*) FROM users;'"
# Tester NATS
docker exec freetrade-auth-service sh -c "echo 'test_auth' | nats pub auth_queue"
Admin Service
# Vérifier les logs
docker logs freetrade-admin-service
# Tester les permissions
docker exec freetrade-admin-service sh -c "echo 'admin_check' | nats pub admin-service"
TradeFlow Service
# Vérifier les logs
docker logs freetrade-tradeflow-service
# Tester les collections
docker exec freetrade-tradeflow-service sh -c "echo 'collection_test' | nats pub tradeflow_queue"
Model Service
# Vérifier les logs
docker logs freetrade-model-service
# Tester les modèles
docker exec freetrade-model-service sh -c "echo 'model_test' | nats pub model_queue"
🚨 Problèmes de performance
Lenteur générale
# Vérifier l'utilisation des ressources
docker stats
# Vérifier les connexions DB
docker exec freetrade-mysql mysql -u root -p -e "SHOW PROCESSLIST;"
# Vérifier les logs d'erreur
docker logs freetrade-gateway-api 2>&1 | grep -i error | tail -20
Solutions :
# Optimiser MySQL
docker exec freetrade-mysql mysql -u root -p -e "SET GLOBAL max_connections=200;"
docker exec freetrade-mysql mysql -u root -p -e "SET GLOBAL innodb_buffer_pool_size=256M;"
# Redémarrer avec plus de ressources
docker-compose -f gateway-docker-compose.yml down
docker-compose -f gateway-docker-compose.yml up -d --scale gateway-api=2
Fuites mémoire
# Surveiller la mémoire
watch -n 5 'docker stats --no-stream --format "table {{.Name}}\t{{.MemUsage}}"'
# Redémarrer les services gourmands
docker-compose -f gateway-docker-compose.yml restart
docker-compose -f auth-docker-compose.yml restart
📋 Checklist de diagnostic
Diagnostic rapide
- Tous les containers sont en cours d'exécution (
docker ps) - API Gateway répond (
curl http://localhost:3005/health) - Base de données accessible (
docker exec freetrade-mysql mysqladmin ping) - NATS fonctionne (
docker exec freetrade-nats nats server info) - Aucune erreur dans les logs récents
- Ressources système suffisantes (mémoire, CPU, disque)
Diagnostic approfondi
- Logs détaillés de tous les services
- Test de connectivité entre services
- Vérification des variables d'environnement
- Test des endpoints API
- Vérification de l'intégrité de la base de données
- Analyse des performances réseau
🆘 Escalade et support
Informations à collecter pour le support
# Script de collecte d'informations
#!/bin/bash
echo "=== DIAGNOSTIC COMMERCE TRACKING ===" > diagnostic.txt
echo "Date: $(date)" >> diagnostic.txt
echo "" >> diagnostic.txt
echo "=== DOCKER STATUS ===" >> diagnostic.txt
docker ps -a >> diagnostic.txt
echo "" >> diagnostic.txt
echo "=== SYSTEM RESOURCES ===" >> diagnostic.txt
docker stats --no-stream >> diagnostic.txt
echo "" >> diagnostic.txt
echo "=== RECENT LOGS ===" >> diagnostic.txt
docker logs freetrade-gateway-api --tail 50 >> diagnostic.txt
docker logs freetrade-auth-service --tail 50 >> diagnostic.txt
echo "" >> diagnostic.txt
echo "=== NETWORK TEST ===" >> diagnostic.txt
curl -s http://localhost:3005/health >> diagnostic.txt
echo "" >> diagnostic.txt
echo "Diagnostic sauvegardé dans diagnostic.txt"
Contacts support
- 📧 Email : support@ofr.gov
- 📞 Urgences : +1-XXX-XXX-XXXX
- 📖 Documentation : Cette documentation complète
- 🐛 Issues : GitHub Issues du projet
Note : En cas de problème critique, arrêtez tous les services avec docker-compose down et redémarrez selon la procédure de déploiement manuel.