Aller au contenu principal

Central — Vue d'ensemble

Le central est le projet de supervision de parc : Saturn (API REST), Venus (gateway GraphQL + serveur web) et Mercure (API logs), avec PostgreSQL pour les données métier (auth, inventaire nodes, IP, noms) et une API logs Python dédiée qui indexe et requête les logs des nodes dans Elasticsearch.

Un service DNS/DHCP indépendant (central-dnsdhcp, Go) expose un CRUD HTTP pour les records DNS et DHCP, avec sa propre base PostgreSQL dédiée.

Dans le contexte cible, le central est le logiciel de contrôle dédié aux sociétés de services (eau, électricité, connectivité) pour opérer un réseau de boîtiers déployés dans les maisons.

:::info Découplage des logs L'API centrale (saturn) ne se connecte plus directement à Elasticsearch. Elle délègue toute l'ingestion et la lecture des logs à un microservice Python (central-mercure), seul composant à parler à Elasticsearch. :::

Le projet domotic reste local au node et sert au pilotage des équipements attachés à la combinaison Raspberry Pi + cartes d'E/S.

Composants

Saturn (Go)

  • Implémentation : Go (architecture hexagonale).
  • Port : :8130.
  • Rôle : supervision du parc, inventaire nodes, dispatch d'actions et exposition API.
  • Pour les actions node, saturn enfile l'action puis la dispatch en HTTP vers l'API locale node (http://<node_ip>:8080).
  • Pour les logs, l'API centrale agit en client REST de l'API logs Python en lecture/requête.
  • L'API permet d'appliquer des politiques d'accès aux services via relais et vannes digitales, avec traçabilité des commandes.

Mercure (Python / FastAPI)

  • Implémentation : Python + FastAPI (central/mercure).
  • Port : :8140.
  • Rôle : unique point d'accès à Elasticsearch pour l'ingestion et la requête des logs.
  • Ingestion : les nodes publient directement vers Mercure ; Kafka sert de tampon avant indexation Elasticsearch.

Stockages

StockageAccédé parUsage
PostgreSQLsaturnAuth, comptes, inventaire des nodes, noms, IP, états de connexion.
Elasticsearchcentral-mercureLogs techniques et événements remontés par les nodes.

L'interface web

Application Vue 3 + Vite (central/venus/web) : supervision de parc, visualisation des nodes connectés, recherche et consultation des logs.

Elle sert d'interface d'exploitation pour les équipes opérateurs :

  • suivi de l'état du parc ;
  • émission d'actions à distance ;
  • contrôle et audit des événements de service.

Services d'infrastructure

  • central-mercure : microservice Python d'accès aux logs (Elasticsearch).
  • central-dnsdhcp : microservice Go CRUD DNS/DHCP (records en PostgreSQL dédié).
  • central-kafka : tampon d'ingestion des logs avant indexation.
  • coredns : DNS local (résolution des noms des nodes).
  • postgres : base relationnelle centrale (externe).
  • elasticsearch : indexation et requêtage des logs (externe, via l'API logs).

Le tout est orchestré via central/docker-compose.central.yml.

Pour aller plus loin