Aller au contenu principal

📊 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

ServiceURLDescription
API Gatewayhttp://localhost:3005Point d'entrée principal
Health Checkhttp://localhost:3005/healthVérification de santé
Adminer (DB)http://localhost:8080Interface d'administration DB
MySQL Directlocalhost:3340Connexion directe à la DB
NATS Monitoringhttp://localhost:8222Interface 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étriqueSeuil d'alerteAction
Temps de réponse API> 2 secondesVé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 maxOptimiser les requêtes
Messages NATS en queue> 1000Vé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.