# Grafana Datasources - STATUT FINAL (2026-05-05)

## ✅ Ce qui marche
- **Prometheus** : Fonctionne parfaitement (plugin natif Grafana + réseau partagé `smartcity-shared`)

## ❌ Ce qui ne marche pas (et pourquoi)

### 1. InfluxDB (read-only + config)
**Problèmes** :
- Datasources `read-only` (provisioning via `/etc/grafana/provisioning/datasources/datasources.yml`)
- Health check `/api/datasources/{uid}/health` renvoie `id is invalid`
- **Solution** : 
  ```bash
  # Modifier le fichier provisioning DANS le container ou sur l'hôte monté
  # Configurer : URL, Token (v2), Organization, DefaultBucket
  ```

### 2. Orion-LD / FROST / Stellio (incompatibilité plugin)
**Problème critique** :
- Plugin `grafana-simple-json-datasource` **INCOMPATIBLE**
- Ces services n'implémentent PAS l'API simple-json (search, query, annotations)
- Ils ont leurs propres APIs : NGSI-LD, SensorThings

**Solutions** :
#### Option A : Plugin NGSI-LD dédié
```bash
docker exec digital-twin-grafana grafana-cli plugins install <ngsi-ld-plugin>
```

#### Option B : Micro-service adaptateur (Node.js/Python)
1. Créer un service qui implémente l'API simple-json
2. Traduit requêtes Grafana → NGSI-LD/SensorThings
3. Exposer sur port 9000, configurer simple-json vers ce service

#### Option C : API HTTP directe (panels)
1. Installer plugin "JSON API" ou "HTTP"
2. Requête GET vers :
   - Orion-LD : `http://fiware-gis-quickstart-orionproxy-1:80/ngsi-ld/v1/entities`
   - FROST : `http://frost-api-8090:8080/FROST-Server/v1.1/Things`
   - Stellio : `http://stellio-api-gateway:8080/ngsi-ld/v1/entities`
3. Parser JSON dans le panel

## 🔧 Actions accomplies
1. ✅ Connexion Grafana aux réseaux : `smartcity-shared`, `frost_http_default`, `docker_default`, `fiware-gis-quickstart_fiware`
2. ✅ Testé accessibilité depuis container Grafana :
   - InfluxDB : ✅ `http://digital-twin-influxdb:8086` (HTTP 204)
   - Orion-LD : ✅ `http://fiware-gis-quickstart-orionproxy-1:80` (HTTP 200)
   - FROST : ⚠️ `http://frost-api-8090:8080` (HTTP 400)
   - Stellio : ✅ `http://stellio-api-gateway:8080` (HTTP 404)
3. ✅ Identifié : Plugin simple-json incompatible avec NGSI-LD/SensorThings
4. ✅ Documenté solutions (A/B/C ci-dessus)

## 📋 Prochaines étapes (pour reprendre plus tard)
1. **InfluxDB** : Modifier `/etc/grafana/provisioning/datasources/datasources.yml` :
   ```yaml
   - name: InfluxDB-SmartCity
     type: influxdb
     url: http://digital-twin-influxdb:8086
     jsonData:
       version: Flux
       organization: smartcity
       defaultBucket: smartcity
     secureJsonData:
       token: "<votre-token>"
   ```
2. **Orion-LD/FROST/Stellio** : Choisir Option B ou C (adaptateur ou HTTP direct)
3. **Tester avec panels réels** (pas seulement health check API)

## 🎯 Pourquoi Prometheus marche ?
- Plugin **natif** Grafana (codé en Go)
- Communication directe protocole Prometheus
- Réseau partagé `smartcity-shared` avec Grafana

---
*Session du 05-05-2026 : 10+ tentatives de fix Grafana datasources*
*Problème identifié : simple-json plugin incompatible + InfluxDB read-only*
*Solution : Voir Options A/B/C ci-dessus*
