Un approccio scientifico al Network Monitoring con Sentinet│

Con lo strumento sviluppato dall'italiana Fata Informatica Ŕ possibile definire le metriche con cui tenere sotto controllo la propria infrastruttura. E intraprendere la giusta azione in caso di parametri fuori scala

Il network monitoring si occupa di misurare parametri di rete al fine di effettuare analisi e statistiche di funzionamento. Più nello specifico il network monitoring si occupa di tre delle 5 aree funzionali definite dall' ISO/OSI Network management model:
- performance monitoring
- fault monitoring
- account monitoring
Il performance monitoring ha lo scopo sia di predisporre la rete per le evoluzioni future che di determinarne l'efficienza attuale. Quest'area funzionale si occupa di collezionare regolarmente dati utilizzando strumenti che supportano protocolli come SNMP, RMON, NETFLOW e definiscono soglie di allarmi. Il monitoraggio delle performance della rete è un passo importante per identificare i problemi prima che avvengano ed è anche parte fondamentale di una strategia di Proactive Network Monitoring.

Il fault monitoring riguarda il controllo dei fault che si verificano sulla rete e l'invio di alert al personale preposto a risolvere il problema. Una comune tecnica di fault monitoring prevede di controllare i dispositivi di rete tramite il protocollo SNMP ed avvisare tramite alert i network manager.

L'account monitoring infine ha lo scopo di raccogliere statistiche sull'utilizzo della rete. Quest'area funzionale è fondamentale in organizzazioni che pagano o fatturano il traffico di rete generato.
In questa occasione non ci occuperemo di misurazioni necessarie per il billing ma tratteremo unicamente performance e fault monitoring.

Network performance monitoring
Per eseguire un efficace azione di perfomance monitoring è necessario stabilire cosa si vuole misurare. La IETF (Internet Engineer Task Force) ha definito nella RFC 1242 (Benchmarking Terminology for Network Interconnection Devices) alcune metriche per la misurazione del traffico come:
- Data link size
- Latency
- Overhead behavior
- Overload behavior
- Throughput
Frame loss
Sul sito IETF utilizzando la parola chiave "Benchmarking" si possono ottenere tutte le informazioni necessarie allo scopo.

Le metriche che afferiscono all'area funzionale del Performance Monitoring sono:
- Tempo di risposta
- Disponibilità
- Ampiezza di banda
- Throughput
- Pacchetti persi
- Utilizzo
- Latenza (one way e RTT)
- Jiter
Vale la pena analizzarle una per una.

Il tempo di risposta si misura in millisecondi ed è il tempo impiegato da un sistema a reagire ad un input. Ad esempio se parliamo di un server web è il tempo che impiega a rispondere ad una interrogazione http. L'impatto di questo parametro dipende dalla tipologia di servizio fornito: è necessario che sia basso per applicazioni interattive mentre per applicazioni batch non è necessario.

La disponibilità è la percentuale di tempo che un oggetto è disponibile all'utente. Genericamente si fa riferimento a un oggetto perché la disponibilità è misurabile su un applicazione, un sistema server o anche su un componete di rete. La disponibilità si calcola secondo la seguente formula:

Disponibilità= MTBF/(MTBF+MTTR)

