.. _sanet-architecture: ************************************************************************************ Architettura ************************************************************************************ Visione logica ============== Sanet3 e' basato su un'architettura CLIENT-SERVER e composto da diverse servizi software in esecuzione contemporaneamente. La struttura logica puo' essere ridotta a queste entita': * **Agenti** : uno o piu', si occupano della raccolta dei dati del monitoraggio e verifica delle condizioni. Possono essere eseguiti sulla stesso host dove e' in eseguzione il resto del sistema (agenti LOCALI) o su altre macchine (agenti Remoti). * **Sanetd** : server centrale che comunica agli agenti i dati per effettuare il monitoraggio e riceve da essi i dati raccolti. * **Entables**: si occupa di gestire l'invio vero e proprio di allarmi secondo regole configurabili. * **GUI Web** : interfaccia web di consultazione/amministrazione. .. image:: ../_static/web/images/architecture_logic.gif Struttura reale dei processi ============================ Nella pratica la struttura dei processi in esecuzione e' la seguente: .. image:: ../_static/web/images/architecture_real.png .. danger:: i processi PostgresSQL e Redis Server sono **fondamentali** per il corretto funzionamento del sistema. Sanet assume che questi processi siano **sempre** in esecuzione. Dettaglio: Agenti (poller) locali Processi per gestire il monitoraggio "locale" :: supervisor poller Rilancia automaticamente gli agenti in caso di crash | +- agente 1 Processo agente locale 1 +- agente 2 Processo agente locale 2 | `- agente n Processo agente locale N SANETD Processi che gestiscono i sotto-sistemi del sistema centrale di Sanet. :: supervisor sanetd Rilancia automaticamente i sub-processi di sanet in caso di crash | +- sanetdserver Raccoglie e storicizza i dati +- autoconfd Autoconfigurazione +- sanetwdog Diagnostica e watchdog +- statusd Processo di appoggio +- cached Processo di gestione della cache ENTABLES Processo per gestire la notifica degli allarmi :: entables_server Questo progetto e' logicamente separato. REDIS Processo di sistema. Si occupa di: * gestire la comunicazione IPC tra tutte le componenti di Sanet * gestire la cache temporanea POSTGRES Processo di sistema. Si occupa della gestione del Database di Sanet. RRDCached (opzionale) Processo di sistema. Si occupa di ottimizzare l'accesso ai dati memorizzati su filesystem. E' opzionale, si rimanda alla sezione :ref:`rrdcached` per i dettagli. .. danger:: i processi PostgresSQL e Redis Server sono **fondamentali** per il corretto funzionamento del sistema. Sanet assume che questi processi siano **sempre** in esecuzione. Quando questi processi non funzionano correttamente il comportamento di Sanet e' imprevedibile. Esempio di processi in esecuzione su un server: :: root 21241 0.4 0.6 400000 37804 ? Sl nov21 22:11 python manage.py entables_server -l /var/log/sanet3/entables_log -p /var/run/sanet3/entablesd_pid start root 21257 0.0 0.0 53900 1124 ? S< nov21 0:01 python server/sanetd/main.py start (supervisor) root 21260 15.5 2.1 590480 130656 ? S