Che si tratti di un server di produzione, una rete aziendale, un impianto fotovoltaico o una macchina industriale, una delle esigenze più richieste che ogni sistema complesso usato in ambito professionale dovrebbe soddisfare è quella del monitoraggio dei suoi parametri prestazionali: quali sono i tempi di risposta e la service availability di un server? Qual è lo stato di una rete? Che rendimento ha il tuo impianto di energia alternativa? Quanto è stressato un attuatore elettromeccanico su un macchinario di produzione? Tutte queste informazioni, fondamentali per conoscere lo stato di un sistema complesso, si possono ottenere (più o meno facilmente) facendo uso di un sistema di monitoraggio; una volta raccolte, queste informazioni possono essere utilizzate in una moltitudine di modi: può essere imposto il riavvio di un servizio o dell'intero server quando si rileva qualche anomalia; può essere inviata una email all'admin se la rete non risponde; può essere inviato un report di produzione di energia su base settimanale; può accendersi una spia quando un relè supera una certa soglia di attuazione. In questo articolo daremo un'occhiata più da vicino ad uno dei sistemi di monitoraggio più utilizzati (e, ovviamente, open source): Zabbix.
ZABBIX OVERVIEW
Zabbix è il sistema di monitoraggio open source (licenza GPL 2) della lituana Zabbix SIA, capace di monitorare contemporaneamente migliaia di dispositivi connessi in rete. Com'è possibile leggere dal sito ufficiale, le caratteristiche principali di Zabbix sono:
- la possibilità di accedere ai sorgenti del sistema di monitoraggio, essendo esso stesso open source e potendosi basare su piattaforme open source (Linux, Apache, MySql/PostgreSQL, Php);
- la semplicità di configurazione;
- l'elevata efficienza delle componenti software;
- un sistema di visualizzazione delle informazioni ricco e completo;
- un set di procedure di ottimizzazione dell'organizzazione dei dati raccolti.
Altri due punti di forza, a mio avviso fondamentali e che rendono davvero completo Zabbix, sono la possibilità di estensione delle componenti software (tornerò tra qualche riga su questo argomento) e la possibilità di effettuare un monitoraggio distribuito, grazie all'architettura software dell'intero sistema. Attualmente è disponibile la versione 3 beta2, e si attende a breve il rilascio della versione ufficiale; le versioni stabili più utilizzate sono la 2.2 (LTS) e la 2.4 (alla quale questo articolo fa riferimento).
ARCHITETTURA DEL SISTEMA DI MONITORAGGIO
Le componenti principali di Zabbix sono le seguenti:
- Zabbix Agent: agente software che si occupa di raccogliere tutti i dati del dispositivo da monitorare (target); questo modulo va installato sul target e, una volta configurato e lanciato, aprirà una porta TCP (10050 di default) utilizzata dallo Zabbix Server per lo scambio delle misure sulle grandezze monitorate. Questa modalità di monitoraggio si chiama passiva (in quanto l'agent si mette in attesa di connessioni da parte del server, il quale è parte attiva della comunicazione), e si contrappone alla modalità “active” (in cui è l'agent che, periodicamente, invia le informazioni al server opportunamente configurato). Lo Zabbix Agent può essere installato su una moltitudine di sistemi operativi (tra cui Linux, Windows, MacOS, FreeBSD, OpenBSD e Solaris). In un sistema di monitoraggio Zabbix, l'uso dell'agent per collezionare dati è solitamente la via classica e maggiormente indicata ma, come vedremo più avanti, è possibile utilizzare anche altre interfacce di comunicazione.
- Zabbix Server: modulo software installato solitamente (ma non necessariamente) su una macchina differente rispetto al target, e che si preoccupa di interrogare tutti i dispositivi configurati per il monitoraggio. Lo Zabbix Server può essere installato esclusivamente su un sistema Linux. Essendo possibile monitorare migliaia di dispositivi per volta, è solitamente necessario che l'hardware su cui viene eseguito lo Zabbix Server abbia capacità di elaborazione adeguata. Una volta raccolti i dati dai target, lo Zabbix Server si preoccupa di memorizzarli in un database opportunamente configurato, in modo da renderli accessibili ad una qualunque entità che si occupi della loro elaborazione/organizzazione/visualizzazione, così da essere resi fruibili da parte degli utenti preposti al monitoraggio.
- Zabbix Proxy: modulo software opzionale, il cui compito è quello di collezionare dati dagli agent configurati ed inviarli allo Zabbix Server; solitamente il proxy si utilizza per due motivi:
1 - organizzare meglio a livello logico il monitoraggio, facendo diminuire il carico computazionale del server; immaginiamo il caso in cui ci siano migliaia di dispositivi da monitorare e fosse possibile raggruppare logicamente tali dispositivi: il server interrogherebbe solo i proxies, diminuendo drasticamente il numero di connessioni necessarie (Figura 1).2 - rendere semplice la configurazione di rete in caso di monitoraggio di dispositivi protetti da firewall (Figura 2). In tal caso, grazie al proxy si rende semplice la comunicazione tra server e dispositivi monitorati.
Nota: l'utilizzo di proxies si rende solitamente necessario per scenari complicati e in ambito professionale, per cui in questo articolo è presente solo questo doveroso accenno. - Zabbix Frontend: GUI di configurazione e monitoraggio dell'intero sistema; è il modulo software con cui gli utenti si interfacciano verso il sistema di monitoraggio, dal quale è possibile rendersi conto dello stato del sistema. Al contrario degli altri componenti (scritti in linguaggio C), il frontend è scritto in Php. Piccola indiscrezione: gli sviluppatori Zabbix, dalla versione 3 in poi, focalizzeranno gli sforzi nel miglioramento delle altre componenti, lasciando molto spazio alla personalizzazione del frontend da parte degli utilizzatori finali.
L'accesso al sistema è basato su gruppi di utenti, i quali hanno dei privilegi prestabiliti (monitoraggio o configurazione del sistema, con granularità a livello di singolo dispositivo). In questo modo è possibile configurare un gruppo di amministratori, i quali hanno pieno controllo sul sistema, e una serie di utenti con privilegi ristretti, che possono solo monitorare una serie di dispositivi prestabiliti.
LE RISORSE PRINCIPALI DI ZABBIX
Fin qui abbiamo illustrato quelle che sono le componenti principali di Zabbix a livello architetturale; vediamo adesso quali sono le risorse che abbiamo a disposizione per realizzare la nostra rete di monitoraggio. Senza dubbio bisogna cominciare con il parlare degli Hosts. Un Host nel mondo Zabbix rappresenta un qualsiasi dispositivo da monitorare (server di rete, router, macchina virtuale vmware, programma Java). Un Host ha i seguenti attributi:
- nome host e nome “visibile” (utilizzato negli screen del frontend per individuarlo);
- gruppo (o gruppi) di appartenenza: dare una classificazione degli Host in gruppi è conveniente per l'organizzazione logica e funzionale del sistema di monitoraggio;
- lista di agenti da interrogare: come già detto, è possibile utilizzare non solo lo Zabbix Agent, ma anche altre interfacce (fino alla versione 2.4 sono disponibili MIB SNMP, JMX per i processi Java e standard IPMI). Per ogni tipo di interfaccia è possibile specificare anche più di un indirizzo IP (o nome DNS)
- descrizione testuale dell'Host;
- informazione sul tipo di monitoraggio (tramite proxy o standard);
- flag di abilitazione del monitoraggio.
Ogni Host, inoltre, ha un Inventory (lista di informazioni caratteristiche, come sistema operativo, MAC address, serial number, dettagli hardware ecc), che può essere popolato manualmente oppure automaticamente, utilizzando [...]
ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 3684 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.
La potenza di Zabbix sta proprio nell’open source che ti permette di monitorare in piena autonomia senza far affidamento ad altri tool. Molto interessanti le funzioni di visualizzazione dati tipo le mappe e grafici vari. Ho sentito parlare anche di Nagios che forse dovrebbe essere simile a Zabbix…Ottimo articolo!
Ciao Maurizio! Innanzitutto grazie. Quello che ho voluto sottolineare nell’articolo, a partire dal titolo, è che Zabbix è una soluzione open source professionale, pronta all’uso e che ha due parole chiave: scalabilità e modularità. Con il progredire delle versioni (da qualche mese è uscita la 3.0) le features che il team di sviluppo Zabbix metterà dentro saranno sempre di più ed orientate alla customizzazione della piattaforma (è in programma di realizzare una vera e propria API in modo da svincolarsi completamente dalla web interface).
Nagios è il primo concorrente di Zabbix, ma ciò che mi fa propendere maggiormente verso questa soluzione è la sua grande comunità, e l’attenzione costante che il team di sviluppo Zabbix da ad essa: ogni anno la comunità propone lo sviluppo di un certo numero di features che vengono votate e, alla conferenza annuale di Zabbix, vengono annunciate le “vincitrici” che poi saranno implementate nella successiva versione: un bel modo per tenere in considerazione la community e creare partecipazione!
Veramente molto interessante… ancora ho letto soltanto questo articolo .. ma secondo voi sarà possibile interfacciarlo con raspberry e arduino per conoscere lo stato del gpio.. ?
Ciao mikelin! Come ho specificato nell’articolo, Zabbix è un sistema modulare, per cui è espandibile secondo le tue esigenze (io lo uso per il monitoraggio di temperature quando faccio la birra!). I modi per farlo sono molteplici: potresti scrivere un modulo per lo Zabbix agent, oppure una MIB SNMP (configurando l’item letto con tipologia SNMP agent), oppure più semplicemente configurando l’item come SSH o Telnet agent. I primi due casi sono un po’ più complicati (ma niente di impossibile!), mentre negli altri due basta configurare i parametri dell’item, inserendo nome utente e password per l’accesso SSH o Telnet, e lo script da eseguire sulla macchina per la lettura del GPIO.
Credo sia doveroso un secondo articolo di approfondimento sull’argomento!
ok per il secondo caso per il primo ci provo ,,,, per ora ho installato zappix server … ora provero qualche agent sia sotto windows che su linux …secondo articolo ben venga
Ottimo lavoro. Rimango in attesa della prossima e sicuramente interessante “puntata”
Ciao a tutti.
Uso Zabbix da più di due anni, è veramente un programma immenso, può fare davvero tante tante cose.
Sono amministratore di rete, di una media azienda, al momento eseguo quasi 16.500 controllo su 250 host +/- e devo dire che è uno strumento potentissimo, flessibile e leggero. Ho installato un server primario e uno di backup, entrambi debian Wheezy, sono entrambi pc vecchi (desktop non server), il primario (zabbix 2.4.xx) che funge anche da Nas è un vecchio HP con 2 GB di RAM (uno è libero) ….. il backup è ancora più vecchio con 1 GB di Ram (di cui oltre 500 mb liberi con Zabbix 3.xx) vabbeh taglio un pò vi dico solo che il Database di Zabbix è di 14 GB !!!!!! Vedo tutto, è meglio dell’occhio di Sauron del signore degli anelli ……. oltre a monitorare ogni singola porta degli apparati di rete (traffico in out, errori, ecc…. ) , monitoro il toner delle multifunzioni, inceppamenti carta, esaurimento carta delle stampanti a modulo continuo, performance di ogni singolo PC windows (uso cpu, ram, dati scritti sul pc al minuto, processi, software installato, ecc, inventario, spazio libero sul disco, OS, ecc……, ) insomma Zabbix ha ben pochi limiti, ci si deve smanettare parecchio, creare i template giusti, specialmente se si vuole monitorare PC windows (il problema è windows e non zabbix naturalmente). ……, potete monitorare naturalmente i servizi, DNS, FTP, ecc …….. di server Windows, Linux, BSD, ecc….
Che altro aggiungere …. magari volete pure un app per vedere i problemi sul vostro cell ….. ce ne sono un tot, io uso ZAX, ed esiste pure un plugin per Google Chrome.
Supporto, ottimo (in inglese …. ) ci sono ottime letture …….. anche in italiano (evito di fare pubblicità …… dico solo che l’autore del libro ha fatto un’eccellente lavoro e mi ha dato molti spunti). Insomma, e concludo, prima di scegliere zabbix ne ho provati tanti, Nagios (che uso), icinga, Observium, Spiceworks, LibreNMS, Zenoss, Ocs Inventory, Munin, Cacti, ho trovato Zabbix insuperabile. Provatelo, non ne rimarrete delusi !!!!!!!
Nota per la redazione, come amministratore di rete mi sono posto anche il problema di creare uno schema delle topologia della rete, esiste un ottimo software opensource “OpenDCIM”, io lo uso insieme a Zabbix, potrebbe essere utile per gli amministratori di rete una recensione ………
N.B: Zabbix funzione anche su Raspberry, (io l’ho testato la versione 2.2.xx sul raspberry 2 per una settimana intera, giusto per curiosità, ed ha funzionato senza alcun problema).