Dove MTBF sta per Mean time between failure (tempo medio tra i fallimenti), MTTR per Mean time to repair (tempo medio per ripristinare l'oggetto). Da notare che se il MTTR tende a 0 la disponibilità tende ad 1. In pratica se un oggetto si rompe (anche frequentemente) ma il tempo per "aggiustarlo" tende a 0 allora la disponibilità sarà pressochè continua.

Per ampiezza di banda generalmente intendiamo la quantità di informazioni che possono essere trasmesse attraverso una connessione in una determinata unità di tempo. Si tratta quindi della la velocità di trasmissione dell'informazione. Nel caso delle comunicazioni digitali come ad esempio il web, misuriamo la banda in bit al secondo e nei suoi multipli kbit/s e Mbit/s. Più c'è ampiezza di banda, più informazioni riusciamo a trasmettere in quel determinato lasso di tempo. Tipicamente applicazioni di streaming video necessitano di banda larga. Più l'ampiezza di banda è alta, più alta sarà la qualità di immagine e di suono.

Per throughput si intende la quantità di dati inviati con successo su un link in una determinata unità di tempo. La differenza rispetto all'ampiezza di banda è che la prima misura la massima quantità di dati trasferibile mentre la seconda misura quella effettiva. Questa metrica si misurare in bit per secondo e nei suoi multipli.

Pacchetti persi: questa metrica misura la probabilità di perdita di un pacchetto in una trasmissione tra sorgente e destinazione. Questo fenomeno può essere causato da svariati fattori quali degrado del segnale sul canale trasmissivo, packet drop dovuti alla sua congestione, apparati di rete difettosi, driver difettosi ecc.

Utilizzo: la percentuale di utilizzo di una risorsa. Parlando di un canale di comunicazione si intende la percentuale di utilizzo dell'ampiezza di banda.

La latenza misura la quantità di tempo che un pacchetto impiega ad andare da una sorgente ad una destinazione (one way). Quando la latenza calcola la quantità di tempo che un pacchetto ci mette ad andare da una sorgente ad una destinazione e ritorno alla sorgente si definisce RTT (round trip time). Si misura in millisecondi.

Il jitter, infine, misura la variazione della latenza nel tempo. ╚ molto importante nelle comunicazioni VoIP. Un alto jitter provoca l'arrivo dei pacchetti appartenenti alla stessa comunicazione in ordini differenti rispetto a come sono stati inviati. Per correggere questo si utilizzano a livello applicativo dei buffer che riordinano i pacchetti causando però un aumento del ritardo della comunicazione. Se il pacchetto quando arriva trova il buffer pieno viene eliminato aumentando così il valore dei pacchetti persi e diminuendo il throughput.

Network fault monitoring
Quest'area funzionale prevede di controllare tutti i dispositivi che permettono alla rete di funzionare. Li possiamo suddividere in due macrocategorie: dispositivi infrastrutturali e dispositivi che forniscono servizi di base. I dispositivi infrastrutturali sono quelli fondamentali affinchè avvenga una comunicazione: router e switch. I secondi sono quei dispositivi che forniscono servizi essenziali come DNS, DHCP, Proxy, Firewall ecc. Il monitoraggio di entrambe le categorie può avvenire sia utilizzando il protocollo SNMP checlassici controlli sulle porte TCP.

Il protocollo SNMP ci permette di controllare la temperatura interna,lo stato delle interfacce, delle ventole, degli alimentatori. I controlli TCP ci permettono di capire se i servizi sono attivi.

In questa fase è fondamentale definire correttamente le soglie al di sopra delle quali l'apparato od il server entra in uno stato di criticità. In questo caso verranno creati gli opportuni gruppi di intervento ai quali verranno indirizzate le notifiche. ╚ opportuno prevedere anche meccanismi di escalation che permettono di notificare gruppi di primo, secondo o terzo livello a seconda del persistere del problema.

Dalla teoria alla pratica
Una volta identificate le metriche di interesse ed i dispositivi da monitorare bisogna mettere tutto in pratica. Il controllo delle metriche avviene grazie all'utilizzo del protocollo SNMP: con Sentinet│ è possibile inserire controlli puntuali sugli elementi da monitorare semplicemente conoscendone il corretto OID (Object IDentifier). Grazie alla funzione check_snmp è possibile inserire i parametri riguardanti l'indirizzo IP, la community, l'OID dell'oggetto e l'eventuale password (se lavoriamo con SNMPv3).

Le informazioni che possiamo ottenere sugli apparati sono molteplici, e tra le altre vale la pena citare:
- Utilizzo CPU
- Utilizzo RAM
- Stato ventole
- Bit in entrata
- Bit in uscita
- Pacchetti eliminati per presenza di errori
- Pacchetti droppati (eliminati per carenza risorse)
- Banda disponibile
Molte informazioni sulla rete possono essere calcolate utilizzando i parametri sopra riportati, come ad esempio la banda disponibile. Ulteriori funzioni permettono di controllare la disponibiltà dei servizi principali come check_tcp o check_udp che forniscono lo stato dei servizi disponibili sulle porte tcp/udp di interesse.

Naturalmente per avere un monitoraggio proattivo sarà necessario settare opportune soglie affinchè il modulo di notifica possa inviare SMS ed email al loro superamento. Bisognerà poi settare le azioni da attivare in caso di allarme: come ad esempio fermare e riavviare un servizio, disattivare porte su uno switch o attivare una linea alternativa.