# Session Resume - 2026-05-05 ## 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 ## Réalisations ✅ ### 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` ### 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) ### 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*