feat: Add Redpanda Console, Pulsar Distribution Service, and Grafana Dashboards

- Add Redpanda Console service (port 28080, Traefik integration)
- Add Pulsar Distribution Service (Pulsar -> Brokers)
- Create Grafana dashboards for Redpanda, Pulsar, and Smart City Ingestion
- Configure Prometheus targets for Pulsar and Redpanda metrics
- Fix FROST URL in distribution service
- Create session resume for 2026-05-05
This commit is contained in:
Eric FELIXINE
2026-05-05 13:49:00 -04:00
parent ca1e037347
commit 8642ed7001
13 changed files with 710 additions and 53 deletions

View File

@@ -1,57 +1,156 @@
# Session Resume — 05 Mai 2026 (Session de 03h03 - 03h45)
# Session Resume - 2026-05-05
## ✅ Réalisé dans cette session
## Objectif de la session
Configuration de l'ingestion de données pour le Smart City Digital Twin Martinique :
- Simulateur → Pulsar (port 6650)
- Pulsar → Service de Distribution → Brokers (MQTT, NGSI-LD, FROST)
- Monitoring via Redpanda Console, Prometheus, Grafana
### 1. Corrections critiques du simulateur (simulator.py)
- **ENABLE_PULSAR corrigé** : La comparaison `== "1"` échouait car docker-compose envoyait `"true"`. Nouveau code : `.lower() in ("1", "true", "yes", "on")`
- **Intervalle temps réel** : Passé de 10s à **1s** (`INTERVAL = 1`) pour un envoi en temps réel
- **InfluxDB URL** : Corrigé de `digital-twin-influxdb` vers `smart-city-influxdb`
- **Ajout fonctions** : `publish_pulsar()` et `publish_redpanda()` avec threading (asynchrone)
- **Debug ajouté** : Traces pour vérifier l'atteinte du code Pulsar
## Réalisations ✅
### 2. Docker Compose
- **Création** : `docker-compose.yml` principal avec service simulator
- **Redpanda** : `redpanda/docker-compose.yml` + `redpanda.yaml` + `start.sh` (mais service bloqué OOM)
- **ClickHouse** : `clickhouse/docker-compose.yml` + `config.xml` (Analytique OLAP)
- **RisingWave** : `risingwave/docker-compose.yml` (Streaming DB PostgreSQL-compatible)
### 1. Redpanda Console - OPÉRATIONNEL
- Service `smart-city-redpanda-console` créé dans `redpanda/docker-compose.yml`
- Accessible sur `http://localhost:28080` (200 OK)
- Traefik configuré : `https://redpanda-console.digitribe.fr`
- Connecté à Redpanda (`smart-city-redpanda:9092`)
- API Admin Redpanda activée (`http://smart-city-redpanda:9644`)
- Fichier config : `redpanda/console.yaml`
### 3. Diagramme des flux (data-flow-diagram.md)
- **Mermaid** : Ajout des nœuds ClickHouse, RisingWave, Pulsar, Redpanda
- **Flux** : Ajout des flèches du simulateur vers ces nouveaux services
- **Tableau** : Mise à jour du statut de tous les composants
- **Docs** : Mise à jour des sections "Analytique & Streaming"
### 2. Prometheus - CONFIGURÉ
- Cibles actives ajoutées dans `prometheus.yml` :
- `redpanda` : **up** (métriques port 9644)
- `pulsar` : **up** (métriques port 8080)
- `mosquitto` : up
- `orion-ld` : up
- `frost-server` : down (normal, pas de données)
- `stellio` : down (normal, pas de données)
### 4. Git & Sauvegarde
- **Commit** : `01c2be4` — "feat(simulator): real-time (1s), fix ENABLE_PULSAR, add Pulsar/Redpanda publish, fix InfluxDB URL"
- **Push** : Vers Gitea (https://gitea.digitribe.fr/eric/smart-city-digital-twin-martinique)
- **Fichiers commités** : simulator.py, docker-compose.yml, clickhouse/, risingwave/, redpanda/, data-flow-diagram.md
### 3. Grafana Dashboards - CRÉÉS
- **Redpanda Metrics** (`grafana/provisioning/dashboards/redpanda-metrics.json`)
- **Pulsar Metrics** (`grafana/provisioning/dashboards/pulsar-metrics.json`)
- **Smart City Ingestion** (`grafana/provisioning/dashboards/smart-city-ingeston.json`)
- Datasources InfluxDB connectées : InfluxDB, InfluxDB-Simulator, InfluxDB-SmartCity
## 📊 État des services (au moment du crash)
### 4. Simulateur → Pulsar - FONCTIONNEL
- Le simulateur utilise déjà le protocole binaire Pulsar (port 6650)
- Logs confirment les connexions : `Connected to broker pulsar://smart-city-pulsar:6650`
- Topics créés : `smartcity-traffic`, `smartcity-airquality`, `smartcity-parking`, `smartcity-noise`, `smartcity-weather`, `smartcity-light`
| Service | Status | Notes |
|---------|--------|-------|
| Simulateur | ✅ Actif (1s) | MQTT + Pulsar (code OK, réception KO) |
| Pulsar | ⚠️ Debugging | Topics créés manuellement, API /produce renvoie 404 |
| Redpanda | ❌ OOM | Container crash en boucle, service marqué "cancelled" |
| ClickHouse | ✅ Ajouté | Stack créée, pas encore démarrée |
| RisingWave | ✅ Ajouté | Stack créée, pas encore démarrée |
| Grafana | ⚠️ No Data | Dashboard `smartcity-martinique-2026` vide |
### 5. Service de Distribution - AJOUTÉ (mais instable)
- Service `pulsar-distribution` ajouté dans `pulsar/docker-compose.yml`
- Code : `pulsar/distribution.py` (consomme depuis Pulsar, republie vers brokers)
- Problème : Erreur docker-compose au redémarrage (`KeyError: 'ContainerConfig'`)
- URL FROST corrigée : `frost-api-8090:8080/FROST-Server/v1.1`
## ⏳ Reste à faire (Todo List)
## Problèmes rencontrés ⚠️
1.~~Corriger ENABLE_PULSAR~~ (Fait)
2.~~Ajouter ClickHouse~~ (Fait)
3.~~Ajouter RisingWave~~ (Fait)
4.~~Modifier diagramme Mermaid~~ (Fait)
5. ⚠️ **Grafana "No Data"** : Vérifier datasources (InfluxDB, FROST) et requêtes Flux
6. ⚠️ **Pulsar** : Résoudre l'erreur 404 sur l'API produce
7. ⚠️ **Redpanda** : Soit le réparer, soit le remplacer par Kafka simple
8. 📋 **Payloads NGSI-LD** : Vérifier/corriger les formats Orion-LD et Stellio
### 1. Pulsar Manager - CRASH RÉCURRENT
- Conteneur `smart-city-pulsar-manager` crash au démarrage
- Erreurs : `Object 'ENVIRONMENTS' not found` (HerdDB), problèmes d'initialisation PostgreSQL
- Solution alternative : Utiliser l'API Pulsar Admin directe (`http://localhost:8080/admin/v2/...`)
## 🔗 URLs importantes
- **Grafana** : https://grafana.digitribe.fr/d/smartcity-martinique-2026/smart-city-digital-twin-martinique
- **Gitea** : https://gitea.digitribe.fr/eric/smart-city-digital-twin-martinique
- **Simulateur logs** : `docker logs smart-city-simulator --tail 200`
### 2. Distribution Service - ERREUR DOCKER-COMPOSE
- `KeyError: 'ContainerConfig'` lors du `docker-compose up -d pulsar-distribution`
- Nécessite suppression manuelle du conteneur et reconstruction
- Service fonctionnel en théorie mais instable en pratique
### 3. InfluxDB - AUCUNE DONNÉE VISIBLE
- Simulateur configuré pour InfluxDB (`ENABLE_INFLUX=1`)
- Aucune donnée visible dans les queries InfluxDB
- À diagnostiquer : connectivité simulateur → InfluxDB
### 4. Traefik Let's Encrypt - ÉCHEC
- Problèmes de certificats sur `pulsar.digitribe.fr` et `redpanda-console.digitribe.fr`
- Cause probable : domaine non public ou configuration DNS
- Solution temporaire : accès HTTP direct (localhost:7750, localhost:28080)
## Fichiers modifiés/créés 📁
### Redpanda
- `redpanda/docker-compose.yml` : Ajout service `smart-city-redpanda-console`
- `redpanda/console.yaml` : Configuration Redpanda Console
### Pulsar
- `pulsar/docker-compose.yml` : Ajout service `pulsar-distribution`
- `pulsar/distribution.py` : Service de distribution (déjà existant)
### Prometheus
- `prometheus.yml` : Ajout cibles `pulsar` et `redpanda`
### Grafana
- `grafana/provisioning/dashboards/redpanda-metrics.json` : **Créé**
- `grafana/provisioning/dashboards/pulsar-metrics.json` : **Créé**
- `grafana/provisioning/dashboards/smart-city-ingeston.json` : **Créé**
## À faire pour la prochaine session 📋
### Priorité 1 : Ingestion de données
1. **Diagnostiquer InfluxDB** : Pourquoi aucune donnée n'arrive ?
- Vérifier les logs du simulateur (`docker logs smart-city-simulator | grep Influx`)
- Tester la connexion manuelle depuis le simulateur
- Vérifier le token InfluxDB et l'organisation
2. **Stabiliser le service de distribution**
- Corriger l'erreur `KeyError: 'ContainerConfig'`
- Lancer manuellement le conteneur si nécessaire
- Vérifier que les messages Pulsar sont bien republiés vers les brokers
### Priorité 2 : Monitoring et Visualisation
3. **Tester les dashboards Grafana**
- Accéder à http://localhost:3001 (admin/Digitribe972)
- Vérifier que les panels affichent des données (InfluxDB, Prometheus)
- Ajuster les requêtes Flux si nécessaire
4. **Corriger Pulsar Manager (optionnel)**
- Utiliser une base PostgreSQL externe propre
- Ou passer à une alternative (Kafka Manager, ou utiliser l'API directe)
### Priorité 3 : Traefik et Domaines
5. **Résoudre Let's Encrypt**
- Vérifier la configuration DNS pour `*.digitribe.fr`
- Tester l'accessibilité publique des services
- Configurer des certificats SSL valides
## Commandes utiles 🛠️
### Vérifier les services
```bash
cd ~/smart-city-digital-twin-martinique
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
```
### Voir les logs
```bash
docker logs smart-city-simulator --tail 50 | grep -E "(Pulsar|Influx|ERROR)"
docker logs smart-city-pulsar-distribution --tail 50
```
### Test Pulsar
```bash
curl http://localhost:8080/admin/v2/clusters
curl -s -o /dev/null -w "%{http_code}" http://localhost:28080 # Redpanda Console
```
### Test InfluxDB
```bash
curl -s -H "Authorization: Token my-super-secret-admin-token" \
"http://smart-city-influxdb:8086/api/v2/query?org=digitribe" \
-d 'from(bucket:"iot_data") |> range(start:-1h) |> limit(n:5)'
```
## URLs d'accès 🌐
- **Redpanda Console** : http://localhost:28080
- **Grafana** : http://localhost:3001 (admin/Digitribe972)
- **Prometheus** : http://localhost:9090
- **Pulsar Admin API** : http://localhost:8080/admin/v2/clusters
- **FROST-Server** : http://localhost:8090/FROST-Server/v1.1
## Notes importantes 📝
- Le simulateur utilise le **protocole binaire Pulsar** (port 6650, pas 8080)
- L'ingestion centralisée passe par **Pulsar puis distribution** vers les brokers
- Redpanda Console est fonctionnel et permet de monitorer les topics Kafka
- Les dashboards Grafana sont prêts mais nécessitent des données pour être utiles
- Pulsar Manager reste instable, privilégier l'API Pulsar directe pour le monitoring
---
*Session crashee à 03h45 (limite d'itérations atteinte). Prochaine session : reprendre à "Grafana No Data".*
*Session du 2026-05-05 - Digitribe Martinique*