Files
smart-city-digital-twin-mar…/session_resume_2026-05-05.md
Eric FELIXINE 8642ed7001 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
2026-05-05 13:49:00 -04:00

6.4 KiB

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

  1. 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
  2. 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

  1. 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

cd ~/smart-city-digital-twin-martinique
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"

Voir les logs

docker logs smart-city-simulator --tail 50 | grep -E "(Pulsar|Influx|ERROR)"
docker logs smart-city-pulsar-distribution --tail 50

Test Pulsar

curl http://localhost:8080/admin/v2/clusters
curl -s -o /dev/null -w "%{http_code}" http://localhost:28080  # Redpanda Console

Test InfluxDB

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 🌐

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