Grafana: Fix InfluxDB + document datasource solutions

- Diagnostic: simple-json-datasource incompatible with NGSI-LD/SensorThings
- Fix InfluxDB: Use host.docker.internal:8086
- Document solutions for Orion-LD, FROST, Stellio
- Prepare for API-direct panels or adapter service
This commit is contained in:
Eric FELIXINE
2026-05-04 23:52:58 -04:00
parent 320371fdea
commit d9723d1792
2 changed files with 87 additions and 0 deletions

View File

@@ -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

49
GRAFANA-SOLUTION.md Normal file
View File

@@ -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).