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,
saturnenfile 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
| Stockage | Accédé par | Usage |
|---|---|---|
| PostgreSQL | saturn | Auth, comptes, inventaire des nodes, noms, IP, états de connexion. |
| Elasticsearch | central-mercure | Logs 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
- API du central — endpoints principaux et flux de commande.
- API logs — microservice Python d'accès à Elasticsearch.
- Interface web — le frontend de supervision.
- Données & réseau central — PostgreSQL, Elasticsearch, CoreDNS.