diff --git a/DIAGNOSTIC-GRAFANA-DATASOURCES.md b/DIAGNOSTIC-GRAFANA-DATASOURCES.md new file mode 100644 index 00000000..6136e2cc --- /dev/null +++ b/DIAGNOSTIC-GRAFANA-DATASOURCES.md @@ -0,0 +1,38 @@ +# Diagnostic Grafana Datasources (05-05-2026) + +## Problème +Toutes les datasources (sauf Prometheus) retournent "id is invalid" ou ne répondent pas. + +## Causes identifiées +1. **Plugin simple-json-datasource mal configuré** + - Ce plugin attend un backend qui implémente l'API simple-json + - Orion-LD, FROST, Stellio ne sont PAS compatibles directement + - Ils ont leurs propres APIs (NGSI-LD, SensorThings, etc.) + +2. **URLs inaccessibles depuis le container Grafana** + - InfluxDB : `digital-twin-influxdb:8086` (interne Docker, pas résolu) + - FROST : `frost_http-web-1:8080` (interne Docker) + - Solution : Utiliser `localhost:8086`, `localhost:8090` (ou IP publique) + +3. **Plugins NGSI-LD manquants** + - Pas de plugin Grafana natif pour Orion-LD/Stellio + - Nécessite des plugins communautaires ou requêtes HTTP directes + +## Solutions proposées +### A. Pour InfluxDB (plus simple) +1. Modifier l'URL dans Grafana : `http://localhost:8086` (ou `host.docker.internal:8086`) +2. Configurer database, user, password + +### B. Pour Orion-LD / Stellio (NGSI-LD) +1. **Option 1** : Utiliser le plugin "grafana-ngsi-ld-datasource" (si existe) +2. **Option 2** : Créer un micro-service qui traduit NGSI-LD → format Grafana +3. **Option 3** : Utiliser des requêtes HTTP dans les panels (JSON API datasource) + +### C. Pour FROST (SensorThings) +1. Vérifier si le plugin "grafana-sensorthings-datasource" est installé +2. Sinon, utiliser l'API FROST directement + +## Actions immédiates +1. Corriger les URLs InfluxDB (localhost:8086) +2. Tester la connexion depuis le container Grafana +3. Documenter les endpoints API pour chaque service diff --git a/GRAFANA-SOLUTION.md b/GRAFANA-SOLUTION.md new file mode 100644 index 00000000..ff0fbc63 --- /dev/null +++ b/GRAFANA-SOLUTION.md @@ -0,0 +1,49 @@ +# Solution Grafana Datasources - Smart City + +## Problème +Les datasources Orion-LD, FROST, Stellio ne marchent pas avec le plugin "simple-json-datasource". + +## Pourquoi ? +Le plugin `grafana-simple-json-datasource` attend un backend qui implémente cette API : +- POST / : recherche (query) +- POST /search : recherche de métriques +- POST /annotations : annotations +- POST /tag-keys : clés de tags +- POST /tag-values : valeurs de tags + +Orion-LD (NGSI-LD) et FROST (SensorThings) n'implémentent PAS cette API. + +## Solutions + +### A. Pour InfluxDB (✅ facile) +1. Modifier l'URL : `http://host.docker.internal:8086` (ou `http://localhost:8086` si Grafana a accès) +2. Configurer database, user, password +3. Tester la connexion + +### B. Pour Orion-LD / Stellio (NGSI-LD) +**Option 1** : Plugin NGSI-LD dédié (si existe) +- Chercher "grafana-ngsi-ld-datasource" dans les plugins Grafana + +**Option 2** : Créer un micro-service adaptateur +- Service en Python/Node.js qui traduit les requêtes Grafana → NGSI-LD +- Exposer ce service sur un port (ex: 9000) +- Configurer simple-json-datasource vers ce service + +**Option 3** : Utiliser l'API HTTP directement (panels personnalisés) +- Utiliser le panel "JSON API" ou "HTTP" dans Grafana +- Faire des requêtes directes vers Orion-LD / Stellio +- Parser la réponse JSON pour afficher les données + +### C. Pour FROST (SensorThings) +**Option 1** : Plugin SensorThings (si existe) +- Chercher "grafana-sensorthings-datasource" + +**Option 2** : API directe (comme ci-dessus) + +## Actions immédiates +1. ✅ Corriger InfluxDB (host.docker.internal:8086) +2. ⚠️ Pour Orion-LD : Documenter l'API et créer des panels HTTP +3. ⚠️ Pour FROST : Même chose + +## Alternative +Utiliser **Grafana + InfluxDB** pour stocker les données du simulateur, puis visualiser depuis InfluxDB (plus simple).