lecoffre_node/scripts/sync-monitoring-config.sh

221 lines
6.2 KiB
Bash
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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"