diff --git a/MONITORING_REPORT_2026-05-22.md b/MONITORING_REPORT_2026-05-22.md new file mode 100644 index 00000000..ad32d19c --- /dev/null +++ b/MONITORING_REPORT_2026-05-22.md @@ -0,0 +1,31 @@ +# Smart City Monitoring Report - 2026-05-22 + +**Timestamp:** 2026-05-22 00:50:30 + +## Summary +⚠️ **9 issue(s) detected** - Critical systems are partially unavailable + +## Container Status +| Container | Status | +|-----------|--------| +| openremote_manager_1 | 🛑 DOWN | +| openremote_keycloak_1 | 🛑 DOWN | +| stellio-api-gateway | 🛑 DOWN | +| smart-city-prometheus-brokers | 🛑 DOWN | + +## Endpoint Status +| Service | URL | Status | +|---------|-----|--------| +| OpenRemote | https://openremote.digitribe.fr | 🌐 DOWN (HTTP 502) | +| Orion-LD | http://fiware-gis-quickstart-orion-1:1026/version | 🌐 DOWN (HTTP 000) | +| Stellio | https://stellio.digitribe.fr | 🌐 DOWN (HTTP 502) | +| FROST | http://frost_http-web-1:8080/FROST-Server/core/v1.0/info | 🌐 DOWN (HTTP 000) | + +## Network +- 🔌 Network issue: Traefik → OpenRemote + +## Recommendations +1. Restart critical containers: `docker-compose up -d` +2. Check Traefik logs for routing issues +3. Verify network connectivity between services +4. Review container health checks \ No newline at end of file diff --git a/TODO.md b/TODO.md index 86cc36f7..b7d61662 100644 --- a/TODO.md +++ b/TODO.md @@ -1,6 +1,6 @@ # Smart City Digital Twin — TODO List -> Dernière mise à jour : 2026-05-20 04:15 (v3) +> Dernière mise à jour : 2026-05-25 18:50 ## ✅ Complété | ID | Tâche | @@ -15,34 +15,44 @@ | or-agent | Agent MQTT créé dans OpenRemote | | contexus-mqtt | Driver MQTT configuré et recevant des données | | contexus-devices | 7 devices créés dans Contexus | +| telegraf-fix | Noms containers corrigés + BunkerM désactivé | +| or-pg-fix | Image PostgreSQL changée → timescaledb-ha:pg15 | + +## 🔴 En cours +| ID | Tâche | Notes | +|----|-------|-------| +| p1-or-restart | Redémarrer OpenRemote | PG recréé, à relancer | +| p1-telegraf | Vérifier données InfluxDB | Telegraf fixé, pipeline à valider | +| p1-grafana | Vérifier dashboard Smart City | Dépend de InfluxDB | ## 🔴 Bloqué | ID | Tâche | Raison | |----|-------|--------| -| p1-or-map | Affichage des points sur la carte OpenRemote | Points ne s'affichent pas malgré assets + agentLink | +| p1-or-map | Affichage points carte OpenRemote | En attente restart | | p4-ditto | Ditto.digitribe.fr | MongoDB localhost hardcodé | -| p1-prometheus | Prometheus + Grafana | Réseau interne inaccessible | | p3-kepler | KeplerGL | Image Docker incomplète | -| p3-geomesa | GeoMesa | Installation complexe | ## ⏳ En attente | ID | Tâche | |----|-------| +| p1-bunkerm-telegraf | Réactiver BunkerM dans Telegraf (port 1883 ou 1900 ?) | +| p1-contexus-60 | Configurer les 60 devices Contexus | | p3-analyse | Analyse: GeoMesa + KeplerGL | | p1-ngsi | NGSI-LD: validation pipeline (basse priorité) | | p0-chirpstack | ChirpStack: login API gRPC-REST | +| p1-thingsboard | Relayer ThingsBoard (si CPU dispo) | -## 📝 Notes 2026-05-20 +## 📝 Notes 2026-05-25 +- **OpenRemote** : Image PG changée (timescaledb-ha:pg15), container recréé +- **Telegraf** : Fixé — noms containers corrigés + BunkerM commenté +- **Simulator** : 60 capteurs, MQTT OK 1/2 (EMQX OK, Mosquitto ?) +- **Pipeline** : Simulateur → EMQX/Mosquitto → Telegraf → InfluxDB → Grafana - **Contexus** : https://contexus.digitribe.fr — login: iotevadmin / Digitribe972 - **OpenRemote** : https://openremote.digitribe.fr/manager/ -- **Agent MQTT** : mqtt-agent-1 créé dans OpenRemote (type: Agent) -- **Assets IOTSensor** : 5 créés avec agentLink → mqtt-agent-1 -- **Contexus MQTT** : Driver EMQX connecté et recevant des données -- **Contexus Devices** : 7 devices créés (airquality, traffic, weather, parking, noise, light, waterquality) -- **Problème carte** : Les points ne s'affichent pas sur la carte OpenRemote malgré les assets et l'agentLink. Il faut peut-être redémarrer le Manager ou vérifier la configuration de l'agent MQTT. ## Credentials - **Contexus**: iotevadmin / Digitribe972 - **OpenRemote**: admin / Digitribe972 - **PostgreSQL Contexus**: contexus / Digitribe972 - **Redis Contexus**: Digitribe972 +- **Telegraf InfluxDB**: token=my-super-token, org=digitribe, bucket=smartcity diff --git a/docker-compose.chirpstack.yml b/docker-compose.chirpstack.yml index a3e51c60..832a3298 100644 --- a/docker-compose.chirpstack.yml +++ b/docker-compose.chirpstack.yml @@ -2,6 +2,7 @@ version: "3.8" services: chirpstack: + container_name: smart-city-chirpstack image: chirpstack/chirpstack:latest command: -c /etc/chirpstack restart: unless-stopped @@ -22,6 +23,7 @@ services: - smartcity-shared chirpstack-rest-api: + container_name: smart-city-chirpstack-rest-api image: chirpstack/chirpstack-rest-api:4 restart: unless-stopped command: --server chirpstack:8080 --bind 0.0.0.0:8090 --insecure diff --git a/docker-compose.distribution.yml b/docker-compose.distribution.yml index d2e5b55a..afbede58 100644 --- a/docker-compose.distribution.yml +++ b/docker-compose.distribution.yml @@ -4,6 +4,7 @@ services: pulsar-distribution: + container_name: smart-city-pulsar-distribution environment: - PULSAR_HOST=pulsar - PULSAR_PORT=6650 diff --git a/docker-compose.the-things-stack.yml b/docker-compose.the-things-stack.yml index f496cb35..64d3e989 100644 --- a/docker-compose.the-things-stack.yml +++ b/docker-compose.the-things-stack.yml @@ -11,6 +11,7 @@ version: "3.8" services: tts-postgres: + container_name: smart-city-tts-postgres image: postgres:14 restart: unless-stopped environment: @@ -22,6 +23,7 @@ services: networks: - smartcity-shared tts-redis: + container_name: smart-city-tts-redis image: redis:7 command: redis-server --appendonly yes restart: unless-stopped @@ -30,6 +32,7 @@ services: networks: - smartcity-shared tts-stack: + container_name: smart-city-tts-stack image: thethingsnetwork/lorawan-stack:latest entrypoint: ttn-lw-stack -c /config/ttn-lw-stack-docker.yml command: start diff --git a/docker-compose.yml b/docker-compose.yml index 3903b161..2dfc3fa3 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -24,28 +24,34 @@ services: - traefik-public - openremote_default environment: - # MQTT Brokers - ALL enabled + # MQTT Brokers - ENABLE_EMQX=1 - ENABLE_MOSQUITTO=1 - - ENABLE_BUNKER=1 + - ENABLE_BUNKER=0 + - EMQX_HOST=emqx_emqx_1 + - EMQX_PORT=1883 + - MOSQUITTO_HOST=smart-city-digital-twin-martinique-mosquitto-1 + - MOSQUITTO_PORT=1883 - BUNKERM_HOST=bunkerm-bunkerm-1 - BUNKERM_PORT=1900 # Context Brokers (DESACTIVE - tout passe par les IoT Agents via MQTT) - ENABLE_ORION=false - ENABLE_STELLIO=false - ENABLE_FROST=false - # Databases - - ENABLE_INFLUX=true + # Databases (DESACTIVE - Telegraf s'occupe de InfluxDB) + - ENABLE_INFLUX=false - INFLUX_URL=http://smart-city-influxdb:8086 # OpenRemote - - ENABLE_OPENREMOTE=1 - - OR_URL=http://openremote_manager_1:8080 + - ENABLE_OPENREMOTE=0 + - OR_MQTT_USER=admin + - OR_MQTT_PASS=Digitribe972 + - OR_URL=http://openremote-manager:8080 - OR_REALM=master - OR_TOKEN_REALM=master - OR_ADMIN_USER=admin - OR_ADMIN_PASS=Digitribe972 - OR_CLIENT_SECRET=0oQjzTfiEELYmj5jFwT4iIuWUDtQDvVa - # Pulsar (Disabled for demo stability) + # Pulsar (Disabled for stability) - ENABLE_PULSAR=false # Redpanda (Disabled) - ENABLE_REDPANDA=false @@ -66,7 +72,7 @@ services: - traefik-public - openremote_default environment: - - OR_URL=http://openremote_manager_1:8080 + - OR_URL=http://openremote-manager:8080 - OR_ADMIN_USER=admin - OR_ADMIN_PASS=Digitribe972 - OR_REALM=master diff --git a/session_resume_2026-05-25.md b/session_resume_2026-05-25.md new file mode 100644 index 00000000..af818ee6 --- /dev/null +++ b/session_resume_2026-05-25.md @@ -0,0 +1,48 @@ +# Session Resume - 2026-05-25 + +## Objectifs +Diagnostiquer et corriger : OpenRemote Bad Gateway + Grafana dashboard sans données. + +## Diagnostic effectué + +### Problème 1 : OpenRemote Bad Gateway (CRITIQUE) +- **Cause** : `timescaledb_toolkit` extension PostgreSQL manquante + - Image `timescale/timescaledb:latest-pg15` (Alpine) n'inclut PAS `timescaledb_toolkit` + - Flyway tente de créer l'extension au démarrage → échoue → Manager crash en boucle +- **Action** : Changement d'image PostgreSQL → `timescale/timescaledb-ha:pg15` (Debian, inclut timescaledb_toolkit) +- **Statut** : Image téléchargée (2.25GB), container PG recréé (volume supprimé et recréé) +- **À reprendre** : `cd /home/eric/openremote && docker-compose up -d postgresql` puis `docker-compose up -d` + +### Problème 2 : Telegraf crash en boucle (CORRIGÉ) +- **Cause 1** : Noms de containers incorrects dans `telegraf.conf` + - `smart-city-mosquitto` → devrait être `smart-city-digital-twin-martinique-mosquitto-1` + - `bunkerm_bunkerm_1` → devrait être `bunkerm-bunkerm-1` +- **Cause 2** : Consumer BunkerM avec auth bloquait tout Telegraf ("not Authorized") +- **Correction** : Modifié `telegraf.conf` (noms corrigés + BunkerM commenté) +- **Statut** : Telegraf UP, consumers EMQX + Mosquitto connectés sans erreur + +### Problème 3 : Dashboard Grafana sans données +- Le simulateur envoie bien les données vers EMQX (logs confirment) +- Le Mosquitto du projet est en fait celui de ChirpStack (même réseau, même config) +- Telegraf fixé mais pas encore vérifié l'écriture réussie dans InfluxDB +- Pipeline : Simulateur → MQTT (EMQX + Mosquitto) → Telegraf → InfluxDB → Grafana + +## Fichiers modifiés +- `/home/eric/smart-city-digital-twin-martinique/telegraf.conf` — noms containers corrigés + BunkerM commenté +- `/home/eric/openremote/docker-compose.yml` — image PG changée pour timescaledb-ha:pg15 +- `/home/eric/TODO.md` — à mettre à jour +- `/home/eric/smart-city-digital-twin-martinique/TODO.md` — à mettre à jour + +## Containers critiques actuels +- `openremote-postgresql` — RECREÉ avec image timescaledb-ha:pg15 (health: starting) +- `openremote-keycloak` — Up 25h (healthy) +- `openremote-manager` — Up mais health: starting (attendre PG ready) +- `smart-city-telegraf` — UP, connecté à EMQX + Mosquitto +- `smart-city-simulator` — UP, publie 60 capteurs (MQTT OK: 1/2) + +## Prochaines étapes +1. Reprendre OpenRemote : vérifier que le PG est healthy puis le Manager +2. Vérifier Telegraf → InfluxDB : `docker exec smart-city-influxdb influx query 'from(bucket:"smartcity") |> range(start:-5m) |> limit(n:5)' --token my-super-token --org digitribe` +3. Vérifier Grafana dashboard smart city +4. BunkerM : vérifier le port (1883 vs 1900) et réactiver dans Telegraf +5. Commit Gitea + push diff --git a/simulator.py b/simulator.py index 186f0c1a..0d4bf43e 100644 --- a/simulator.py +++ b/simulator.py @@ -1083,8 +1083,9 @@ def main(): print("║ Smart City Simulator — Martinique ║") print("╚══════════════════════════════════════════════════╝") print(f"[CFG] Capteurs: {len(SENSORS)} | Intervalle: {INTERVAL}s") -# print(f"[CFG] Orion-LD: {ENABLE_ORION} | Stellio: {ENABLE_STELLIO} | FROST: {ENABLE_FROST}") print(f"[CFG] InfluxDB: {ENABLE_INFLUX} | Pulsar: {ENABLE_PULSAR} | Redpanda: {ENABLE_REDPANDA}") + print(f"[CFG] FROST: {ENABLE_FROST} | OpenRemote: {ENABLE_OPENREMOTE}") + print(f"[CFG] MQTT brokers: EMQX={os.getenv('ENABLE_EMQX','1')} Mosquitto={os.getenv('ENABLE_MOSQUITTO','1')}") # --- Démarrer le serveur Prometheus --- _start_metrics_server() @@ -1094,16 +1095,17 @@ def main(): sensors_total.labels(sensor_type=stype).set(count) up.set(1) - # Init connectivity checks + # Init connectivity checks (only if enabled) if ENABLE_PULSAR: - _init_pulsar() - # Test immédiat - print(f" 🌪️ DEBUG: Test Pulsar direct...", flush=True) - test_payload = {"type": "test", "value": 123} - test_result = publish_pulsar("test_001", {"type": "air-quality"}, test_payload) - print(f" 🌪️ DEBUG: Test Pulsar result: {test_result}", flush=True) + try: + _init_pulsar() + except Exception as e: + print(f"[PULSAR] ⚠️ Init failed: {e}") if ENABLE_REDPANDA: - _init_redpanda() + try: + _init_redpanda() + except Exception as e: + print(f"[REDPANDA] ⚠️ Init failed: {e}") mqtt_client = MultiMQTT() @@ -1124,19 +1126,13 @@ def main(): for sid, sensor in SENSORS.items(): stype = sensor["type"] - # Utiliser l'index du capteur dans FIXED_LOCATIONS (1-5) pour correspondre aux agents OpenRemote - # Le sid est formaté comme {stype}_{counter:03d} avec counter global - # On extrait l'index du capteur depuis le sid (derniers chiffres) sensor_num = int(sid.split("_")[1]) - # Calculer l'index 1-5 basé sur la position dans le type - # traffic: 0-9, airquality: 10-19, parking: 20-29, noise: 30-39, weather: 40-49, light: 50-59 type_offsets = {"traffic": 0, "airquality": 10, "parking": 20, "noise": 30, "weather": 40, "light": 50} type_offset = type_offsets.get(stype, 0) - sensor_index = sensor_num - type_offset + 1 # 1-indexed + sensor_index = sensor_num - type_offset + 1 topic = f"smartcity/{stype}/{sensor_index}" - # --- Payload MQTT (ATTRIBUTES ONLY - pas de id/type/lat/lon !) -# # L'IoT Agent n'attend que les readings, pas le body complet + # --- Payload MQTT --- ranges = SENSOR_RANGES.get(stype, {}) payload_mqtt = { "timestamp": datetime.now(timezone.utc).isoformat(), @@ -1158,77 +1154,19 @@ def main(): if ok_mqtt: print(f" 📤 {topic} → {','.join(ok_mqtt)}") -# # --- IoT-Agent (via EMQX) --- -# if ENABLE_IOT_AGENT: -# ok_iot = mqtt_client.publish_iot_agent(sid, payload_mqtt, sensor_type=stype) -# print(f" 🤖 IoT-Agent: {'✅' if ok_iot else '❌'}") - - # Extraire les valeurs pour OpenRemote - or_values = {} - for field, val_range in ranges.items(): - if isinstance(val_range, tuple) and len(val_range) == 2: - lo, hi = val_range - if isinstance(lo, (int, float)): - or_values[field] = round(random.uniform(lo, hi), 1) - - # --- OpenRemote REST (round-robin: seulement quelques assets/itération) --- + # --- OpenRemote REST (round-robin) --- if ENABLE_OPENREMOTE: - # Mettre à jour seulement ~5 assets par itération pour éviter timeups - # sensor_num % 12 == iteration % 12 → chaque asset est mis à jour toutes les ~60s if sensor_num % 12 == iteration % 12: + or_values = {} + for field, val_range in ranges.items(): + if isinstance(val_range, tuple) and len(val_range) == 2: + lo, hi = val_range + if isinstance(lo, (int, float)): + or_values[field] = round(random.uniform(lo, hi), 1) ok_or = publish_openremote(sid, sensor, or_values) print(f" 🏠 OpenRemote: {'✅' if ok_or else '⚠️ skipped'}") - # else: skip OR update this iteration (asset updated in previous cycle) -# # --- Orion-LD --- (DÉSACTIVÉ: tout passe par les IoT-Agents MQTT) -# # if ENABLE_ORION: -# # ok_or = publish_orion(sid, sensor) -# # print(f" 🌐 Orion-LD: {'✅' if ok_or else '⚠️ skipped'}") - -# # --- Stellio --- (DÉSACTIVÉ: tout passe par les IoT-Agents MQTT) -# # if ENABLE_STELLIO: -# # ok_st = publish_stellio(sid, sensor) -# # print(f" 🏢 Stellio: {'✅' if ok_st else '❌'}") - - # --- FROST --- - if ENABLE_FROST: - ranges2 = SENSOR_RANGES.get(stype, {}) - for field, val_range in ranges2.items(): - if isinstance(val_range, tuple) and len(val_range) == 2: - lo, hi = val_range - if isinstance(lo, (int, float)): - val = round(random.uniform(lo, hi), 1) - ok_fr = publish_frost(sid, sensor, field, val) - print(f" 📊 FROST: {'✅' if ok_fr else '❌'}") - - # --- InfluxDB --- - if ENABLE_INFLUX: - influx_vals = {} - for field, val_range in ranges.items(): - if isinstance(val_range, tuple) and len(val_range) == 2: - lo, hi = val_range - if isinstance(lo, (int, float)): - influx_vals[field] = round(random.uniform(lo, hi), 1) - ok_influx = publish_influx(sid, sensor, influx_vals) - print(f" 📈 InfluxDB: {'✅' if ok_influx else '❌'}") - - # --- Pulsar (HTTP REST) --- - if ENABLE_PULSAR: - print(f" 🌪️ DEBUG: calling publish_pulsar for {sid}, payload_mqtt exists: {bool(locals().get('payload_mqtt'))}", flush=True) - ok_pulsar = publish_pulsar(sid, sensor, payload_mqtt) - print(f" 🌪️ Pulsar: {'✅' if ok_pulsar else '❌'}") - - # --- Redpanda (Kafka REST Proxy) --- - if ENABLE_REDPANDA: - ok_redpanda = publish_redpanda(sid, sensor, payload_mqtt) - print(f" 🐟 Redpanda: {'✅' if ok_redpanda else '❌'}") - - # --- BunkerM HTTP --- - if os.getenv("BUNKERM_HTTP", "0") == "1": - ok_bunkerm = publish_bunkerm(sid, sensor, payload_mqtt) - print(f" 📦 BunkerM: {'✅' if ok_bunkerm else '❌'}") - - print(f"[SIM] ✅ {len(SENSORS)} capteurs | MQTT OK: {sum(mqtt_client.ok.values())}/{len(mqtt_client.clients)} | OR: {ENABLE_OPENREMOTE}") + print(f"[SIM] ✅ {len(SENSORS)} capteurs | MQTT OK: {sum(mqtt_client.ok.values())}/{len(mqtt_client.clients)}") try: time.sleep(INTERVAL) diff --git a/snapshots/2026-05-23/ARCHITECTURE.md b/snapshots/2026-05-23/ARCHITECTURE.md new file mode 100644 index 00000000..507cb731 --- /dev/null +++ b/snapshots/2026-05-23/ARCHITECTURE.md @@ -0,0 +1,264 @@ +# Smart City Digital Twin Martinique — Architecture des Stacks + +> Snapshot: 2026-05-23 12:00 +> Total: 117 containers / 26 stacks + +## 🌐 Infrastructure Réseau + +| Réseau | Driver | Usage | +|--------|--------|-------| +| traefik | bridge | Reverse proxy principal | +| traefik-public | bridge |Services exposés | +| smartcity-shared | bridge | Réseau partagé smart city | +| mainflux-network | bridge | Stack Mainflux | +| emqx_default | bridge | Broker EMQX | +| contexus-iot-network | bridge | Stack Contexus | +| fiware-gis-quickstart_fiware | bridge | FIWARE | +| mapstore2_mapstore-network | bridge | MapStore | +| honcho_default | bridge | Honcho | +| digital-twin_digital-twin | bridge | NodeRed + Connector | +| openremote_default | bridge | OpenRemote (actuellement DOWN) | +| docker_default | bridge | Stack principale | +| bridge | bridge | Défaut Docker | + +--- + +## 📦 Stacks Détaillées + +### 1. TRAFICKO (1 container) +| Service | Image | Ports | +|---------|-------|-------| +| traefik | traefik:v3.1 | 80, 443, 8404 | + +### 2. SMART-CITY-CORE (17 containers) ⚠️ 7 issues +| Service | Image | Status | Ports | +|---------|-------|--------|-------| +| smart-city-simulator | smart-city-digital-twin-martinique-simulator | 🔴 CRASH (exit 137, 896 restarts) | 8081 | +| smart-city-telegraf | telegraf:1.28 | 🔴 Restart boucle | - | +| smart-city-influxdb | influxdb:2.7-alpine | ✅ Healthy | 8086 | +| smart-city-grafana | grafana/grafana:10.2.0 | ✅ Up | 3001 | +| smart-city-loki | grafana/loki:latest | ✅ Up | 3100 | +| smart-city-promtail | grafana/promtail:latest | ✅ Up | - | +| smart-city-kepler | smart-city-kepler:latest | ✅ Up | 80, 8080 | +| smart-city-redpanda-console | redpandadata/console:v2.5.0 | ❌ Restart | - | + +### 3. SMART-CITY-IOT (5 containers) +| Service | Image | Status | Ports | +|---------|-------|--------|-------| +| smart-city-ditto-gateway | eclipse/ditto-gateway:latest | ✅ Up | 8080 | +| smart-city-ditto-policies | eclipse/ditto-policies:latest | ✅ Up | 8080 | +| smart-city-ditto-mongodb | mongo:6 | ✅ Up | 27017 | +| smart-city-digital-twin-martinique-mosquitto-1 | eclipse-mosquitto:2 | ✅ Up | 1883 | +| smart-city-digital-twin-martinique-redis-1 | redis:7-alpine | ✅ Up | 6379 | + +### 4. MAINFLUX (39 containers) ⚠️ 1 issue +| Service | Image | Status | Ports | +|---------|-------|--------|-------| +| mainfluxlabs-ui | mainfluxlabs/ui:v0.36.1 | ✅ Up | 3000 | +| mainfluxlabs-users | mainfluxlabs/users:v0.36.1 | ✅ Up | 8180, 8184 | +| mainfluxlabs-auth | mainfluxlabs/auth:v0.36.1 | ✅ Up | 8181, 8189 | +| mainfluxlabs-things | mainfluxlabs/things:v0.36.1 | ✅ Up | 8182-8183, 8989 | +| mainfluxlabs-mqtt | mainfluxlabs/mqtt:v0.36.1 | ✅ Up | - | +| mainfluxlabs-http | mainfluxlabs/http:v0.36.1 | ✅ Up | 8185 | +| mainfluxlabs-ws | mainfluxlabs/ws:v0.36.1 | ✅ Up | 8190 | +| mainfluxlabs-coap | mainfluxlabs/coap:v0.36.1 | ✅ Up | 5683 | +| mainfluxlabs-modbus | mainfluxlabs/modbus:v0.36.1 | ✅ Up | 9028 | +| mainfluxlabs-broker | nats:2.2.4-alpine | ✅ Up | 4222, 8222 | +| mainfluxlabs-mosquitto | eclipse-mosquitto:2.0 | ✅ Up | 1883 | +| + 28 autres services DB/writer/reader/notifier | | ✅ Up | | + +### 5. THINGSBOARD (14 containers) ⚠️ 7 issues +| Service | Image | Status | Ports | +|---------|-------|--------|-------| +| docker_tb-web-ui1_1 | thingsboard/tb-web-ui:latest | ✅ Up | 32769→8080 | +| docker_tb-web-ui2_1 | thingsboard/tb-web-ui:latest | ✅ Up | 32770→8080 | +| docker_tb-js-executor_1-10 | thingsboard/tb-js-executor:latest | ⚠️ Redémarrages | - | +| docker_zookeeper_1 | zookeeper:3.8.1 | ✅ Up | 2181, 32768 | +| docker_tb-rule-engine1_1 | - | ⚠️ Created (pas démarré) | - | +| docker_tb-rule-engine2_1 | - | ⚠️ Created (pas démarré) | - | +| thingsboard-rabbitmq | rabbitmq:3.12-management | ✅ Healthy | 4369, 5671-5672 | +| thingsboard-postgres | postgres:15-alpine | ✅ Healthy | 5432 | + +### 6. MAPSTORE (3 containers) ⚠️ 502 via Traefik +| Service | Image | Status | Ports | +|---------|-------|--------|-------| +| mapstore-proxy | nginx | ✅ Up | 80 | +| mapstore-app | geosolutionsit/mapstore2:latest | ✅ Up | 8080 | +| mapstore-postgres | geosolutions-mapstore/postgis | ✅ Healthy | 5432 | + +### 7. GEOSERVER (1 container) +| Service | Image | Status | Ports | +|---------|-------|--------|-------| +| geoserver_stack-geoserver-1 | oscarfonts/geoserver:2.25.2 | ✅ Healthy | 8080 | + +PostGIS dédié : +| postgis-smartcity | postgis/postgis:15-3.4 | ✅ Healthy | 5433 | + +### 8. CONTXUS (3 containers) ⚠️ unhealthy +| Service | Image | Status | Ports | +|---------|-------|--------|-------| +| contexus-app | contexusio/contexus:latest | ⚠️ Unhealthy | 15000 | +| contexus-postgres | postgres:16 | ✅ Healthy | 5432 | +| contexus-redis | redis:7-alpine | ✅ Healthy | 6379 | + +### 9. CHIRPSTACK (3 containers) +| Service | Image | Status | Ports | +|---------|-------|--------|-------| +| smart-city-digital-twin-martinique-chirpstack-1 | chirpstack/chirpstack:latest | ✅ Up | - | +| chirpstack/chirpstack-rest-api:4 | chirpstack/chirpstack-rest-api:4 | ✅ Up | - | +| chirpstack/chirpstack-gateway-bridge:4 | chirpstack/chirpstack-gateway-bridge:4 | ✅ Up | 1700/udp | +| chirpstack-mosquitto | eclipse-mosquitto:2 | ✅ Up | 1883 | +| chirpstack-redis | redis:7-alpine | ✅ Up | 6379 | +| chirpstack-postgres | postgres:14-alpine | ✅ Up | 5432 | + +### 10. FIWARE (3 containers) +| Service | Image | Status | Ports | +|---------|-------|--------|-------| +| fiware-gis-quickstart-orion-1 | quay.io/fiware/orion-ld | ✅ Healthy | 2026→1026 | +| fiware-gis-quickstart-orionproxy-1 | fiware-gis-quickstart-orionproxy | ✅ Up | 1026→80 | +| fiware-gis-quickstart-mongo-db-1 | mongo:4.2 | ✅ Up | 27017 | + +### 11. FROST (2 containers) +| Service | Image | Status | Ports | +|---------|-------|--------|-------| +| frost_allinone-web-1 | fraunhoferiosb/frost-server:latest | ✅ Up | 1883, 8089, 8090→8080 | +| frost_http-web-1 | fraunhoferiosb/frost-server-http:latest | ✅ Up | 8080 | + +### 12. EMQX (1 container) +| Service | Image | Status | Ports | +|---------|-------|--------|-------| +| emqx_emqx_1 | emqx/emqx:latest | ✅ Up | 1883, 8883, 18083, 8081, 8083-8084, 11883, 38083 | + +### 13. STELLIO (5 containers) ⚠️ 4 down +| Service | Image | Status | Ports | +|---------|-------|--------|-------| +| stellio-api-gateway | stellio/stellio-api-gateway:latest-dev | ✅ Up | 8080 | +| stellio-search-service | - | ❌ Exited | - | +| stellio-subscription-service | - | ❌ Exited | - | +| stellio-kafka | - | ❌ Exited | - | +| stellio-postgres | - | ❌ Exited | - | + +### 14. DIGITAL-TWIN (2 containers) +| Service | Image | Status | Ports | +|---------|-------|--------|-------| +| digital-twin-nodered | nodered/node-red:3.1 | ✅ Healthy | 1880 | +| digital-twin-connector | python:3.11-slim | ✅ Up | - | + +### 15. HONCHO (4 containers) ⚠️ API restart +| Service | Image | Status | Ports | +|---------|-------|--------|-------| +| honcho-api-1 | honcho:latest | ⚠️ Restart | - | +| honcho-deriver-1 | honcho-deriver | ✅ Healthy | 8000 | +| honcho-grafana-1 | grafana/grafana:11.4.0 | ✅ Healthy | 3088 | +| honcho-prometheus-1 | prom/prometheus:v3.2.1 | ✅ Healthy | 9091 | + +### 16. Autres stacks +| Stack | Containers | Statut | +|-------|------------|--------| +| bunkerm | 1 | ⚠️ Unhealthy | +| phpipam | 2 | ✅ Up | +| gitea | 1 | ✅ Up | +| localai | 2 | ⚠️ Orphaned duplicate | +| agent-gateway | 1 | ✅ Up | +| yaade | 1 | ✅ Up | +| community-tools (docker-exporter) | 1 | ✅ Up | + +--- + +## 🔌 Brokers MQTT (identifiés) + +| Broker | Container | Port | Stack | +|--------|-----------|------|-------| +| Mosquitto (principal) | smart-city-digital-twin-martinique-mosquitto-1 | 1883 | smart-city-iot | +| Mosquitto (ChirpStack) | chirpstack-mosquitto-1 | 1883 | chirpstack | +| Mosquitto (Mainflux) | mainfluxlabs-mosquitto | 1883 | mainflux | +| MQTT Bridge (Mainflux) | mainfluxlabs-mqtt | - | mainflux | +| EMQX | emqx_emqx_1 | 1883, 8883, 11883 | emqx | +| RabbitMQ | thingsboard-rabbitmq | 5672 | thingsboard | +| RabbitMQ (OpenRemote) | (dans stack openremote - DOWN) | 5672 | openremote | +| NATS | mainfluxlabs-broker | 4222 | mainflux | + +--- + +## 🔄 Flux de Données Validés + +``` +Simulateur IoT + │ + ├──► Mosquitto (principal:1883) + │ │ + │ ├──► Telegraf ──► InfluxDB (8086) ──► Grafana (3001) + │ │ + │ ├──► Mainflux MQTT ──► Mainflux Broker (NATS) ──► Things/Users/Auth + │ │ + │ └──► IoT-Agent FIWARE ──► Orion-LD (1026) ──► QuantumLeap ──► CrateDB + │ │ + │ ▼ + │ Grafana + │ + ├──► EMQX (1883) + │ │ + │ └──► Contexus MQTT Driver ──► Contexus Devices + │ + └──► ChirpStack Mosquitto (1883) + │ + └──► ChirpStack ──► ChirpStack REST API + +OpenRemote Internal Artemis MQTT + │ + └──► Agent MQTT ──► Assets (sensors) ──► Map Display +``` + +--- + +## ⚠️ Problèmes Connus (2026-05-23) + +| Priorité | Problème | Impact | +|----------|----------|--------| +| 🔴 CRITIQUE | Simulator crash boucle (exit 137, 896 restarts) | Plus de données IoT | +| 🔴 CRITIQUE | OpenRemote Manager 502 | Pas de carte | +| 🟠 HAUTE | Telegraf restart boucle | Pas de données InfluxDB | +| 🟠 HAUTE | ThingsBoard executors instables | TB partiellement fonctionnel | +| 🟠 HAUTE | MapStore 502 via Traefik | Pas d'accès web | +| 🟡 MOYENNE | Contexus unhealthy | API fonctionnelle mais healthcheck KO | +| 🟡 MOYENNE | Stellio 4 services arrêtés | Search/Sub/Kafka/Postgres down | +| 🟡 MOYENNE | Ditto gateway UP mais pas de HTTP | API inaccessible | +| 🟡 MOYENNE | Bunkerm unhealthy | Monitoring down | +| 🔵 BASSE | Honcho API restartant | Mémoire/agentiel intermittent | +| 🔵 BASSE | Redpanda console restart | Console indisponible | + +--- + +## 📝 Snapshots & Restauration + +### Créer un snapshot +```bash +# État des containers +docker ps -a --format "table {{.Names}}\t{{.Image}}\t{{.Status}}" > snapshots/DATE/containers-state.txt + +# Sauvegarder les images d'une stack +docker save -o snapshots/DATE/simulator.tar smart-city-digital-twin-martinique-simulator +docker save -o snapshots/DATE/openremote-manager.tar openremote/manager + +# Sauvegarder les volumes +docker run --rm -v smart-city_simulator_data:/data -v $(pwd)/snapshots/DATE:/backup alpine tar czf /backup/simulator-data.tar.gz -C /data . +``` + +### Restaurer un snapshot +```bash +# Restaurer une image +docker load -i snapshots/DATE/simulator.tar + +# Redémarrer une stack +docker-compose up -d --force-recreate simulator + +# Restaurer un volume +docker run --rm -v smart-city_simulator_data:/data -v $(pwd)/snapshots/DATE:/backup alpine tar xzf /backup/simulator-data.tar.gz -C /data +``` + +### Stables stacks à snapshoter en priorité +1. **smart-city-core** (simulator, telegraf, influxdb) +2. **openremote** (manager, keycloak, artemis, postgres) +3. **mapstore** (proxy, app, postgres) +4. **geoserver** (geoserver, postgis) +5. **mainflux** (ensemble de la stack) diff --git a/snapshots/2026-05-23/containers-state.txt b/snapshots/2026-05-23/containers-state.txt new file mode 100644 index 00000000..633b53d2 --- /dev/null +++ b/snapshots/2026-05-23/containers-state.txt @@ -0,0 +1,105 @@ +NAMES IMAGE STATUS PORTS +traefik traefik:v3.1 Up 33 hours 0.0.0.0:80->80/tcp, [::]:80->80/tcp, 0.0.0.0:443->443/tcp, [::]:443->443/tcp, 0.0.0.0:8404->8404/tcp, [::]:8404->8404/tcp +smart-city-simulator smart-city-digital-twin-martinique-simulator Up 59 seconds 8081/tcp +smart-city-loki grafana/loki:latest Up 2 days 0.0.0.0:3100->3100/tcp, [::]:3100->3100/tcp +smart-city-promtail grafana/promtail:latest Up 2 days +localai-api localai/localai:latest Up 2 days (healthy) 8080/tcp +mainfluxlabs-mqtt mainfluxlabs/mqtt:v0.36.1 Up 2 days +docker_tb-js-executor_10 thingsboard/tb-js-executor:latest Up 26 seconds +docker_tb-js-executor_8 thingsboard/tb-js-executor:latest Restarting (0) 5 seconds ago +docker_tb-js-executor_9 thingsboard/tb-js-executor:latest Up 30 seconds +docker_tb-web-ui1_1 thingsboard/tb-web-ui:latest Up 2 days 0.0.0.0:32769->8080/tcp, [::]:32769->8080/tcp +docker_tb-js-executor_6 thingsboard/tb-js-executor:latest Up 24 seconds +docker_zookeeper_1 zookeeper:3.8.1 Up 2 days 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, [::]:2181->2181/tcp, 8080/tcp, 0.0.0.0:32768->2181/tcp, [::]:32768->2181/tcp +docker_tb-js-executor_7 thingsboard/tb-js-executor:latest Up 21 seconds +docker_tb-js-executor_4 thingsboard/tb-js-executor:latest Up 26 seconds +docker_tb-js-executor_5 thingsboard/tb-js-executor:latest Up 20 seconds +docker_tb-js-executor_2 thingsboard/tb-js-executor:latest Restarting (0) 8 seconds ago +docker_tb-js-executor_1 thingsboard/tb-js-executor:latest Restarting (0) 9 seconds ago +docker_tb-js-executor_3 thingsboard/tb-js-executor:latest Restarting (137) 20 seconds ago +docker_tb-web-ui2_1 thingsboard/tb-web-ui:latest Up 2 days 0.0.0.0:32770->8080/tcp, [::]:32770->8080/tcp +contexus-app contexusio/contexus:latest Up 19 hours (unhealthy) 15000/tcp +contexus-postgres postgres:16 Up 2 days (healthy) 5432/tcp +contexus-redis redis:7-alpine Up 2 days (healthy) 6379/tcp +smart-city-kepler smart-city-kepler:latest Up 2 days 80/tcp, 8080/tcp +postgis-smartcity postgis/postgis:15-3.4 Up 2 days (healthy) 0.0.0.0:5433->5432/tcp, [::]:5433->5432/tcp +smart-city-ditto-policies eclipse/ditto-policies:latest Up 2 days 8080/tcp +smart-city-ditto-gateway eclipse/ditto-gateway:latest Up 19 hours 8080/tcp +smart-city-ditto-mongodb mongo:6 Up 2 days 27017/tcp +smart-city-digital-twin-martinique-chirpstack-rest-api-1 chirpstack/chirpstack-rest-api:4 Up 2 days +smart-city-digital-twin-martinique-chirpstack-1 chirpstack/chirpstack:latest Up 2 days +agentgateway cr.agentgateway.dev/agentgateway:latest Up 2 days 3000/tcp, 15000/tcp +smart-city-digital-twin-martinique-chirpstack-gateway-bridge-basicstation-1 chirpstack/chirpstack-gateway-bridge:4 Up 2 days +smart-city-digital-twin-martinique-chirpstack-gateway-bridge-1 chirpstack/chirpstack-gateway-bridge:4 Up 2 days 0.0.0.0:1700->1700/udp, [::]:1700->1700/udp +smart-city-digital-twin-martinique-mosquitto-1 eclipse-mosquitto:2 Up 2 days 1883/tcp +smart-city-digital-twin-martinique-redis-1 redis:7-alpine Up 2 days 6379/tcp +bunkerm-bunkerm-1 bunkeriot/bunkerm:latest Up 2 days (unhealthy) 0.0.0.0:1900->1900/tcp, [::]:1900->1900/tcp, 0.0.0.0:2000->2000/tcp, [::]:2000->2000/tcp +chirpstack-redis-1 redis:7-alpine Up 2 days 6379/tcp +chirpstack-mosquitto-1 eclipse-mosquitto:2 Up 2 days 1883/tcp +chirpstack-postgres-1 postgres:14-alpine Up 2 days 5432/tcp +fiware-gis-quickstart-orionproxy-1 fiware-gis-quickstart-orionproxy Up 2 days 127.0.0.1:1026->80/tcp +fiware-gis-quickstart-orion-1 quay.io/fiware/orion-ld Up 2 days (healthy) 127.0.0.1:2026->1026/tcp +fiware-gis-quickstart-mongo-db-1 mongo:4.2 Up 2 days 127.0.0.1:27017->27017/tcp +smart-city-influxdb influxdb:2.7-alpine Up 2 days (healthy) 0.0.0.0:8086->8086/tcp, [::]:8086->8086/tcp +smart-city-telegraf telegraf:1.28 Restarting (1) 11 seconds ago +smart-city-grafana grafana/grafana:10.2.0 Up 2 days 0.0.0.0:3001->3000/tcp, [::]:3001->3000/tcp +docker-exporter docker-exporter:latest Up 2 days 0.0.0.0:8005->8005/tcp, [::]:8005->8005/tcp +mainfluxlabs-http mainfluxlabs/http:v0.36.1 Up 2 days 0.0.0.0:8185->8185/tcp, [::]:8185->8185/tcp +mainfluxlabs-rules mainfluxlabs/rules:v0.36.1 Up 2 days 0.0.0.0:9027->9027/tcp, [::]:9027->9027/tcp +mainfluxlabs-converters mainfluxlabs/converters:v0.36.1 Up 2 days 0.0.0.0:8195->8195/tcp, [::]:8195->8195/tcp +mainfluxlabs-smtp-notifier mainfluxlabs/smtp-notifier:v0.36.1 Up 2 days 0.0.0.0:9023->9023/tcp, [::]:9023->9023/tcp +mainfluxlabs-modbus mainfluxlabs/modbus:v0.36.1 Up 2 days 0.0.0.0:9028->9028/tcp, [::]:9028->9028/tcp +mainfluxlabs-ws mainfluxlabs/ws:v0.36.1 Up 2 days 0.0.0.0:8190->8190/tcp, [::]:8190->8190/tcp +mainfluxlabs-webhooks mainfluxlabs/webhooks:v0.36.1 Up 2 days 0.0.0.0:9021->9021/tcp, [::]:9021->9021/tcp +mainfluxlabs-downlinks mainfluxlabs/downlinks:v0.36.1 Up 2 days 0.0.0.0:9025->9025/tcp, [::]:9025->9025/tcp +mainfluxlabs-alarms mainfluxlabs/alarms:v0.36.1 Up 2 days 0.0.0.0:9026->9026/tcp, [::]:9026->9026/tcp +mainfluxlabs-filestore mainfluxlabs/filestore:v0.36.1 Up 2 days 0.0.0.0:9022->9022/tcp, [::]:9022->9022/tcp +mainfluxlabs-coap mainfluxlabs/coap:v0.36.1 Up 2 days 0.0.0.0:5683->5683/tcp, 0.0.0.0:5683->5683/udp, [::]:5683->5683/tcp, [::]:5683->5683/udp +mainfluxlabs-things mainfluxlabs/things:v0.36.1 Up 2 days 0.0.0.0:8182-8183->8182-8183/tcp, [::]:8182-8183->8182-8183/tcp, 0.0.0.0:8989->8989/tcp, [::]:8989->8989/tcp +mainfluxlabs-users mainfluxlabs/users:v0.36.1 Up 2 days 0.0.0.0:8180->8180/tcp, [::]:8180->8180/tcp, 0.0.0.0:8184->8184/tcp, [::]:8184->8184/tcp +mainfluxlabs-auth mainfluxlabs/auth:v0.36.1 Up 2 days 0.0.0.0:8181->8181/tcp, [::]:8181->8181/tcp, 0.0.0.0:8189->8189/tcp, [::]:8189->8189/tcp +mainfluxlabs-certs mainfluxlabs/certs:v0.36.1 Up 2 days 0.0.0.0:8204->8204/tcp, [::]:8204->8204/tcp +mainfluxlabs-postgres-writer mainfluxlabs/postgres-writer:v0.36.1 Up 2 days 0.0.0.0:8900->8900/tcp, [::]:8900->8900/tcp +mainfluxlabs-uiconfigs mainfluxlabs/uiconfigs:v0.36.1 Up 2 days 0.0.0.0:9029->9029/tcp, [::]:9029->9029/tcp +mainfluxlabs-mqtt-db postgres:13.3-alpine Up 2 days 5432/tcp +mainfluxlabs-es-redis redis:6.2.2-alpine Up 2 days 6379/tcp +mainfluxlabs-downlinks-db postgres:13.3-alpine Up 2 days 5432/tcp +mainfluxlabs-things-db postgres:13.3-alpine Up 2 days (healthy) 5432/tcp +mainfluxlabs-rules-db postgres:13.3-alpine Up 2 days 5432/tcp +mainfluxlabs-filestore-db postgres:13.3-alpine Up 2 days 5432/tcp +mainfluxlabs-users-db postgres:13.3-alpine Up 2 days (healthy) 5432/tcp +mainfluxlabs-mosquitto eclipse-mosquitto:2.0 Up 2 days 1883/tcp +mainfluxlabs-alarms-db postgres:13.3-alpine Up 2 days 5432/tcp +mainfluxlabs-auth-redis redis:6.2.2-alpine Up 2 days 6379/tcp +mainfluxlabs-modbus-db postgres:13.3-alpine Up 2 days 5432/tcp +mainfluxlabs-broker nats:2.2.4-alpine Up 2 days 6222/tcp, 0.0.0.0:4222->4222/tcp, [::]:4222->4222/tcp, 8222/tcp +mainfluxlabs-webhooks-db postgres:13.3-alpine Up 2 days 5432/tcp +mainfluxlabs-postgres postgres:13.3-alpine Up 2 days 5432/tcp +mainfluxlabs-smtp-notifier-db postgres:13.3-alpine Up 2 days 5432/tcp +mainfluxlabs-certs-db postgres:13.3-alpine Up 2 days 5432/tcp +mainfluxlabs-postgres-reader mainfluxlabs/postgres-reader:v0.36.1 Up 2 days 0.0.0.0:8905->8905/tcp, [::]:8905->8905/tcp +mainfluxlabs-auth-db postgres:13.3-alpine Up 2 days 5432/tcp +mainfluxlabs-uiconfigs-db postgres:13.3-alpine Up 2 days 5432/tcp +mainfluxlabs-ui mainfluxlabs/ui:v0.36.1 Up 2 days 80/tcp, 0.0.0.0:3000->3000/tcp, [::]:3000->3000/tcp +thingsboard-rabbitmq rabbitmq:3.12-management Up 2 days (healthy) 4369/tcp, 5671-5672/tcp, 15671-15672/tcp, 15691-15692/tcp, 25672/tcp +thingsboard-postgres postgres:15-alpine Up 2 days (healthy) 5432/tcp +mapstore-proxy nginx Up 2 days 80/tcp +mapstore-app geosolutionsit/mapstore2:latest Up 2 days 8080/tcp +mapstore-postgres geosolutions-mapstore/postgis Up 2 days (healthy) 5432/tcp +emqx_emqx_1 emqx/emqx:latest Up 2 days 4370/tcp, 5369/tcp, 8083-8084/tcp, 0.0.0.0:11883->1883/tcp, [::]:11883->1883/tcp, 0.0.0.0:18081->8081/tcp, [::]:18081->8081/tcp, 0.0.0.0:18883->8883/tcp, [::]:18883->8883/tcp, 0.0.0.0:38083->18083/tcp, [::]:38083->18083/tcp +smart-city-redpanda-console docker.redpanda.com/redpandadata/console:v2.5.0 Restarting (1) 1 second ago +stellio-api-gateway stellio/stellio-api-gateway:latest-dev Up 13 hours 8080/tcp +frost_allinone-web-1 fraunhoferiosb/frost-server:latest Up 2 days 1883/tcp, 8089/tcp, 127.0.0.1:8090->8080/tcp +geoserver_stack-geoserver-1 oscarfonts/geoserver:2.25.2 Up 2 days (healthy) 8080/tcp +grafana_stack-grafana-1 grafana/grafana:latest Up 2 days 3000/tcp +frost_http-web-1 fraunhoferiosb/frost-server-http:latest Up 2 days 8080/tcp +esperotech esperotech/yaade:latest Up 2 days 0.0.0.0:9339->9339/tcp, [::]:9339->9339/tcp +digital-twin-nodered nodered/node-red:3.1 Up 2 days (healthy) 0.0.0.0:1880->1880/tcp, [::]:1880->1880/tcp +digital-twin-connector python:3.11-slim Up About an hour +gitea gitea/gitea:latest Up 2 days 22/tcp, 3000/tcp +honcho-grafana-1 grafana/grafana:11.4.0 Up 2 days (healthy) 127.0.0.1:3088->3000/tcp +honcho-prometheus-1 prom/prometheus:v3.2.1 Up 2 days (healthy) 127.0.0.1:9091->9090/tcp +honcho-api-1 honcho:latest Restarting (1) 12 seconds ago +honcho-deriver-1 honcho-deriver Up 2 days (healthy) 8000/tcp +phpipam-phpipam-web-1 phpipam/phpipam-www:latest Up 2 days 127.0.0.1:8085->80/tcp +phpipam-phpipam-cron-1 phpipam/phpipam-cron:latest Up 2 days 80/tcp diff --git a/snapshots/2026-05-23/full-snapshot.json b/snapshots/2026-05-23/full-snapshot.json new file mode 100644 index 00000000..b9674582 --- /dev/null +++ b/snapshots/2026-05-23/full-snapshot.json @@ -0,0 +1,762 @@ +{ + "timestamp": "2026-05-23T08:23:31.144199", + "total": 117, + "stacks": { + "agent-gateway": [ + { + "name": "agentgateway", + "image": "cr.agentgateway.dev/agentgateway:latest", + "status": "Up 2 days", + "ports": "3000/tcp, 15000/tcp" + } + ], + "bunkerm": [ + { + "name": "bunkerm-bunkerm-1", + "image": "bunkeriot/bunkerm:latest", + "status": "Up 2 days (unhealthy)", + "ports": "0.0.0.0:1900->1900/tcp, [::]:1900->1900/tcp, 0.0.0.0:2000->2000/tcp, [::]:2000->2000/tcp" + } + ], + "chirpstack": [ + { + "name": "chirpstack-mosquitto-1", + "image": "eclipse-mosquitto:2", + "status": "Up 2 days", + "ports": "1883/tcp" + }, + { + "name": "chirpstack-postgres-1", + "image": "postgres:14-alpine", + "status": "Up 2 days", + "ports": "5432/tcp" + }, + { + "name": "chirpstack-redis-1", + "image": "redis:7-alpine", + "status": "Up 2 days", + "ports": "6379/tcp" + } + ], + "community-tools": [ + { + "name": "docker-exporter", + "image": "docker-exporter:latest", + "status": "Up 2 days", + "ports": "0.0.0.0:8005->8005/tcp, [::]:8005->8005/tcp" + } + ], + "contexus": [ + { + "name": "contexus-app", + "image": "contexusio/contexus:latest", + "status": "Up 19 hours (unhealthy)", + "ports": "15000/tcp" + }, + { + "name": "contexus-postgres", + "image": "postgres:16", + "status": "Up 2 days (healthy)", + "ports": "5432/tcp" + }, + { + "name": "contexus-redis", + "image": "redis:7-alpine", + "status": "Up 2 days (healthy)", + "ports": "6379/tcp" + } + ], + "digital-twin": [ + { + "name": "digital-twin-connector", + "image": "python:3.11-slim", + "status": "Up About an hour", + "ports": "" + }, + { + "name": "digital-twin-nodered", + "image": "nodered/node-red:3.1", + "status": "Up 2 days (healthy)", + "ports": "0.0.0.0:1880->1880/tcp, [::]:1880->1880/tcp" + } + ], + "docker_zookeeper_1": [ + { + "name": "docker_zookeeper_1", + "image": "zookeeper:3.8.1", + "status": "Up 2 days", + "ports": "2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, [::]:2181->2181/tcp, 8080/tcp, 0.0.0.0:32768->2181/tcp, [::]:32768->2181/tcp" + } + ], + "emqx": [ + { + "name": "emqx_emqx_1", + "image": "emqx/emqx:latest", + "status": "Up 2 days", + "ports": "4370/tcp, 5369/tcp, 8083-8084/tcp, 0.0.0.0:11883->1883/tcp, [::]:11883->1883/tcp, 0.0.0.0:18081->8081/tcp, [::]:18081->8081/tcp, 0.0.0.0:18883->8883/tcp, [::]:18883->8883/tcp, 0.0.0.0:38083->18083/tcp, [::]:38083->18083/tcp" + } + ], + "fiware": [ + { + "name": "fiware-gis-quickstart-mongo-db-1", + "image": "mongo:4.2", + "status": "Up 2 days", + "ports": "127.0.0.1:27017->27017/tcp" + }, + { + "name": "fiware-gis-quickstart-orion-1", + "image": "quay.io/fiware/orion-ld", + "status": "Up 2 days (healthy)", + "ports": "127.0.0.1:2026->1026/tcp" + }, + { + "name": "fiware-gis-quickstart-orionproxy-1", + "image": "fiware-gis-quickstart-orionproxy", + "status": "Up 2 days", + "ports": "127.0.0.1:1026->80/tcp" + } + ], + "frost": [ + { + "name": "frost_allinone-web-1", + "image": "fraunhoferiosb/frost-server:latest", + "status": "Up 2 days", + "ports": "1883/tcp, 8089/tcp, 127.0.0.1:8090->8080/tcp" + }, + { + "name": "frost_http-web-1", + "image": "fraunhoferiosb/frost-server-http:latest", + "status": "Up 2 days", + "ports": "8080/tcp" + } + ], + "geoserver": [ + { + "name": "geoserver_stack-geoserver-1", + "image": "oscarfonts/geoserver:2.25.2", + "status": "Up 2 days (healthy)", + "ports": "8080/tcp" + } + ], + "gitea": [ + { + "name": "gitea", + "image": "gitea/gitea:latest", + "status": "Up 2 days", + "ports": "22/tcp, 3000/tcp" + } + ], + "grafana-stack": [ + { + "name": "grafana_stack-grafana-1", + "image": "grafana/grafana:latest", + "status": "Up 2 days", + "ports": "3000/tcp" + } + ], + "honcho": [ + { + "name": "honcho-api-1", + "image": "honcho:latest", + "status": "Restarting (1) 12 seconds ago", + "ports": "" + }, + { + "name": "honcho-deriver-1", + "image": "honcho-deriver", + "status": "Up 2 days (healthy)", + "ports": "8000/tcp" + }, + { + "name": "honcho-grafana-1", + "image": "grafana/grafana:11.4.0", + "status": "Up 2 days (healthy)", + "ports": "127.0.0.1:3088->3000/tcp" + }, + { + "name": "honcho-prometheus-1", + "image": "prom/prometheus:v3.2.1", + "status": "Up 2 days (healthy)", + "ports": "127.0.0.1:9091->9090/tcp" + } + ], + "localai": [ + { + "name": "8a0cce6d1940_localai-api-1", + "image": "localai/localai:latest", + "status": "Exited (0) 2 days ago", + "ports": "" + }, + { + "name": "localai-api", + "image": "localai/localai:latest", + "status": "Up 2 days (healthy)", + "ports": "8080/tcp" + } + ], + "mainflux": [ + { + "name": "mainfluxlabs-alarms-db", + "image": "postgres:13.3-alpine", + "status": "Up 2 days", + "ports": "5432/tcp" + }, + { + "name": "mainfluxlabs-alarms", + "image": "mainfluxlabs/alarms:v0.36.1", + "status": "Up 2 days", + "ports": "0.0.0.0:9026->9026/tcp, [::]:9026->9026/tcp" + }, + { + "name": "mainfluxlabs-auth-db", + "image": "postgres:13.3-alpine", + "status": "Up 2 days", + "ports": "5432/tcp" + }, + { + "name": "mainfluxlabs-auth-redis", + "image": "redis:6.2.2-alpine", + "status": "Up 2 days", + "ports": "6379/tcp" + }, + { + "name": "mainfluxlabs-auth", + "image": "mainfluxlabs/auth:v0.36.1", + "status": "Up 2 days", + "ports": "0.0.0.0:8181->8181/tcp, [::]:8181->8181/tcp, 0.0.0.0:8189->8189/tcp, [::]:8189->8189/tcp" + }, + { + "name": "mainfluxlabs-broker", + "image": "nats:2.2.4-alpine", + "status": "Up 2 days", + "ports": "6222/tcp, 0.0.0.0:4222->4222/tcp, [::]:4222->4222/tcp, 8222/tcp" + }, + { + "name": "mainfluxlabs-certs-db", + "image": "postgres:13.3-alpine", + "status": "Up 2 days", + "ports": "5432/tcp" + }, + { + "name": "mainfluxlabs-certs", + "image": "mainfluxlabs/certs:v0.36.1", + "status": "Up 2 days", + "ports": "0.0.0.0:8204->8204/tcp, [::]:8204->8204/tcp" + }, + { + "name": "mainfluxlabs-coap", + "image": "mainfluxlabs/coap:v0.36.1", + "status": "Up 2 days", + "ports": "0.0.0.0:5683->5683/tcp, 0.0.0.0:5683->5683/udp, [::]:5683->5683/tcp, [::]:5683->5683/udp" + }, + { + "name": "mainfluxlabs-converters", + "image": "mainfluxlabs/converters:v0.36.1", + "status": "Up 2 days", + "ports": "0.0.0.0:8195->8195/tcp, [::]:8195->8195/tcp" + }, + { + "name": "mainfluxlabs-downlinks-db", + "image": "postgres:13.3-alpine", + "status": "Up 2 days", + "ports": "5432/tcp" + }, + { + "name": "mainfluxlabs-downlinks", + "image": "mainfluxlabs/downlinks:v0.36.1", + "status": "Up 2 days", + "ports": "0.0.0.0:9025->9025/tcp, [::]:9025->9025/tcp" + }, + { + "name": "mainfluxlabs-es-redis", + "image": "redis:6.2.2-alpine", + "status": "Up 2 days", + "ports": "6379/tcp" + }, + { + "name": "mainfluxlabs-filestore-db", + "image": "postgres:13.3-alpine", + "status": "Up 2 days", + "ports": "5432/tcp" + }, + { + "name": "mainfluxlabs-filestore", + "image": "mainfluxlabs/filestore:v0.36.1", + "status": "Up 2 days", + "ports": "0.0.0.0:9022->9022/tcp, [::]:9022->9022/tcp" + }, + { + "name": "mainfluxlabs-http", + "image": "mainfluxlabs/http:v0.36.1", + "status": "Up 2 days", + "ports": "0.0.0.0:8185->8185/tcp, [::]:8185->8185/tcp" + }, + { + "name": "mainfluxlabs-jaeger", + "image": "jaegertracing/all-in-one:1.53", + "status": "Exited (255) 2 days ago", + "ports": "5775/udp, 4317-4318/tcp, 9411/tcp, 0.0.0.0:5778->5778/tcp, [::]:5778->5778/tcp, 0.0.0.0:14268->14268/tcp, [::]:14268->14268/tcp, 14250/tcp, 6832/udp, 0.0.0.0:16686->16686/tcp, [::]:16686->16686/tcp, 0.0.0.0:6831->6831/udp, [::]:6831->6831/udp" + }, + { + "name": "mainfluxlabs-modbus-db", + "image": "postgres:13.3-alpine", + "status": "Up 2 days", + "ports": "5432/tcp" + }, + { + "name": "mainfluxlabs-modbus", + "image": "mainfluxlabs/modbus:v0.36.1", + "status": "Up 2 days", + "ports": "0.0.0.0:9028->9028/tcp, [::]:9028->9028/tcp" + }, + { + "name": "mainfluxlabs-mosquitto", + "image": "eclipse-mosquitto:2.0", + "status": "Up 2 days", + "ports": "1883/tcp" + }, + { + "name": "mainfluxlabs-mqtt-db", + "image": "postgres:13.3-alpine", + "status": "Up 2 days", + "ports": "5432/tcp" + }, + { + "name": "mainfluxlabs-mqtt", + "image": "mainfluxlabs/mqtt:v0.36.1", + "status": "Up 2 days", + "ports": "" + }, + { + "name": "mainfluxlabs-postgres-reader", + "image": "mainfluxlabs/postgres-reader:v0.36.1", + "status": "Up 2 days", + "ports": "0.0.0.0:8905->8905/tcp, [::]:8905->8905/tcp" + }, + { + "name": "mainfluxlabs-postgres-writer", + "image": "mainfluxlabs/postgres-writer:v0.36.1", + "status": "Up 2 days", + "ports": "0.0.0.0:8900->8900/tcp, [::]:8900->8900/tcp" + }, + { + "name": "mainfluxlabs-postgres", + "image": "postgres:13.3-alpine", + "status": "Up 2 days", + "ports": "5432/tcp" + }, + { + "name": "mainfluxlabs-rules-db", + "image": "postgres:13.3-alpine", + "status": "Up 2 days", + "ports": "5432/tcp" + }, + { + "name": "mainfluxlabs-rules", + "image": "mainfluxlabs/rules:v0.36.1", + "status": "Up 2 days", + "ports": "0.0.0.0:9027->9027/tcp, [::]:9027->9027/tcp" + }, + { + "name": "mainfluxlabs-smtp-notifier-db", + "image": "postgres:13.3-alpine", + "status": "Up 2 days", + "ports": "5432/tcp" + }, + { + "name": "mainfluxlabs-smtp-notifier", + "image": "mainfluxlabs/smtp-notifier:v0.36.1", + "status": "Up 2 days", + "ports": "0.0.0.0:9023->9023/tcp, [::]:9023->9023/tcp" + }, + { + "name": "mainfluxlabs-things-db", + "image": "postgres:13.3-alpine", + "status": "Up 2 days (healthy)", + "ports": "5432/tcp" + }, + { + "name": "mainfluxlabs-things", + "image": "mainfluxlabs/things:v0.36.1", + "status": "Up 2 days", + "ports": "0.0.0.0:8182-8183->8182-8183/tcp, [::]:8182-8183->8182-8183/tcp, 0.0.0.0:8989->8989/tcp, [::]:8989->8989/tcp" + }, + { + "name": "mainfluxlabs-uiconfigs-db", + "image": "postgres:13.3-alpine", + "status": "Up 2 days", + "ports": "5432/tcp" + }, + { + "name": "mainfluxlabs-uiconfigs", + "image": "mainfluxlabs/uiconfigs:v0.36.1", + "status": "Up 2 days", + "ports": "0.0.0.0:9029->9029/tcp, [::]:9029->9029/tcp" + }, + { + "name": "mainfluxlabs-ui", + "image": "mainfluxlabs/ui:v0.36.1", + "status": "Up 2 days", + "ports": "80/tcp, 0.0.0.0:3000->3000/tcp, [::]:3000->3000/tcp" + }, + { + "name": "mainfluxlabs-users-db", + "image": "postgres:13.3-alpine", + "status": "Up 2 days (healthy)", + "ports": "5432/tcp" + }, + { + "name": "mainfluxlabs-users", + "image": "mainfluxlabs/users:v0.36.1", + "status": "Up 2 days", + "ports": "0.0.0.0:8180->8180/tcp, [::]:8180->8180/tcp, 0.0.0.0:8184->8184/tcp, [::]:8184->8184/tcp" + }, + { + "name": "mainfluxlabs-webhooks-db", + "image": "postgres:13.3-alpine", + "status": "Up 2 days", + "ports": "5432/tcp" + }, + { + "name": "mainfluxlabs-webhooks", + "image": "mainfluxlabs/webhooks:v0.36.1", + "status": "Up 2 days", + "ports": "0.0.0.0:9021->9021/tcp, [::]:9021->9021/tcp" + }, + { + "name": "mainfluxlabs-ws", + "image": "mainfluxlabs/ws:v0.36.1", + "status": "Up 2 days", + "ports": "0.0.0.0:8190->8190/tcp, [::]:8190->8190/tcp" + } + ], + "mapstore": [ + { + "name": "mapstore-app", + "image": "geosolutionsit/mapstore2:latest", + "status": "Up 2 days", + "ports": "8080/tcp" + }, + { + "name": "mapstore-postgres", + "image": "geosolutions-mapstore/postgis", + "status": "Up 2 days (healthy)", + "ports": "5432/tcp" + }, + { + "name": "mapstore-proxy", + "image": "nginx", + "status": "Up 2 days", + "ports": "80/tcp" + } + ], + "phpipam": [ + { + "name": "phpipam-phpipam-cron-1", + "image": "phpipam/phpipam-cron:latest", + "status": "Up 2 days", + "ports": "80/tcp" + }, + { + "name": "phpipam-phpipam-web-1", + "image": "phpipam/phpipam-www:latest", + "status": "Up 2 days", + "ports": "127.0.0.1:8085->80/tcp" + } + ], + "postgis-smartcity": [ + { + "name": "postgis-smartcity", + "image": "postgis/postgis:15-3.4", + "status": "Up 2 days (healthy)", + "ports": "0.0.0.0:5433->5432/tcp, [::]:5433->5432/tcp" + } + ], + "smart-city-core": [ + { + "name": "smart-city-digital-twin-martinique-chirpstack-1", + "image": "chirpstack/chirpstack:latest", + "status": "Up 2 days", + "ports": "" + }, + { + "name": "smart-city-digital-twin-martinique-chirpstack-gateway-bridge-1", + "image": "chirpstack/chirpstack-gateway-bridge:4", + "status": "Up 2 days", + "ports": "0.0.0.0:1700->1700/udp, [::]:1700->1700/udp" + }, + { + "name": "smart-city-digital-twin-martinique-chirpstack-gateway-bridge-basicstation-1", + "image": "chirpstack/chirpstack-gateway-bridge:4", + "status": "Up 2 days", + "ports": "" + }, + { + "name": "smart-city-digital-twin-martinique-chirpstack-rest-api-1", + "image": "chirpstack/chirpstack-rest-api:4", + "status": "Up 2 days", + "ports": "" + }, + { + "name": "smart-city-grafana", + "image": "grafana/grafana:10.2.0", + "status": "Up 2 days", + "ports": "0.0.0.0:3001->3000/tcp, [::]:3001->3000/tcp" + }, + { + "name": "smart-city-influxdb", + "image": "influxdb:2.7-alpine", + "status": "Up 2 days (healthy)", + "ports": "0.0.0.0:8086->8086/tcp, [::]:8086->8086/tcp" + }, + { + "name": "smart-city-kepler", + "image": "smart-city-kepler:latest", + "status": "Up 2 days", + "ports": "80/tcp, 8080/tcp" + }, + { + "name": "smart-city-loki", + "image": "grafana/loki:latest", + "status": "Up 2 days", + "ports": "0.0.0.0:3100->3100/tcp, [::]:3100->3100/tcp" + }, + { + "name": "smart-city-prometheus-brokers", + "image": "prom/prometheus:latest", + "status": "Exited (255) 2 days ago", + "ports": "" + }, + { + "name": "smart-city-promtail", + "image": "grafana/promtail:latest", + "status": "Up 2 days", + "ports": "" + }, + { + "name": "smart-city-pulsar-manager-db", + "image": "postgres:15-alpine", + "status": "Exited (0) 2 days ago", + "ports": "" + }, + { + "name": "smart-city-pulsar-manager", + "image": "apachepulsar/pulsar-manager:v0.2.0", + "status": "Exited (137) 2 days ago", + "ports": "" + }, + { + "name": "smart-city-pulsar", + "image": "apachepulsar/pulsar:3.2.0", + "status": "Exited (137) 2 days ago", + "ports": "" + }, + { + "name": "smart-city-redpanda-console", + "image": "docker.redpanda.com/redpandadata/console:v2.5.0", + "status": "Restarting (1) 9 seconds ago", + "ports": "" + }, + { + "name": "smart-city-redpanda", + "image": "redpandadata/redpanda:v24.3.14", + "status": "Exited (255) 2 days ago", + "ports": "8081/tcp, 127.0.0.1:8082->8082/tcp, 0.0.0.0:19092->9092/tcp, [::]:19092->9092/tcp, 0.0.0.0:19644->9644/tcp, [::]:19644->9644/tcp" + }, + { + "name": "smart-city-simulator", + "image": "smart-city-digital-twin-martinique-simulator", + "status": "Up 55 seconds", + "ports": "8081/tcp" + }, + { + "name": "smart-city-telegraf", + "image": "telegraf:1.28", + "status": "Restarting (1) 6 seconds ago", + "ports": "" + } + ], + "smart-city-iot": [ + { + "name": "smart-city-digital-twin-martinique-mosquitto-1", + "image": "eclipse-mosquitto:2", + "status": "Up 2 days", + "ports": "1883/tcp" + }, + { + "name": "smart-city-digital-twin-martinique-redis-1", + "image": "redis:7-alpine", + "status": "Up 2 days", + "ports": "6379/tcp" + }, + { + "name": "smart-city-ditto-gateway", + "image": "eclipse/ditto-gateway:latest", + "status": "Up 20 hours", + "ports": "8080/tcp" + }, + { + "name": "smart-city-ditto-mongodb", + "image": "mongo:6", + "status": "Up 2 days", + "ports": "27017/tcp" + }, + { + "name": "smart-city-ditto-policies", + "image": "eclipse/ditto-policies:latest", + "status": "Up 2 days", + "ports": "8080/tcp" + } + ], + "stellio": [ + { + "name": "stellio-api-gateway", + "image": "stellio/stellio-api-gateway:latest-dev", + "status": "Up 13 hours", + "ports": "8080/tcp" + }, + { + "name": "stellio-kafka", + "image": "confluentinc/cp-kafka:8.1.0", + "status": "Exited (255) 2 days ago", + "ports": "9092/tcp, 0.0.0.0:29092->29092/tcp, [::]:29092->29092/tcp" + }, + { + "name": "stellio-postgres", + "image": "stellio/stellio-timescale-postgis:16-2.24.0-3.6", + "status": "Exited (255) 2 days ago", + "ports": "5432/tcp" + }, + { + "name": "stellio-search-service", + "image": "stellio/stellio-search-service:latest-dev", + "status": "Exited (255) 2 days ago", + "ports": "8083/tcp" + }, + { + "name": "stellio-subscription-service", + "image": "stellio/stellio-subscription-service:latest-dev", + "status": "Exited (255) 2 days ago", + "ports": "8084/tcp" + } + ], + "thingsboard": [ + { + "name": "docker_tb-js-executor_10", + "image": "thingsboard/tb-js-executor:latest", + "status": "Restarting (0) 15 seconds ago", + "ports": "" + }, + { + "name": "docker_tb-js-executor_1", + "image": "thingsboard/tb-js-executor:latest", + "status": "Up 24 seconds", + "ports": "" + }, + { + "name": "docker_tb-js-executor_2", + "image": "thingsboard/tb-js-executor:latest", + "status": "Restarting (0) 23 seconds ago", + "ports": "" + }, + { + "name": "docker_tb-js-executor_3", + "image": "thingsboard/tb-js-executor:latest", + "status": "Restarting (0) 23 seconds ago", + "ports": "" + }, + { + "name": "docker_tb-js-executor_4", + "image": "thingsboard/tb-js-executor:latest", + "status": "Restarting (137) 15 seconds ago", + "ports": "" + }, + { + "name": "docker_tb-js-executor_5", + "image": "thingsboard/tb-js-executor:latest", + "status": "Up 26 seconds", + "ports": "" + }, + { + "name": "docker_tb-js-executor_6", + "image": "thingsboard/tb-js-executor:latest", + "status": "Restarting (0) Less than a second ago", + "ports": "" + }, + { + "name": "docker_tb-js-executor_7", + "image": "thingsboard/tb-js-executor:latest", + "status": "Up 29 seconds", + "ports": "" + }, + { + "name": "docker_tb-js-executor_8", + "image": "thingsboard/tb-js-executor:latest", + "status": "Restarting (0) 22 seconds ago", + "ports": "" + }, + { + "name": "docker_tb-js-executor_9", + "image": "thingsboard/tb-js-executor:latest", + "status": "Restarting (137) 13 seconds ago", + "ports": "" + }, + { + "name": "docker_tb-rule-engine1_1", + "image": "thingsboard/tb-node:latest", + "status": "Created", + "ports": "" + }, + { + "name": "docker_tb-rule-engine2_1", + "image": "thingsboard/tb-node:latest", + "status": "Created", + "ports": "" + }, + { + "name": "docker_tb-web-ui1_1", + "image": "thingsboard/tb-web-ui:latest", + "status": "Up 2 days", + "ports": "0.0.0.0:32769->8080/tcp, [::]:32769->8080/tcp" + }, + { + "name": "docker_tb-web-ui2_1", + "image": "thingsboard/tb-web-ui:latest", + "status": "Up 2 days", + "ports": "0.0.0.0:32770->8080/tcp, [::]:32770->8080/tcp" + } + ], + "thingsboard-postgres": [ + { + "name": "thingsboard-postgres", + "image": "postgres:15-alpine", + "status": "Up 2 days (healthy)", + "ports": "5432/tcp" + } + ], + "thingsboard-rabbitmq": [ + { + "name": "thingsboard-rabbitmq", + "image": "rabbitmq:3.12-management", + "status": "Up 2 days (healthy)", + "ports": "4369/tcp, 5671-5672/tcp, 15671-15672/tcp, 15691-15692/tcp, 25672/tcp" + } + ], + "traefik": [ + { + "name": "traefik", + "image": "traefik:v3.1", + "status": "Up 33 hours", + "ports": "0.0.0.0:80->80/tcp, [::]:80->80/tcp, 0.0.0.0:443->443/tcp, [::]:443->443/tcp, 0.0.0.0:8404->8404/tcp, [::]:8404->8404/tcp" + } + ], + "yaade": [ + { + "name": "esperotech", + "image": "esperotech/yaade:latest", + "status": "Up 2 days", + "ports": "0.0.0.0:9339->9339/tcp, [::]:9339->9339/tcp" + } + ] + } +} \ No newline at end of file diff --git a/snapshots/2026-05-25/ARCHITECTURE.md b/snapshots/2026-05-25/ARCHITECTURE.md new file mode 100644 index 00000000..5670b4f5 --- /dev/null +++ b/snapshots/2026-05-25/ARCHITECTURE.md @@ -0,0 +1,49 @@ +# Smart City Digital Twin — Architecture État Actuel (snapshot) + +> **Date**: 2026-05-25 ~18:45 UTC +> **Total containers**: 117 + +## 📡 Pipeline Données (IOT → Stockage → Visualisation) + +``` +┌──────────────┐ MQTT topics: ┌──────────┐ ┌───────────┐ ┌────────────┐ +│ Simulator │──── smartcity/●/● ──▶│ EMQX │────▶│ Telegraf ────▶│ InfluxDB │ +│ (60 sensors)│ " │ (v5.0) │ │ (mqtt_ │ │ (v2.7) │ +│ │──── smartcity/●/● ──▶│ │ │ consumer)│ │ │ +│ ENABLE_BUNKER│ " │ │ │ influxdb │────▶│ bucket: │ +│ =0 (off) │ │ │ │ _v2) │ │ "smartcity"│ +└──────────────┘ └──────────┘ └───────────┘ └─────┬──────┘ + │ + Mosquitto (chirpstack) ◀── allow_anonymous=true ── config mosquitto.conf │ + (no data visible in logs yet) │ + ▼ + ┌────────────┐ + │ Grafana │ + │ Dashboard │ + │ Smart City │ + └────────────┘ +``` + +## 🏗️ Stacks actives (principales) + +| Stack | Containers | État | Réseau | +|-------|-----------|------|--------| +| **OpenRemote** | postgresql (timescaledb-ha), keycloak, manager | PG: starting, KC: healthy, Manager: starting | smartcity-shared + openremote_default | +| **Smart City Core** | simulator, telegraf, grafana, influxdb, prometheus | UP | smartcity-shared | +| **FIWARE GIS** | orion-ld, orionproxy | healthy | smartcity-shared | +| **ChirpStack** | chirpstack, mosquitto, postgres, redis | UP | dédié + smartcity-shared | +| **Ditto** | gateway, policies, mongodb | UP/restarting | dédié | +| **Contexus** | app (unhealthy), postgres (healthy), redis (healthy) | mixed | smartcity-shared | +| **Mainflux** | 15+ microservices, mqtt, jaeger (exited) | mixed | dédié | +| **Stellio** | api-gateway (UP), search+subscription+kafka+postgres (exited) | broken | dédié | +| **Traefik** | traefik:v3.1 | UP | traefik-public | + +## ⚠️ Points connus + +- **OpenRemote** : crash loop corrigé (image PG changée), à redémarrer +- **Telegraf** : fixé (noms containers + BunkerM désactivé) +- **Stellio** : cassé (kafka + postgres exited) — NGSI-LD lowest priority +- **Contexus** : app unhealthy +- **Pulsar/Redpanda** : arrêtés (stabilité CPU) +- **BunkerM** : unhealthy, port 1900 (port MQTT originel) +- **Simulator** : MQTT OK 1/2 — un seul broker sur deux (Mosquitto?) diff --git a/snapshots/2026-05-25/full-snapshot.json b/snapshots/2026-05-25/full-snapshot.json new file mode 100644 index 00000000..150e4efa --- /dev/null +++ b/snapshots/2026-05-25/full-snapshot.json @@ -0,0 +1,825 @@ +{ + "timestamp": "2026-05-25T18:09:53.673741+00:00", + "total": 117, + "containers": [ + { + "name": "openremote-postgresql", + "image": "timescale/timescaledb-ha:pg15", + "status": "Created", + "ports": "", + "networks": "smartcity-shared" + }, + { + "name": "openremote-manager", + "image": "openremote/manager:latest", + "status": "Up 3 minutes (health: starting)", + "ports": "1883/tcp, 8080/tcp, 8443/tcp", + "networks": "smartcity-shared" + }, + { + "name": "openremote-keycloak", + "image": "quay.io/keycloak/keycloak:24.0", + "status": "Up 27 hours (healthy)", + "ports": "8080/tcp, 8443/tcp", + "networks": "smartcity-shared" + }, + { + "name": "smart-city-simulator", + "image": "smart-city-simulator", + "status": "Up 2 days", + "ports": "8081/tcp", + "networks": "traefik-public,openremote_default,smartcity-shared" + }, + { + "name": "traefik", + "image": "traefik:v3.1", + "status": "Up 3 days", + "ports": "0.0.0.0:80->80/tcp, [::]:80->80/tcp, 0.0.0.0:443->443/tcp, [::]:443->443/tcp, 0.0.0.0:8404->8404/tcp, [::]:8404->8404/tcp", + "networks": "smartcity-shared" + }, + { + "name": "smart-city-loki", + "image": "grafana/loki:latest", + "status": "Up 4 days", + "ports": "0.0.0.0:3100->3100/tcp, [::]:3100->3100/tcp", + "networks": "traefik-public,smartcity-shared" + }, + { + "name": "smart-city-promtail", + "image": "grafana/promtail:latest", + "status": "Up 4 days", + "ports": "", + "networks": "smartcity-shared,traefik-public" + }, + { + "name": "localai-api", + "image": "localai/localai:latest", + "status": "Up 5 days (healthy)", + "ports": "8080/tcp", + "networks": "traefik-public" + }, + { + "name": "mainfluxlabs-mqtt", + "image": "mainfluxlabs/mqtt:v0.36.1", + "status": "Up 5 days", + "ports": "", + "networks": "mainflux-network,smartcity-shared" + }, + { + "name": "docker_tb-js-executor_10", + "image": "thingsboard/tb-js-executor:latest", + "status": "Up 36 seconds", + "ports": "", + "networks": "docker_default" + }, + { + "name": "docker_tb-js-executor_8", + "image": "thingsboard/tb-js-executor:latest", + "status": "Up 30 seconds", + "ports": "", + "networks": "docker_default" + }, + { + "name": "docker_tb-js-executor_9", + "image": "thingsboard/tb-js-executor:latest", + "status": "Restarting (0) 9 seconds ago", + "ports": "", + "networks": "docker_default" + }, + { + "name": "docker_tb-web-ui1_1", + "image": "thingsboard/tb-web-ui:latest", + "status": "Up 5 days", + "ports": "0.0.0.0:32769->8080/tcp, [::]:32769->8080/tcp", + "networks": "docker_default" + }, + { + "name": "docker_tb-js-executor_6", + "image": "thingsboard/tb-js-executor:latest", + "status": "Up 19 seconds", + "ports": "", + "networks": "docker_default" + }, + { + "name": "docker_zookeeper_1", + "image": "zookeeper:3.8.1", + "status": "Up 5 days", + "ports": "2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, [::]:2181->2181/tcp, 8080/tcp, 0.0.0.0:32768->2181/tcp, [::]:32768->2181/tcp", + "networks": "docker_default" + }, + { + "name": "docker_tb-js-executor_7", + "image": "thingsboard/tb-js-executor:latest", + "status": "Up 10 seconds", + "ports": "", + "networks": "docker_default" + }, + { + "name": "docker_tb-js-executor_4", + "image": "thingsboard/tb-js-executor:latest", + "status": "Restarting (0) 1 second ago", + "ports": "", + "networks": "docker_default" + }, + { + "name": "docker_tb-js-executor_5", + "image": "thingsboard/tb-js-executor:latest", + "status": "Restarting (0) 11 seconds ago", + "ports": "", + "networks": "docker_default" + }, + { + "name": "docker_tb-js-executor_2", + "image": "thingsboard/tb-js-executor:latest", + "status": "Up 15 seconds", + "ports": "", + "networks": "docker_default" + }, + { + "name": "docker_tb-js-executor_1", + "image": "thingsboard/tb-js-executor:latest", + "status": "Up 22 seconds", + "ports": "", + "networks": "docker_default" + }, + { + "name": "docker_tb-js-executor_3", + "image": "thingsboard/tb-js-executor:latest", + "status": "Restarting (0) 6 seconds ago", + "ports": "", + "networks": "docker_default" + }, + { + "name": "docker_tb-web-ui2_1", + "image": "thingsboard/tb-web-ui:latest", + "status": "Up 5 days", + "ports": "0.0.0.0:32770->8080/tcp, [::]:32770->8080/tcp", + "networks": "docker_default" + }, + { + "name": "contexus-app", + "image": "contexusio/contexus:latest", + "status": "Up 3 days (unhealthy)", + "ports": "15000/tcp", + "networks": "contexus-iot-network,smartcity-shared,traefik-public" + }, + { + "name": "contexus-postgres", + "image": "postgres:16", + "status": "Up 5 days (healthy)", + "ports": "5432/tcp", + "networks": "contexus-iot-network" + }, + { + "name": "contexus-redis", + "image": "redis:7-alpine", + "status": "Up 5 days (healthy)", + "ports": "6379/tcp", + "networks": "contexus-iot-network" + }, + { + "name": "smart-city-kepler", + "image": "smart-city-kepler:latest", + "status": "Up 5 days", + "ports": "80/tcp, 8080/tcp", + "networks": "smartcity-shared,traefik-public" + }, + { + "name": "postgis-smartcity", + "image": "postgis/postgis:15-3.4", + "status": "Up 5 days (healthy)", + "ports": "0.0.0.0:5433->5432/tcp, [::]:5433->5432/tcp", + "networks": "smartcity-shared" + }, + { + "name": "smart-city-ditto-policies", + "image": "eclipse/ditto-policies:latest", + "status": "Up 5 days", + "ports": "8080/tcp", + "networks": "traefik-public" + }, + { + "name": "smart-city-ditto-gateway", + "image": "eclipse/ditto-gateway:latest", + "status": "Up 3 days", + "ports": "8080/tcp", + "networks": "traefik-public" + }, + { + "name": "smart-city-ditto-mongodb", + "image": "mongo:6", + "status": "Up 5 days", + "ports": "27017/tcp", + "networks": "traefik-public" + }, + { + "name": "smart-city-digital-twin-martinique-chirpstack-rest-api-1", + "image": "chirpstack/chirpstack-rest-api:4", + "status": "Up 5 days", + "ports": "", + "networks": "smartcity-shared" + }, + { + "name": "smart-city-digital-twin-martinique-chirpstack-1", + "image": "chirpstack/chirpstack:latest", + "status": "Up 5 days", + "ports": "", + "networks": "smartcity-shared" + }, + { + "name": "agentgateway", + "image": "cr.agentgateway.dev/agentgateway:latest", + "status": "Up 5 days", + "ports": "3000/tcp, 15000/tcp", + "networks": "traefik-public" + }, + { + "name": "smart-city-digital-twin-martinique-chirpstack-gateway-bridge-basicstation-1", + "image": "chirpstack/chirpstack-gateway-bridge:4", + "status": "Up 5 days", + "ports": "", + "networks": "traefik-public,smartcity-shared" + }, + { + "name": "smart-city-digital-twin-martinique-chirpstack-gateway-bridge-1", + "image": "chirpstack/chirpstack-gateway-bridge:4", + "status": "Up 5 days", + "ports": "0.0.0.0:1700->1700/udp, [::]:1700->1700/udp", + "networks": "smartcity-shared" + }, + { + "name": "smart-city-digital-twin-martinique-mosquitto-1", + "image": "eclipse-mosquitto:2", + "status": "Up 5 days", + "ports": "1883/tcp", + "networks": "smartcity-shared" + }, + { + "name": "smart-city-digital-twin-martinique-redis-1", + "image": "redis:7-alpine", + "status": "Up 5 days", + "ports": "6379/tcp", + "networks": "smartcity-shared" + }, + { + "name": "bunkerm-bunkerm-1", + "image": "bunkeriot/bunkerm:latest", + "status": "Up 5 days (unhealthy)", + "ports": "0.0.0.0:1900->1900/tcp, [::]:1900->1900/tcp, 0.0.0.0:2000->2000/tcp, [::]:2000->2000/tcp", + "networks": "smartcity-shared,traefik-public" + }, + { + "name": "chirpstack-redis-1", + "image": "redis:7-alpine", + "status": "Up 5 days", + "ports": "6379/tcp", + "networks": "smartcity-shared" + }, + { + "name": "chirpstack-mosquitto-1", + "image": "eclipse-mosquitto:2", + "status": "Up 5 days", + "ports": "1883/tcp", + "networks": "smartcity-shared" + }, + { + "name": "chirpstack-postgres-1", + "image": "postgres:14-alpine", + "status": "Up 5 days", + "ports": "5432/tcp", + "networks": "smartcity-shared" + }, + { + "name": "smart-city-prometheus-brokers", + "image": "prom/prometheus:latest", + "status": "Up 14 hours", + "ports": "", + "networks": "" + }, + { + "name": "fiware-gis-quickstart-orionproxy-1", + "image": "fiware-gis-quickstart-orionproxy", + "status": "Up 5 days", + "ports": "127.0.0.1:1026->80/tcp", + "networks": "fiware-gis-quickstart_fiware" + }, + { + "name": "fiware-gis-quickstart-orion-1", + "image": "quay.io/fiware/orion-ld", + "status": "Up 5 days (healthy)", + "ports": "127.0.0.1:2026->1026/tcp", + "networks": "fiware-gis-quickstart_fiware,traefik-public" + }, + { + "name": "fiware-gis-quickstart-mongo-db-1", + "image": "mongo:4.2", + "status": "Up 5 days", + "ports": "127.0.0.1:27017->27017/tcp", + "networks": "fiware-gis-quickstart_fiware" + }, + { + "name": "smart-city-influxdb", + "image": "influxdb:2.7-alpine", + "status": "Up 5 days (healthy)", + "ports": "0.0.0.0:8086->8086/tcp, [::]:8086->8086/tcp", + "networks": "smartcity-shared,traefik-public" + }, + { + "name": "smart-city-telegraf", + "image": "telegraf:1.28", + "status": "Up 2 hours", + "ports": "8092/udp, 8125/udp, 8094/tcp", + "networks": "smartcity-shared" + }, + { + "name": "smart-city-grafana", + "image": "grafana/grafana:10.2.0", + "status": "Up 5 days", + "ports": "0.0.0.0:3001->3000/tcp, [::]:3001->3000/tcp", + "networks": "smartcity-shared,traefik-public" + }, + { + "name": "docker-exporter", + "image": "docker-exporter:latest", + "status": "Up 5 days", + "ports": "0.0.0.0:8005->8005/tcp, [::]:8005->8005/tcp", + "networks": "bridge" + }, + { + "name": "mainfluxlabs-http", + "image": "mainfluxlabs/http:v0.36.1", + "status": "Up 5 days", + "ports": "0.0.0.0:8185->8185/tcp, [::]:8185->8185/tcp", + "networks": "mainflux-network,smartcity-shared" + }, + { + "name": "mainfluxlabs-rules", + "image": "mainfluxlabs/rules:v0.36.1", + "status": "Up 5 days", + "ports": "0.0.0.0:9027->9027/tcp, [::]:9027->9027/tcp", + "networks": "mainflux-network" + }, + { + "name": "mainfluxlabs-converters", + "image": "mainfluxlabs/converters:v0.36.1", + "status": "Up 5 days", + "ports": "0.0.0.0:8195->8195/tcp, [::]:8195->8195/tcp", + "networks": "mainflux-network" + }, + { + "name": "mainfluxlabs-smtp-notifier", + "image": "mainfluxlabs/smtp-notifier:v0.36.1", + "status": "Up 5 days", + "ports": "0.0.0.0:9023->9023/tcp, [::]:9023->9023/tcp", + "networks": "mainflux-network" + }, + { + "name": "mainfluxlabs-modbus", + "image": "mainfluxlabs/modbus:v0.36.1", + "status": "Up 5 days", + "ports": "0.0.0.0:9028->9028/tcp, [::]:9028->9028/tcp", + "networks": "mainflux-network" + }, + { + "name": "mainfluxlabs-ws", + "image": "mainfluxlabs/ws:v0.36.1", + "status": "Up 5 days", + "ports": "0.0.0.0:8190->8190/tcp, [::]:8190->8190/tcp", + "networks": "mainflux-network" + }, + { + "name": "mainfluxlabs-webhooks", + "image": "mainfluxlabs/webhooks:v0.36.1", + "status": "Up 5 days", + "ports": "0.0.0.0:9021->9021/tcp, [::]:9021->9021/tcp", + "networks": "mainflux-network" + }, + { + "name": "mainfluxlabs-downlinks", + "image": "mainfluxlabs/downlinks:v0.36.1", + "status": "Up 5 days", + "ports": "0.0.0.0:9025->9025/tcp, [::]:9025->9025/tcp", + "networks": "mainflux-network" + }, + { + "name": "mainfluxlabs-alarms", + "image": "mainfluxlabs/alarms:v0.36.1", + "status": "Up 5 days", + "ports": "0.0.0.0:9026->9026/tcp, [::]:9026->9026/tcp", + "networks": "mainflux-network" + }, + { + "name": "mainfluxlabs-filestore", + "image": "mainfluxlabs/filestore:v0.36.1", + "status": "Up 5 days", + "ports": "0.0.0.0:9022->9022/tcp, [::]:9022->9022/tcp", + "networks": "mainflux-network" + }, + { + "name": "mainfluxlabs-coap", + "image": "mainfluxlabs/coap:v0.36.1", + "status": "Up 5 days", + "ports": "0.0.0.0:5683->5683/tcp, 0.0.0.0:5683->5683/udp, [::]:5683->5683/tcp, [::]:5683->5683/udp", + "networks": "mainflux-network" + }, + { + "name": "mainfluxlabs-things", + "image": "mainfluxlabs/things:v0.36.1", + "status": "Up 5 days", + "ports": "0.0.0.0:8182-8183->8182-8183/tcp, [::]:8182-8183->8182-8183/tcp, 0.0.0.0:8989->8989/tcp, [::]:8989->8989/tcp", + "networks": "mainflux-network,smartcity-shared" + }, + { + "name": "mainfluxlabs-users", + "image": "mainfluxlabs/users:v0.36.1", + "status": "Up 5 days", + "ports": "0.0.0.0:8180->8180/tcp, [::]:8180->8180/tcp, 0.0.0.0:8184->8184/tcp, [::]:8184->8184/tcp", + "networks": "mainflux-network,smartcity-shared" + }, + { + "name": "mainfluxlabs-auth", + "image": "mainfluxlabs/auth:v0.36.1", + "status": "Up 5 days", + "ports": "0.0.0.0:8181->8181/tcp, [::]:8181->8181/tcp, 0.0.0.0:8189->8189/tcp, [::]:8189->8189/tcp", + "networks": "mainflux-network,smartcity-shared" + }, + { + "name": "mainfluxlabs-certs", + "image": "mainfluxlabs/certs:v0.36.1", + "status": "Up 5 days", + "ports": "0.0.0.0:8204->8204/tcp, [::]:8204->8204/tcp", + "networks": "mainflux-network" + }, + { + "name": "mainfluxlabs-postgres-writer", + "image": "mainfluxlabs/postgres-writer:v0.36.1", + "status": "Up 5 days", + "ports": "0.0.0.0:8900->8900/tcp, [::]:8900->8900/tcp", + "networks": "mainflux-network" + }, + { + "name": "mainfluxlabs-uiconfigs", + "image": "mainfluxlabs/uiconfigs:v0.36.1", + "status": "Up 5 days", + "ports": "0.0.0.0:9029->9029/tcp, [::]:9029->9029/tcp", + "networks": "mainflux-network" + }, + { + "name": "mainfluxlabs-mqtt-db", + "image": "postgres:13.3-alpine", + "status": "Up 5 days", + "ports": "5432/tcp", + "networks": "mainflux-network" + }, + { + "name": "mainfluxlabs-es-redis", + "image": "redis:6.2.2-alpine", + "status": "Up 5 days", + "ports": "6379/tcp", + "networks": "mainflux-network" + }, + { + "name": "mainfluxlabs-downlinks-db", + "image": "postgres:13.3-alpine", + "status": "Up 5 days", + "ports": "5432/tcp", + "networks": "mainflux-network" + }, + { + "name": "mainfluxlabs-things-db", + "image": "postgres:13.3-alpine", + "status": "Up 5 days (healthy)", + "ports": "5432/tcp", + "networks": "mainflux-network" + }, + { + "name": "mainfluxlabs-rules-db", + "image": "postgres:13.3-alpine", + "status": "Up 5 days", + "ports": "5432/tcp", + "networks": "mainflux-network" + }, + { + "name": "mainfluxlabs-filestore-db", + "image": "postgres:13.3-alpine", + "status": "Up 5 days", + "ports": "5432/tcp", + "networks": "mainflux-network" + }, + { + "name": "mainfluxlabs-users-db", + "image": "postgres:13.3-alpine", + "status": "Up 5 days (healthy)", + "ports": "5432/tcp", + "networks": "mainflux-network" + }, + { + "name": "mainfluxlabs-jaeger", + "image": "jaegertracing/all-in-one:1.53", + "status": "Exited (255) 5 days ago", + "ports": "5775/udp, 4317-4318/tcp, 9411/tcp, 0.0.0.0:5778->5778/tcp, [::]:5778->5778/tcp, 0.0.0.0:14268->14268/tcp, [::]:14268->14268/tcp, 14250/tcp, 6832/udp, 0.0.0.0:16686->16686/tcp, [::]:16686->16686/tcp, 0.0.0.0:6831->6831/udp, [::]:6831->6831/udp", + "networks": "mainflux-network" + }, + { + "name": "mainfluxlabs-mosquitto", + "image": "eclipse-mosquitto:2.0", + "status": "Up 5 days", + "ports": "1883/tcp", + "networks": "mainflux-network,smartcity-shared" + }, + { + "name": "mainfluxlabs-alarms-db", + "image": "postgres:13.3-alpine", + "status": "Up 5 days", + "ports": "5432/tcp", + "networks": "mainflux-network" + }, + { + "name": "mainfluxlabs-auth-redis", + "image": "redis:6.2.2-alpine", + "status": "Up 5 days", + "ports": "6379/tcp", + "networks": "mainflux-network" + }, + { + "name": "mainfluxlabs-modbus-db", + "image": "postgres:13.3-alpine", + "status": "Up 5 days", + "ports": "5432/tcp", + "networks": "mainflux-network" + }, + { + "name": "mainfluxlabs-broker", + "image": "nats:2.2.4-alpine", + "status": "Up 5 days", + "ports": "6222/tcp, 0.0.0.0:4222->4222/tcp, [::]:4222->4222/tcp, 8222/tcp", + "networks": "mainflux-network,smartcity-shared" + }, + { + "name": "mainfluxlabs-webhooks-db", + "image": "postgres:13.3-alpine", + "status": "Up 5 days", + "ports": "5432/tcp", + "networks": "mainflux-network" + }, + { + "name": "mainfluxlabs-postgres", + "image": "postgres:13.3-alpine", + "status": "Up 5 days", + "ports": "5432/tcp", + "networks": "mainflux-network" + }, + { + "name": "mainfluxlabs-smtp-notifier-db", + "image": "postgres:13.3-alpine", + "status": "Up 5 days", + "ports": "5432/tcp", + "networks": "mainflux-network" + }, + { + "name": "mainfluxlabs-certs-db", + "image": "postgres:13.3-alpine", + "status": "Up 5 days", + "ports": "5432/tcp", + "networks": "mainflux-network" + }, + { + "name": "mainfluxlabs-postgres-reader", + "image": "mainfluxlabs/postgres-reader:v0.36.1", + "status": "Up 5 days", + "ports": "0.0.0.0:8905->8905/tcp, [::]:8905->8905/tcp", + "networks": "mainflux-network" + }, + { + "name": "mainfluxlabs-auth-db", + "image": "postgres:13.3-alpine", + "status": "Up 5 days", + "ports": "5432/tcp", + "networks": "mainflux-network" + }, + { + "name": "mainfluxlabs-uiconfigs-db", + "image": "postgres:13.3-alpine", + "status": "Up 5 days", + "ports": "5432/tcp", + "networks": "mainflux-network" + }, + { + "name": "mainfluxlabs-ui", + "image": "mainfluxlabs/ui:v0.36.1", + "status": "Up 5 days", + "ports": "80/tcp, 0.0.0.0:3000->3000/tcp, [::]:3000->3000/tcp", + "networks": "mainflux-network,smartcity-shared" + }, + { + "name": "smart-city-pulsar-manager", + "image": "apachepulsar/pulsar-manager:v0.2.0", + "status": "Exited (137) 5 days ago", + "ports": "", + "networks": "smartcity-shared,traefik-public,pulsar-manager-net" + }, + { + "name": "smart-city-pulsar-manager-db", + "image": "postgres:15-alpine", + "status": "Exited (0) 5 days ago", + "ports": "", + "networks": "pulsar-manager-net" + }, + { + "name": "thingsboard-rabbitmq", + "image": "rabbitmq:3.12-management", + "status": "Up 5 days (healthy)", + "ports": "4369/tcp, 5671-5672/tcp, 15671-15672/tcp, 15691-15692/tcp, 25672/tcp", + "networks": "smartcity-shared" + }, + { + "name": "thingsboard-postgres", + "image": "postgres:15-alpine", + "status": "Up 5 days (healthy)", + "ports": "5432/tcp", + "networks": "smartcity-shared" + }, + { + "name": "mapstore-proxy", + "image": "nginx", + "status": "Up 5 days", + "ports": "80/tcp", + "networks": "mapstore2_mapstore-network,traefik-public" + }, + { + "name": "mapstore-app", + "image": "geosolutionsit/mapstore2:latest", + "status": "Up 5 days", + "ports": "8080/tcp", + "networks": "mapstore2_mapstore-network,smartcity-shared,traefik-public" + }, + { + "name": "mapstore-postgres", + "image": "geosolutions-mapstore/postgis", + "status": "Up 5 days (healthy)", + "ports": "5432/tcp", + "networks": "mapstore2_mapstore-network" + }, + { + "name": "emqx_emqx_1", + "image": "emqx/emqx:latest", + "status": "Up 5 days", + "ports": "4370/tcp, 5369/tcp, 8083-8084/tcp, 0.0.0.0:11883->1883/tcp, [::]:11883->1883/tcp, 0.0.0.0:18081->8081/tcp, [::]:18081->8081/tcp, 0.0.0.0:18883->8883/tcp, [::]:18883->8883/tcp, 0.0.0.0:38083->18083/tcp, [::]:38083->18083/tcp", + "networks": "emqx_default,smartcity-shared,traefik-public" + }, + { + "name": "smart-city-pulsar", + "image": "apachepulsar/pulsar:3.2.0", + "status": "Exited (137) 5 days ago", + "ports": "", + "networks": "smartcity-shared,traefik-public" + }, + { + "name": "smart-city-redpanda", + "image": "redpandadata/redpanda:v24.3.14", + "status": "Exited (255) 5 days ago", + "ports": "8081/tcp, 127.0.0.1:8082->8082/tcp, 0.0.0.0:19092->9092/tcp, [::]:19092->9092/tcp, 0.0.0.0:19644->9644/tcp, [::]:19644->9644/tcp", + "networks": "smartcity-shared,traefik-public" + }, + { + "name": "smart-city-redpanda-console", + "image": "docker.redpanda.com/redpandadata/console:v2.5.0", + "status": "Up 46 seconds (health: starting)", + "ports": "0.0.0.0:28080->8080/tcp, [::]:28080->8080/tcp", + "networks": "smartcity-shared,traefik-public" + }, + { + "name": "stellio-api-gateway", + "image": "stellio/stellio-api-gateway:latest-dev", + "status": "Up 2 days", + "ports": "8080/tcp", + "networks": "stellio-context-broker_default,traefik-public,smartcity-shared" + }, + { + "name": "frost_allinone-web-1", + "image": "fraunhoferiosb/frost-server:latest", + "status": "Up 5 days", + "ports": "1883/tcp, 8089/tcp, 127.0.0.1:8090->8080/tcp", + "networks": "frost_allinone_default,smartcity-shared" + }, + { + "name": "geoserver_stack-geoserver-1", + "image": "oscarfonts/geoserver:2.25.2", + "status": "Up 5 days (healthy)", + "ports": "8080/tcp", + "networks": "frost_http_default,smartcity-shared,traefik-public" + }, + { + "name": "grafana_stack-grafana-1", + "image": "grafana/grafana:latest", + "status": "Up 5 days", + "ports": "3000/tcp", + "networks": "traefik-public,frost_http_default" + }, + { + "name": "frost_http-web-1", + "image": "fraunhoferiosb/frost-server-http:latest", + "status": "Up 5 days", + "ports": "8080/tcp", + "networks": "frost_http_default,smartcity-shared" + }, + { + "name": "esperotech", + "image": "esperotech/yaade:latest", + "status": "Up 5 days", + "ports": "0.0.0.0:9339->9339/tcp, [::]:9339->9339/tcp", + "networks": "yaade_default" + }, + { + "name": "stellio-search-service", + "image": "stellio/stellio-search-service:latest-dev", + "status": "Exited (255) 5 days ago", + "ports": "8083/tcp", + "networks": "traefik-public,smartcity-shared,stellio-context-broker_default" + }, + { + "name": "stellio-subscription-service", + "image": "stellio/stellio-subscription-service:latest-dev", + "status": "Exited (255) 5 days ago", + "ports": "8084/tcp", + "networks": "smartcity-shared,stellio-context-broker_default,traefik-public" + }, + { + "name": "stellio-kafka", + "image": "confluentinc/cp-kafka:8.1.0", + "status": "Exited (255) 5 days ago", + "ports": "9092/tcp, 0.0.0.0:29092->29092/tcp, [::]:29092->29092/tcp", + "networks": "smartcity-shared,stellio-context-broker_default" + }, + { + "name": "stellio-postgres", + "image": "stellio/stellio-timescale-postgis:16-2.24.0-3.6", + "status": "Exited (255) 5 days ago", + "ports": "5432/tcp", + "networks": "smartcity-shared,stellio-context-broker_default" + }, + { + "name": "digital-twin-nodered", + "image": "nodered/node-red:3.1", + "status": "Up 5 days (healthy)", + "ports": "0.0.0.0:1880->1880/tcp, [::]:1880->1880/tcp", + "networks": "traefik,smartcity-shared" + }, + { + "name": "digital-twin-connector", + "image": "python:3.11-slim", + "status": "Up 30 minutes", + "ports": "", + "networks": "digital-twin_digital-twin,smartcity-shared" + }, + { + "name": "gitea", + "image": "gitea/gitea:latest", + "status": "Up 5 days", + "ports": "22/tcp, 3000/tcp", + "networks": "gitea_default,traefik,traefik-public" + }, + { + "name": "honcho-grafana-1", + "image": "grafana/grafana:11.4.0", + "status": "Up 5 days (healthy)", + "ports": "127.0.0.1:3088->3000/tcp", + "networks": "honcho_default" + }, + { + "name": "honcho-prometheus-1", + "image": "prom/prometheus:v3.2.1", + "status": "Up 5 days (healthy)", + "ports": "127.0.0.1:9091->9090/tcp", + "networks": "honcho_default,smartcity-shared" + }, + { + "name": "honcho-api-1", + "image": "honcho:latest", + "status": "Up 31 seconds (health: starting)", + "ports": "127.0.0.1:8088->8000/tcp", + "networks": "traefik-public,honcho_default" + }, + { + "name": "honcho-deriver-1", + "image": "honcho-deriver", + "status": "Up 5 days (healthy)", + "ports": "8000/tcp", + "networks": "honcho_default" + }, + { + "name": "phpipam-phpipam-web-1", + "image": "phpipam/phpipam-www:latest", + "status": "Up 5 days", + "ports": "127.0.0.1:8085->80/tcp", + "networks": "phpipam_default,traefik-public" + }, + { + "name": "phpipam-phpipam-cron-1", + "image": "phpipam/phpipam-cron:latest", + "status": "Up 5 days", + "ports": "80/tcp", + "networks": "phpipam_default" + } + ] +} \ No newline at end of file diff --git a/telegraf.conf b/telegraf.conf index ece83106..619dcec0 100644 --- a/telegraf.conf +++ b/telegraf.conf @@ -27,7 +27,7 @@ # Input: MQTT Consumer - Mosquitto [[inputs.mqtt_consumer]] - servers = ["tcp://smart-city-mosquitto:1883"] + servers = ["tcp://smart-city-digital-twin-martinique-mosquitto-1:1883"] topics = [ "airquality/#", "traffic/#", @@ -41,23 +41,23 @@ data_format = "json" qos = 0 -# Input: MQTT Consumer - BunkerM (with auth) -[[inputs.mqtt_consumer]] - servers = ["tcp://bunkerm_bunkerm_1:1900"] - topics = [ - "airquality/#", - "traffic/#", - "parking/#", - "noise/#", - "weather/#", - "light/#", - "sensor/#", - "smartcity/#" - ] - data_format = "json" - qos = 0 - username = "bunker" - password = "bunker" +# Input: MQTT Consumer - BunkerM (DISABLED - auth fails, simulator not sending here) +# [[inputs.mqtt_consumer]] +# servers = ["tcp://bunkerm-bunkerm-1:1900"] +# topics = [ +# "airquality/#", +# "traffic/#", +# "parking/#", +# "noise/#", +# "weather/#", +# "light/#", +# "sensor/#", +# "smartcity/#" +# ] +# data_format = "json" +# qos = 0 +# username = "bunker" +# password = "bunker" # Output: InfluxDB v2 [[outputs.influxdb_v2]]