173 lines
5.5 KiB
Bash
Executable File
173 lines
5.5 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Script de test des dashboards Grafana
|
|
# Vérifie que tous les dashboards sont accessibles et fonctionnels
|
|
|
|
set -e
|
|
|
|
echo "🔍 Test des Dashboards Grafana LeCoffre Node"
|
|
echo "============================================="
|
|
|
|
GRAFANA_URL="https://dev4.4nkweb.com/grafana"
|
|
ADMIN_USER="admin"
|
|
ADMIN_PASS="Fuy8ZfxQI2xdSdoB8wsGxNjyU"
|
|
|
|
# Fonction pour tester un dashboard
|
|
test_dashboard() {
|
|
local dashboard_title="$1"
|
|
local dashboard_uid="$2"
|
|
|
|
echo "📊 Test du dashboard: $dashboard_title"
|
|
|
|
# Vérifier que le dashboard existe
|
|
dashboard_info=$(curl -s -u "$ADMIN_USER:$ADMIN_PASS" \
|
|
"$GRAFANA_URL/api/dashboards/uid/$dashboard_uid" \
|
|
-H "Content-Type: application/json")
|
|
|
|
if echo "$dashboard_info" | jq -e '.dashboard.title' > /dev/null 2>&1; then
|
|
echo " ✅ Dashboard accessible: $dashboard_title"
|
|
|
|
# Vérifier les panneaux
|
|
panel_count=$(echo "$dashboard_info" | jq '.dashboard.panels | length')
|
|
echo " 📈 Nombre de panneaux: $panel_count"
|
|
|
|
# Vérifier les requêtes Loki
|
|
loki_queries=$(echo "$dashboard_info" | jq '.dashboard.panels[] | select(.targets[]?.datasource.type == "loki") | .targets[]?.expr' | wc -l)
|
|
echo " 🔍 Requêtes Loki: $loki_queries"
|
|
|
|
return 0
|
|
else
|
|
echo " ❌ Dashboard inaccessible: $dashboard_title"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
# Fonction pour tester l'API Loki
|
|
test_loki_api() {
|
|
echo "🔍 Test de l'API Loki"
|
|
|
|
# Test de connectivité Loki
|
|
loki_response=$(curl -s -u "$ADMIN_USER:$ADMIN_PASS" \
|
|
"$GRAFANA_URL/api/datasources/proxy/loki/api/v1/labels" \
|
|
-H "Content-Type: application/json" \
|
|
-H "X-Scope-OrgID: anonymous" 2>/dev/null || echo "ERROR")
|
|
|
|
if [[ "$loki_response" != "ERROR" ]] && echo "$loki_response" | jq -e '.data' > /dev/null 2>&1; then
|
|
echo " ✅ API Loki accessible"
|
|
|
|
# Compter les labels disponibles
|
|
label_count=$(echo "$loki_response" | jq '.data | length')
|
|
echo " 🏷️ Labels disponibles: $label_count"
|
|
|
|
return 0
|
|
else
|
|
echo " ❌ API Loki inaccessible"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
# Fonction pour tester les logs des services
|
|
test_service_logs() {
|
|
echo "📋 Test des logs des services"
|
|
|
|
services=("bitcoin-signet" "blindbit-oracle" "sdk_relay""sdk_storage" "lecoffre-front" "ihm_client" "signet_miner")
|
|
|
|
for service in "${services[@]}"; do
|
|
echo " 🔍 Test des logs: $service"
|
|
|
|
# Test d'une requête simple sur les logs du service
|
|
loki_response=$(curl -s -u "$ADMIN_USER:$ADMIN_PASS" \
|
|
"$GRAFANA_URL/api/datasources/proxy/loki/api/v1/query?query={container=\"$service\"}&limit=1" \
|
|
-H "Content-Type: application/json" \
|
|
-H "X-Scope-OrgID: anonymous" 2>/dev/null || echo "ERROR")
|
|
|
|
if [[ "$loki_response" != "ERROR" ]] && echo "$loki_response" | jq -e '.data.result' > /dev/null 2>&1; then
|
|
log_count=$(echo "$loki_response" | jq '.data.result | length')
|
|
if [ "$log_count" -gt 0 ]; then
|
|
echo " ✅ Logs disponibles: $log_count entrées"
|
|
else
|
|
echo " ⚠️ Aucun log récent trouvé"
|
|
fi
|
|
else
|
|
echo " ❌ Erreur d'accès aux logs"
|
|
fi
|
|
done
|
|
}
|
|
|
|
# Fonction pour générer un rapport de santé
|
|
generate_health_report() {
|
|
echo "📊 Rapport de Santé des Dashboards"
|
|
echo "=================================="
|
|
|
|
# Test de connectivité Grafana
|
|
grafana_status=$(curl -s -o /dev/null -w "%{http_code}" \
|
|
-u "$ADMIN_USER:$ADMIN_PASS" \
|
|
"$GRAFANA_URL/api/health")
|
|
|
|
if [ "$grafana_status" = "200" ]; then
|
|
echo "✅ Grafana: Opérationnel (HTTP $grafana_status)"
|
|
else
|
|
echo "❌ Grafana: Problème (HTTP $grafana_status)"
|
|
fi
|
|
|
|
# Test de connectivité Loki
|
|
loki_status=$(curl -s -o /dev/null -w "%{http_code}" \
|
|
-u "$ADMIN_USER:$ADMIN_PASS" \
|
|
"$GRAFANA_URL/api/datasources/proxy/loki/ready" \
|
|
-H "X-Scope-OrgID: anonymous")
|
|
|
|
if [ "$loki_status" = "200" ]; then
|
|
echo "✅ Loki: Opérationnel (HTTP $loki_status)"
|
|
else
|
|
echo "❌ Loki: Problème (HTTP $loki_status)"
|
|
fi
|
|
|
|
echo ""
|
|
echo "🎯 Dashboards disponibles:"
|
|
curl -s -u "$ADMIN_USER:$ADMIN_PASS" \
|
|
"$GRAFANA_URL/api/search?type=dash-db" | \
|
|
jq -r '.[] | " 📊 " + .title + " (UID: " + .uid + ")"'
|
|
}
|
|
|
|
# Exécution des tests
|
|
echo "🚀 Démarrage des tests..."
|
|
echo ""
|
|
|
|
# Test de l'API Loki
|
|
test_loki_api
|
|
echo ""
|
|
|
|
# Test des dashboards spécifiques
|
|
echo "📊 Test des Dashboards Spécialisés"
|
|
echo "=================================="
|
|
|
|
test_dashboard "Bitcoin Miner - Détails" "bitcoin-miner-detailed"
|
|
test_dashboard "SDK Services - Monitoring" "sdk-services"
|
|
test_dashboard "Frontend Services - Monitoring" "frontend-services"
|
|
test_dashboard "Bitcoin Services - Monitoring" "bitcoin-services"
|
|
|
|
echo ""
|
|
|
|
# Test des logs des services
|
|
test_service_logs
|
|
echo ""
|
|
|
|
# Génération du rapport de santé
|
|
generate_health_report
|
|
|
|
echo ""
|
|
echo "🎉 Tests terminés!"
|
|
echo ""
|
|
echo "📋 Accès aux Dashboards:"
|
|
echo " URL: $GRAFANA_URL"
|
|
echo " Utilisateur: $ADMIN_USER"
|
|
echo " Mot de passe: $ADMIN_PASS"
|
|
echo ""
|
|
echo "🔗 Liens directs:"
|
|
echo " Vue d'ensemble: $GRAFANA_URL/d/lecoffre-overview"
|
|
echo " Bitcoin Miner: $GRAFANA_URL/d/bitcoin-miner-detailed"
|
|
echo " Backend LeCoffre: $GRAFANA_URL/d/lecoffre-backend"
|
|
echo " Services SDK: $GRAFANA_URL/d/sdk-services"
|
|
echo " Services Frontend: $GRAFANA_URL/d/frontend-services"
|
|
echo " Services Bitcoin: $GRAFANA_URL/d/bitcoin-services"
|