feat: distribution service + redpanda consumer + updated flow diagram
- Add Pulsar distribution service (consumes smartcity-* → MQTT + context brokers) - Add Redpanda → InfluxDB consumer (redpanda/consumer.py) - Update FIXED_LOCATIONS with exact OpenRemote asset coordinates - Fix Pulsar topics (underscore: smartcity-traffic not smartcity-traffic) - Fix prometheus.yml endpoints (Redpanda:9644, comment inactive stacks) - Add docker-compose.redpanda-consumer.yml
This commit is contained in:
@@ -1,156 +1,34 @@
|
||||
# Session Resume - 2026-05-05
|
||||
# Session Resume - 2026-05-05 (Suite après crash)
|
||||
|
||||
## 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
|
||||
## État au démarrage
|
||||
- **Dernier commit** : `3b5ff8d` - READY FOR DEMO 9h00 - 10/10 services ✅ - 182 actions complètes
|
||||
- **Services Docker UP** : Pulsar (6650), Redpanda (19092/9644), InfluxDB (8086), OpenRemote (8080/8405), FROST (8090), Stellio, GeoServer, Grafana (3001), etc.
|
||||
- **Commits non poussés** : 6 commits en attente sur Gitea
|
||||
|
||||
## Réalisations ✅
|
||||
## Services vérifiés
|
||||
- ✅ smart-city-pulsar (port 6650 - binaire uniquement, pas d'API REST)
|
||||
- ✅ smart-city-redpanda (port 19092 - producteur Kafka, port 19644 Console)
|
||||
- ✅ smart-city-influxdb (port 8086)
|
||||
- ✅ openremote-manager-1 (port 8080/8405)
|
||||
- ✅ frost_allinone-web-1 (port 8090)
|
||||
- ✅ stellio-api-gateway
|
||||
- ✅ GeoServer, Grafana
|
||||
|
||||
### 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`
|
||||
## Logs simulateur disponibles
|
||||
- simulator_pulsar_success.log
|
||||
- simulator_demo_final.log
|
||||
- simulator_final_demo.log
|
||||
- simulator_nohup.log
|
||||
|
||||
### 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)
|
||||
## Tâches restantes pour la démo de demain
|
||||
- [ ] Vérifier que le simulateur envoie bien des données (Pulsar/Redpanda → Brokers → InfluxDB)
|
||||
- [ ] Tester l'affichage sur Grafana / OpenRemote
|
||||
- [ ] Pousser les 6 commits en attente vers Gitea
|
||||
- [ ] Créer un script de démonstration rapide (30 secondes)
|
||||
- [ ] Documenter les URLs d'accès pour la démo
|
||||
|
||||
### 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
|
||||
|
||||
### 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`
|
||||
|
||||
### 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`
|
||||
|
||||
## Problèmes rencontrés ⚠️
|
||||
|
||||
### 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/...`)
|
||||
|
||||
### 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 du 2026-05-05 - Digitribe Martinique*
|
||||
## Infos critiques (Mémoire)
|
||||
- Pulsar standalone = port 6650 uniquement (pas d'API REST /produce)
|
||||
- Redpanda : utiliser `rpk` ou producteur Kafka standard
|
||||
- Simulateur host mode : ENABLE_PULSAR=false, INFLUX_URL=http://localhost:8086
|
||||
- OpenRemote : port 8080 host (OR_METRICS_ENABLED disabled)
|
||||
|
||||
Reference in New Issue
Block a user