#!/bin/bash # Script de synchronisation de la configuration de monitoring # Usage: ./scripts/sync-monitoring-config.sh set -e # Couleurs pour les messages GREEN='\033[0;32m' BLUE='\033[0;34m' YELLOW='\033[1;33m' NC='\033[0m' # No Color log_info() { echo -e "${BLUE}ℹ️ $1${NC}" } log_success() { echo -e "${GREEN}✅ $1${NC}" } log_warning() { echo -e "${YELLOW}⚠️ $1${NC}" } log_info "🔄 Synchronisation de la configuration de monitoring..." # Créer la structure de dossiers log_info "Création de la structure de dossiers..." mkdir -p conf/{grafana/{provisioning/{datasources,dashboards},dashboards},promtail,logrotate,nginx} mkdir -p logs/{bitcoin,blindbit,sdk_relaysdk_storagelecoffre-front,ihm_client,tor,miner,nginx} # Copier la configuration Nginx si elle n'existe pas if [ ! -f "conf/nginx/grafana.conf" ]; then log_info "Création de la configuration Nginx pour Grafana..." cat > conf/nginx/grafana.conf << 'EOF' # Configuration Nginx pour Grafana server { listen 80; server_name dev4.4nkweb.com; # Proxy pour Grafana location /grafana/ { proxy_pass http://127.0.0.1:3000/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # Configuration spécifique pour Grafana proxy_set_header X-Grafana-Org-Id 1; # Support des WebSockets pour les live updates proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; # Timeouts proxy_connect_timeout 60s; proxy_send_timeout 60s; proxy_read_timeout 60s; # Buffer settings proxy_buffering off; proxy_request_buffering off; } # Proxy pour Loki (API) location /loki/ { proxy_pass http://127.0.0.1:3100/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # CORS pour les requêtes depuis Grafana add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Methods "GET, POST, OPTIONS"; add_header Access-Control-Allow-Headers "Content-Type, Authorization"; if ($request_method = 'OPTIONS') { return 204; } } } EOF log_success "Configuration Nginx créée" fi # Créer des fichiers de log de test pour chaque service log_info "Création des fichiers de log de test..." for service in bitcoin blindbit sdk_relaysdk_storage lecoffre-front ihm_client tor miner nginx; do log_file="logs/${service}/${service}.log" if [ ! -f "$log_file" ]; then echo "$(date): Test log entry for ${service}" > "$log_file" echo "$(date): Service ${service} started successfully" >> "$log_file" log_success "Créé: $log_file" else log_warning "Existe déjà: $log_file" fi done # Vérifier que tous les fichiers de configuration Grafana existent log_info "Vérification des fichiers de configuration Grafana..." required_grafana_files=( "conf/grafana/provisioning/datasources/loki.yml" "conf/grafana/provisioning/dashboards/dashboards.yml" "conf/grafana/grafana.ini" "conf/grafana/dashboards/lecoffre-overview.json" "conf/grafana/dashboards/bitcoin-miner.json" "conf/grafana/dashboards/services-overview.json" "conf/promtail/promtail.yml" ) missing_files=() for file in "${required_grafana_files[@]}"; do if [ ! -f "$file" ]; then missing_files+=("$file") fi done if [ ${#missing_files[@]} -gt 0 ]; then log_warning "Fichiers de configuration manquants:" for file in "${missing_files[@]}"; do echo " - $file" done log_warning "Exécutez d'abord: ./scripts/setup-logs.sh" else log_success "Tous les fichiers de configuration Grafana sont présents" fi # Créer un fichier de configuration de monitoring central log_info "Création du fichier de configuration central..." cat > conf/monitoring.conf << 'EOF' # Configuration centralisée du monitoring LeCoffre Node # Généré automatiquement le $(date) [monitoring] # Services de monitoring grafana_port=3000 loki_port=3100 promtail_enabled=true [grafana] admin_user=admin admin_password=admin123 root_url=https://dev4.4nkweb.com/grafana/ dashboard_home=lecoffre-overview [logs] # Configuration des logs log_retention_days=30 log_rotation=daily log_compression=true [services] # Services surveillés services=bitcoin,blindbit,sdk_relaysdk_storagelecoffre-front,ihm_client,tor,miner [alerts] # Configuration des alertes error_threshold=10 warning_threshold=5 alert_email= EOF log_success "Configuration centralisée créée: conf/monitoring.conf" # Créer un script de test de connectivité log_info "Création du script de test de connectivité..." cat > scripts/test-monitoring.sh << 'EOF' #!/bin/bash # Script de test de connectivité pour le monitoring set -e echo "🔍 Test de connectivité du monitoring..." # Test Grafana echo "Test Grafana..." if curl -s http://localhost:3000/api/health >/dev/null 2>&1; then echo "✅ Grafana: OK" else echo "❌ Grafana: Non accessible" fi # Test Loki echo "Test Loki..." if curl -s http://localhost:3100/ready >/dev/null 2>&1; then echo "✅ Loki: OK" else echo "❌ Loki: Non accessible" fi # Test Promtail echo "Test Promtail..." if docker ps --format "table {{.Names}}" | grep -q "promtail"; then echo "✅ Promtail: En cours d'exécution" else echo "❌ Promtail: Arrêté" fi echo "🎉 Tests terminés!" EOF chmod +x scripts/test-monitoring.sh log_success "Script de test créé: scripts/test-monitoring.sh" log_success "🔄 Synchronisation terminée!" echo "" echo "📋 Prochaines étapes:" echo "1. Tester la connectivité: ./scripts/test-monitoring.sh" echo "2. Démarrer le monitoring: ./scripts/deploy-grafana.sh start" echo "3. Accéder à Grafana: https://dev4.4nkweb.com/grafana/" echo "" echo "🔗 URLs d'accès:" echo " - Grafana: https://dev4.4nkweb.com/grafana/" echo " - Loki API: https://dev4.4nkweb.com/loki/" echo " - Configuration: conf/monitoring.conf"