2.2. Architettura¶
2.2.1. 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.

2.2.2. Struttura reale dei processi¶
Nella pratica la struttura dei processi in esecuzione e' la seguente:

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 NSANETD
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 cacheENTABLES
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 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<l nov21 737:50 \_ python /usr/local/sanet/server/sanetd/sanetdserver.py /usr/local/sanet root 21261 4.0 4.4 548840 270908 ? S<l nov21 193:00 \_ python /usr/local/sanet/autoconf/server/autoconfd.py /usr/local/sanet root 21262 0.0 0.3 212272 21800 ? S< nov21 1:55 \_ python /usr/local/sanet/server/sanetd/sanetdwdog.py /usr/local/sanet root 21263 0.1 0.1 129312 6748 ? S<l nov21 6:09 \_ python /usr/local/sanet/server/statusd/main.py /usr/local/sanet 12345 root 17844 0.0 0.6 215820 40260 ? S 14:14 0:00 python server/poller/main.py start (supervisor) root 17850 52.6 22.7 1903388 1393672 ? Sl 14:14 118:44 \_ python /usr/local/sanet/server/poller/supervised_poller.py /usr/local/sanet -B sanet/sanet@localhost -t asmn -i main-agent -l /var/log/sanet3/poller.log -T 20 -c sanet_c