align for IA agents + grafana
This commit is contained in:
parent
a4db525885
commit
9999eaf401
@ -21,6 +21,9 @@ A déployer par **`lecoffre_node/`** :
|
||||
- image: git.4nkweb.com/4nk/bitcoin:latest (pour mainchain et signet custom)
|
||||
- image: git.4nkweb.com/4nk/blindbit-oracle:dev (pour scan des blocs et détection des secrets dans les transaction silent payment)
|
||||
- image: containrrr/watchtower (pour la surveillance et mise à jour automatique des images)
|
||||
- image: grafana/grafana:latest (pour le monitoring des évènements)
|
||||
- image: grafana/loki:latest
|
||||
- grafana/promtail:latest
|
||||
|
||||
---
|
||||
|
||||
@ -35,6 +38,7 @@ A déployer par **`lecoffre_node/`** (d'autres projets externes sont ne dépenda
|
||||
- **`lecoffre-back-mini/`** (backend pour les API tierces du projet lecoffre)
|
||||
- **`lecoffre-front/`** (frontend du projet lecoffre)
|
||||
- **`lecoffre_node/miner/`** (miner de la blockchain de preuves -layer2 de bitcoin depuis un signet-)
|
||||
- **`status-api`** (interface d'affichage des statuts des interfaces et des services)
|
||||
|
||||
---
|
||||
|
||||
|
@ -3,12 +3,14 @@ apiVersion: 1
|
||||
datasources:
|
||||
- name: Loki
|
||||
type: loki
|
||||
access: proxy
|
||||
access: server
|
||||
url: http://loki:3100
|
||||
uid: loki
|
||||
isDefault: true
|
||||
editable: true
|
||||
jsonData:
|
||||
maxLines: 1000
|
||||
timeout: 60
|
||||
derivedFields:
|
||||
- datasourceUid: loki
|
||||
matcherRegex: "traceID=(\\w+)"
|
||||
|
@ -16,25 +16,25 @@ ADMIN_PASS="admin123"
|
||||
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"
|
||||
@ -45,19 +45,20 @@ test_dashboard() {
|
||||
# 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" 2>/dev/null || echo "ERROR")
|
||||
|
||||
-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"
|
||||
@ -68,17 +69,18 @@ test_loki_api() {
|
||||
# Fonction pour tester les logs des services
|
||||
test_service_logs() {
|
||||
echo "📋 Test des logs des services"
|
||||
|
||||
|
||||
services=("bitcoin-signet" "blindbit-oracle" "sdk_relay" "sdk_signer" "sdk_storage" "lecoffre-back" "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" 2>/dev/null || echo "ERROR")
|
||||
|
||||
-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
|
||||
@ -96,29 +98,30 @@ test_service_logs() {
|
||||
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")
|
||||
|
||||
"$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" \
|
||||
|
Loading…
x
Reference in New Issue
Block a user