docs: session resume 2026-05-05 afternoon - Grafana/FROST/Redpanda/Prometheus status

This commit is contained in:
Eric FELIXINE
2026-05-05 11:33:32 -04:00
parent 98954e86fb
commit ca1e037347

View File

@@ -1,73 +1,54 @@
# Session Resume — 05 Mai 2026 (Suite)
# Session Resume - 2026-05-05-Après-midi
## ✅ Réalisé dans cette session
## Objectif
Implémenter Grafana + FROST, finir Redpanda, et monitoring Prometheus pour Smart City Digital Twin Martinique.
### 1. Correction critique Pulsar
- **Problème** : API REST `/produce` inexistante en Pulsar standalone → 404
- **Solution** : Installé `pulsar-client` Python dans le simulateur + modifié `publish_pulsar()` pour utiliser le client binaire (port 6650)
- **Dockerfile** : Ajout de `pulsar-client` dans les dépendances
- **Résultat** : `🌀 Pulsar: ✅` dans les logs simulateur
## État des lieux (11h30-16h30)
**FROST** : 100+ observations (fonctionnel via simulateur direct ENABLED_FROST=true)
**Redpanda** : Conteneur actif (redpanda/docker-compose.yml corrigé)
**Pulsar** : Fonctionne (simulateur connecté sur smart-city-pulsar:6650)
**InfluxDB** : Opérationnel (datasource Grafana: InfluxDB-SmartCity)
**Grafana** : Healthy v10.2.0, plugins installés
### 2. Service de distribution Pulsar → Brokers
- **Création** : `pulsar/distribution.py` — Consomme Pulsar et republie vers :
- **MQTT** : EMQX (`emqx_emqx_1:1883`) + Mosquitto (`mosquitto-traefik:1883`)
- **NGSI-LD** : Orion-LD (`fiware-gis-quickstart-orion-1:1026`) + Stellio (`stellio-api-gateway:8080`)
- **OGC SensorThings** : FROST Server (`frost-api-8090:8080`)
- **Docker** : `pulsar/Dockerfile` + `docker-compose.distribution.yml`
- **Testé** : Messages distribués avec succès (MQTT reçu, entités Orion-LD créées)
**Distribution Pulsar → Brokers** : Échec persistant (ConnectError: Pulsar client → Pulsar standalone)
⚠️ **Infinity Plugin** : Installé dans conteneur mais status "disabled" (problème d'activation)
⚠️ **Prometheus** : Conteneur démarré (localhost:9090/metrics OK), mais /api/v1/targets retourne vide (cibles peut-être down)
### 3. Architecture mise en place
```
Simulateur → Pulsar (port 6650)
Pulsar Distribution Service
┌─────────────┼─────────────┐
↓ ↓ ↓
MQTT Brokers NGSI-LD FROST
(EMQX+ Brokers (OGC
Mosquitto) (Orion+ SensorThings)
Stellio)
## Problèmes bloquants
1. **Pulsar Distribution** : Le service `pulsar-distribution` ne peut pas se connecter à Pulsar (même avec hostname correct, même réseau). Cause probable : Version Pulsar standalone vs client Python.
2. **Infinity Plugin** : Installation réussie mais activation impossible via CLI (`grafana-cli plugins enable` ne fonctionne pas). Le plugin est dans `/var/lib/grafana/plugins/` mais Grafana ne le charge pas.
3. **Prometheus Targets** : L'API retourne des cibles vides. Les conteneurs cibles (mosquitto-exporter:9234, frost_http-web-1:8080, etc.) sont peut-être inaccessibles ou metrics_path incorrect.
## Travail accompli
- [x] Correction redpanda/start.sh (v24.3.14)
- [x] Mise à jour simulator.py (ENABLE_FROST=true pour test)
- [x] Création prometheus.yml (config pour scrape Mosquitto, Orion, FROST, Stellio)
- [x] Correction docker-compose.yml (variables d'environnement)
- [x] Installation plugin Infinity dans Grafana
- [x] Commit & Push (hash: 98954e8)
## Reste à faire
1. **Grafana FROST** : Trouver une méthode pour visualiser FROST (Infinity plugin ou adapter HTTP)
2. **Monitoring Prometheus** : Vérifier pourquoi les cibles ne répondent pas (networking interne?)
3. **Distribution Pulsar** : Debugger la connexion (essayer avec un client Pulsar plus récent ou changer d'approche)
4. **Dashboard technique** : Créer le dashboard Grafana avec Prometheus + InfluxDB
## Commandes utiles
```bash
# Vérifier FROST
curl -s "http://localhost:8090/FROST-Server/v1.1/Observations?\$top=5" | python3 -c "import sys,json; d=json.load(sys.stdin); print(len(d.get('value',[])))"
# Vérifier Prometheus
curl -s "http://localhost:9090/metrics" | head -10
# Vérifier Grafana
curl -s "http://localhost:3001/api/health" -u admin:Digitribe972
# Redémarrer Grafana (après install plugin)
docker restart smart-city-grafana
```
## ⚠️ Problèmes rencontrés
### Redpanda (Kafka-compatible)
- **Status** : ❌ Toujours crashé (exit 1)
- **Cause** : Commande `rpk redpanda start` échoue (le flag `--mode dev` n'existe pas dans v24.3.14)
- **Tentatives** :
- Enlèvement de `--mode dev` → toujours crash
- Exécution manuelle → affiche l'aide (commande invalide)
- **Décision** : Laisser de côté pour l'instant, Pulsar suffit pour l'ingestion
## 📊 État des services
| Service | Status | Notes |
|---------|--------|-------|
| Simulateur | ✅ Actif (1s) | Pulsar OK, MQTT/Brokers désactivables |
| Pulsar | ✅ Fonctionnel | Client binaire 6650 OK |
| Pulsar Distribution | ✅ Actif | Republie vers tous les brokers |
| EMQX (MQTT) | ✅ Reçoit | Via distribution Pulsar |
| Orion-LD (NGSI-LD) | ✅ Reçoit | Entités AirQuality créées |
| Stellio (NGSI-LD) | ⚠️ À vérifier | Via distribution |
| FROST (OGC) | ⚠️ À vérifier | Via distribution |
| Redpanda | ❌ Crash | Problème de démarrage RPK |
| InfluxDB | ✅ Actif | Via simulateur direct |
| Grafana | ⚠️ No Data | Dashboards à configurer |
## 📋 Prochaines étapes
1. **Vérifier Stellio + FROST** via distribution Pulsar
2. **Désactiver l'envoi direct** du simulateur vers les brokers (pour respecter l'architecture)
3. **Configurer Grafana** avec datasources InfluxDB + Pulsar/FROST
4. **Remplacer Redpanda** par Kafka simple ou résoudre le problème
## 🔗 URLs importantes
- **Pulsar Distribution logs** : `docker logs smart-city-pulsar-distribution --tail 50`
- **Grafana** : https://grafana.digitribe.fr/d/smartcity-martinique-2026
- **Orion-LD entities** : `curl http://localhost:2026/ngsi-ld/v1/entities`
- **Gitea** : https://gitea.digitribe.fr/eric/smart-city-digital-twin-martinique
---
*Session en cours — Pulsar Distribution opérationnel*
## Décisions
- Ne pas remplacer Redpanda par Kafka (demande utilisateur)
- Prometheus pour monitoring technique uniquement (pas d'ingestion payloads)
- Architecture : Simulator → Pulsar → Distribution → Brokers (MQTT, NGSI-LD, FROST)