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.
../_images/architecture_logic.gif

2.2.2. Struttura reale dei processi

Nella pratica la struttura dei processi in esecuzione e’ la seguente:

../_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 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/share/sanet/server/sanetd/sanetdserver.py /usr/share/sanet
root     21261  4.0  4.4 548840 270908 ?       S<l  nov21 193:00  \_ python /usr/share/sanet/autoconf/server/autoconfd.py /usr/share/sanet
root     21262  0.0  0.3 212272 21800 ?        S<   nov21   1:55  \_ python /usr/share/sanet/server/sanetd/sanetdwdog.py /usr/share/sanet
root     21263  0.1  0.1 129312  6748 ?        S<l  nov21   6:09  \_ python /usr/share/sanet/server/statusd/main.py /usr/share/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/share/sanet/server/poller/supervised_poller.py /usr/share/sanet -B sanet/sanet@localhost -t asmn -i main-agent -l /var/log/sanet3/poller.log -T 20 -c sanet_c
root@riker:/usr/share/sanet#