#!/bin/bash set -e echo "🔍 Surveillance de la synchronisation entre 3 relais" echo "==================================================" echo "" # Fonction pour vérifier si Bitcoin Core a terminé l'IBD check_bitcoin_ready() { local bitcoin_status=$(docker exec bitcoin-signet bitcoin-cli -signet getblockchaininfo 2>/dev/null | grep -o '"initialblockdownload":false' || echo "still_downloading") if [[ "$bitcoin_status" == "still_downloading" ]]; then return 1 else return 0 fi } # Fonction pour afficher les logs de synchronisation show_sync_logs() { echo "📡 Logs de synchronisation des relais :" echo "----------------------------------------" for i in {1..3}; do echo "🔸 Relais $i :" docker logs sdk_relay_$i 2>&1 | grep -E "(🧪|📊|🏥|📈|🔄|🎉|❌|Relay|Sync|Mesh|Topology|🔍|✅|discover|relay)" | tail -3 || echo " Aucun message de synchronisation trouvé" echo "" done } # Fonction pour vérifier la connectivité entre relais check_relay_connectivity() { echo "🌐 Vérification de la connectivité entre relais :" echo "------------------------------------------------" for i in {1..3}; do echo "🔸 Relais $i (port $((8090 + i - 1))) :" if curl -s http://localhost:$((8090 + i - 1)) >/dev/null 2>&1; then echo " ✅ Port WebSocket accessible" else echo " ❌ Port WebSocket non accessible" fi done echo "" } # Fonction pour afficher les métriques de synchronisation show_sync_metrics() { echo "📊 Métriques de synchronisation :" echo "--------------------------------" for i in {1..3}; do echo "🔸 Relais $i :" docker logs sdk_relay_$i 2>&1 | grep -E "(SyncMetrics|known_relays|mesh_connections|sync_cache)" | tail -2 || echo " Aucune métrique trouvée" echo "" done } # Attendre que Bitcoin Core soit prêt echo "⏳ Attente que Bitcoin Core termine le téléchargement initial..." while ! check_bitcoin_ready; do echo " Bitcoin Core télécharge encore les blocs..." sleep 30 done echo "✅ Bitcoin Core est prêt !" echo "" # Attendre un peu pour que les relais se stabilisent echo "⏳ Attente de stabilisation des relais..." sleep 10 # Boucle de surveillance echo "🚀 Démarrage de la surveillance de synchronisation..." echo "Appuyez sur Ctrl+C pour arrêter" echo "" while true; do clear echo "🔍 Surveillance de la synchronisation entre 3 relais" echo "==================================================" echo "⏰ $(date)" echo "" # Vérifier la connectivité check_relay_connectivity # Afficher les logs de synchronisation show_sync_logs # Afficher les métriques show_sync_metrics echo "🔄 Actualisation dans 30 secondes..." sleep 30 done