Aller au contenu principal

🚨 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.