221 lines
6.2 KiB
Bash
Executable File
221 lines
6.2 KiB
Bash
Executable File
#!/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"
|