📊 Monitoring et Surveillance
Guide complet pour le monitoring et la surveillance des services Commerce Tracking.
🔍 Vérification du statut
Commandes de base
# Statut de tous les containers
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}\t{{.Image}}"
# Statut spécifique d'un service
docker-compose -f auth-docker-compose.yml ps
# Vérification des ressources système
docker stats --no-stream
Health Checks automatiques
# Health check de l'API Gateway
curl -f http://localhost:3005/health || echo "❌ Gateway non accessible"
# Health check de la base de données
docker exec freetrade-mysql mysqladmin ping -h localhost -u root -p || echo "❌ MySQL non accessible"
# Health check NATS
docker exec freetrade-nats nats server info || echo "❌ NATS non accessible"
📝 Logs et débogage
Visualisation des logs
# Logs en temps réel d'un service
docker-compose -f auth-docker-compose.yml logs -f
# Logs avec timestamps
docker logs freetrade-auth-service --timestamps
# Logs des 100 dernières lignes
docker logs freetrade-auth-service --tail 100
# Logs d'une période spécifique
docker logs freetrade-auth-service --since "2024-01-15T10:00:00" --until "2024-01-15T11:00:00"
Logs centralisés
# Tous les services avec timestamps
docker-compose -f db-docker-compose.yml -f nats-docker-compose.yml -f auth-docker-compose.yml -f admin-docker-compose.yml -f tradeflow-docker-compose.yml -f model-docker-compose.yml -f gateway-docker-compose.yml logs --timestamps
# Filtrer par niveau de log
docker logs freetrade-gateway-api 2>&1 | grep ERROR
docker logs freetrade-auth-service 2>&1 | grep WARN
Accès aux containers pour débogage
# Accéder au shell d'un service
docker exec -it freetrade-auth-service sh
docker exec -it freetrade-admin-service sh
docker exec -it freetrade-tradeflow-service sh
docker exec -it freetrade-model-service sh
docker exec -it freetrade-gateway-api sh
# Accéder à la base de données
docker exec -it freetrade-mysql mysql -u root -p
# Accéder à NATS CLI
docker exec -it freetrade-nats nats --help
🌐 Points d'accès et interfaces
URLs de monitoring
| Service | URL | Description |
|---|---|---|
| API Gateway | http://localhost:3005 | Point d'entrée principal |
| Health Check | http://localhost:3005/health | Vérification de santé |
| Adminer (DB) | http://localhost:8080 | Interface d'administration DB |
| MySQL Direct | localhost:3340 | Connexion directe à la DB |
| NATS Monitoring | http://localhost:8222 | Interface NATS (si activée) |
Test des endpoints
# Test de l'API Gateway
curl -X GET http://localhost:3005/health \
-H "Content-Type: application/json" \
-w "\nStatus: %{http_code}\nTime: %{time_total}s\n"
# Test d'authentification
curl -X POST http://localhost:3005/auth/login \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"password"}'
# Test des données communes
curl -X GET http://localhost:3005/common-data/countries \
-H "Authorization: Bearer YOUR_TOKEN"
📈 Métriques et performance
Utilisation des ressources
# Métriques en temps réel
docker stats
# Métriques détaillées d'un container
docker exec freetrade-gateway-api cat /proc/meminfo
docker exec freetrade-gateway-api cat /proc/cpuinfo
# Utilisation de l'espace disque
docker system df
docker volume ls
Performance réseau
# Test de latence NATS
docker exec freetrade-gateway-api sh -c "time echo 'test' | nats pub auth_queue"
# Test de connectivité base de données
docker exec freetrade-gateway-api sh -c "time mysql -h freetrade-mysql -u root -p -e 'SELECT 1'"
Métriques applicatives
# Vérifier les connexions actives
docker exec freetrade-gateway-api netstat -an | grep :3005
docker exec freetrade-mysql mysql -u root -p -e "SHOW PROCESSLIST;"
# Vérifier les caches
docker exec freetrade-gateway-api sh -c "echo 'cache_stats' | nats pub cache_queue"
🚨 Alertes et seuils
Script de monitoring automatique
#!/bin/bash
# monitor-services.sh
echo "🔍 Monitoring des services Commerce Tracking"
echo "=============================================="
# Vérifier l'API Gateway
if curl -f http://localhost:3005/health > /dev/null 2>&1; then
echo "✅ API Gateway: OK"
else
echo "❌ API Gateway: ERREUR"
# Envoyer alerte
fi
# Vérifier MySQL
if docker exec freetrade-mysql mysqladmin ping -h localhost -u root -p > /dev/null 2>&1; then
echo "✅ MySQL: OK"
else
echo "❌ MySQL: ERREUR"
fi
# Vérifier NATS
if docker exec freetrade-nats nats server info > /dev/null 2>&1; then
echo "✅ NATS: OK"
else
echo "❌ NATS: ERREUR"
fi
# Vérifier l'utilisation mémoire
MEMORY_USAGE=$(docker stats --no-stream --format "{{.MemUsage}}" freetrade-gateway-api | cut -d'/' -f1 | sed 's/[^0-9.]*//g')
if (( $(echo "$MEMORY_USAGE > 500" | bc -l) )); then
echo "⚠️ Mémoire élevée: ${MEMORY_USAGE}MB"
else
echo "✅ Mémoire: ${MEMORY_USAGE}MB"
fi
echo "=============================================="
Surveillance continue
# Exécuter le monitoring toutes les 5 minutes
watch -n 300 ./monitor-services.sh
# Logs avec rotation automatique
docker-compose -f gateway-docker-compose.yml up -d --log-driver=json-file --log-opt max-size=10m --log-opt max-file=3
🔧 Outils de monitoring avancés
Prometheus (optionnel)
# docker-compose.monitoring.yml
version: '3.8'
services:
prometheus:
image: prom/prometheus
ports:
- "9090:9090"
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--web.console.libraries=/etc/prometheus/console_libraries'
- '--web.console.templates=/etc/prometheus/consoles'
grafana:
image: grafana/grafana
ports:
- "3000:3000"
environment:
- GF_SECURITY_ADMIN_PASSWORD=admin
volumes:
- grafana-storage:/var/lib/grafana
Logs centralisés avec ELK Stack
# docker-compose.logging.yml
version: '3.8'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.14.0
environment:
- discovery.type=single-node
ports:
- "9200:9200"
kibana:
image: docker.elastic.co/kibana/kibana:7.14.0
ports:
- "5601:5601"
environment:
- ELASTICSEARCH_HOSTS=http://elasticsearch:9200
logstash:
image: docker.elastic.co/logstash/logstash:7.14.0
ports:
- "5044:5044"
volumes:
- ./logstash.conf:/usr/share/logstash/pipeline/logstash.conf
📊 Tableaux de bord
Métriques clés à surveiller
| Métrique | Seuil d'alerte | Action |
|---|---|---|
| Temps de réponse API | > 2 secondes | Vérifier les logs |
| Utilisation mémoire | > 80% | Redémarrer le service |
| Utilisation CPU | > 90% | Analyser les performances |
| Erreurs 5xx | > 1% | Investigation immédiate |
| Connexions DB | > 80% du max | Optimiser les requêtes |
| Messages NATS en queue | > 1000 | Vérifier les consommateurs |
Commandes de surveillance
# Surveiller les erreurs en temps réel
docker logs -f freetrade-gateway-api 2>&1 | grep -i error
# Surveiller les performances
watch -n 5 'docker stats --no-stream --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"'
# Surveiller l'espace disque
watch -n 60 'df -h && docker system df'
Note : Un monitoring efficace permet de détecter les problèmes avant qu'ils n'affectent les utilisateurs finaux. Configurez des alertes appropriées selon vos besoins de production.