Nagios e' un ottimo tool FREE per il monitoraggio di sistemi
e di reti.
Molto completo ed efficiente ha un numero molto elevato di Plug-in
che consentono il controllo di un sistema informativo in tutti i suoi
aspetti:
dai router ai web server, dai file system alle basi dati, ...
Poiche' non ho trovato molto in italiano ho scritto
questo breve documento che ne descrive alcune caratteristiche
seguendo l'installazione,
la configurazione e
l'utilizzo di Nagios.
Questa pagina e' stata scritta quasi dieci anni fa...
Nagios e' sempre piu' diffuso ed e' considerato uno standard di fatto
per il monitoraggio di sistema.
Ora e' disponibile la versione
Nagios XI
che fornisce una GUI di amministrazione molto completa e semplici wizard per la configurazione.
Ma le funzionalita' di base della versione core, descritta in questo documento,
sono rimaste praticamente identiche.
La modalita' consigliata e' quella del tarball ma, se siete pigri
o volete fare in fretta, sono disponibili pacchetti gia'
compilati per gli ambienti piu' diffusi (eg. RPM x Linux Red Hat).
Poiche' sono prigro utilizzero' come esempio un'installazione
su Linux Red Hat via RPM!
Naturalmente quanto riportato vale, mutatis mutandis
anche per altri ambienti e sistemi.
I passi principali sono:
Attenzione non basta solo "Nagios" e' necessario scaricare anche i
plugin!
rpm -i nagios-2.2-1.el3.rf.i386.rpm
rpm -i --nodeps nagios-plugins-1.4.2-1.1.el3.rf.i386.rpm
Naturalmente versioni ed opzioni possono cambiare un poco...
ScriptAlias /nagios/cgi-bin "/usr/lib/nagios/cgi"
<Directory "/usr/lib/nagios/cgi">
# SSLRequireSSL
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from all
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /etc/nagios/htpasswd.users
Require valid-user
</Directory>
Alias /nagios "/usr/share/nagios"
<Directory "/usr/share/nagios">
# SSLRequireSSL
Options None
AllowOverride None
Order allow,deny
Allow from all
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /etc/nagios/htpasswd.users
Require valid-user
</Directory>
Creare uno o piu' utenti web per l'accesso a Nagios con:
htpasswd -c /etc/nagios/htpasswd.users nagiosadmin
E' sufficiente una configurazione minimale...
Le possibilita' sono molteplici, quella che preferisco
richiede due sole modifiche al file /etc/nagios/nagios.cfg:
#cfg_file=/etc/nagios/minimal.cfg
cfg_dir=/etc/nagios/myConf
A questo punto e' sufficiente inserire i file di configurazione
nella directory myConf sperimentando un poco!
Un esempio e' riportato nel seguito.
In ogni caso, ad ogni modifica della configurazione,
e' opportuno lanciare Nagios in modalita' di
controllo:
nagios -v nagios.cfg
Ora bisogna autorizzare gli utenti creati
con Apache all'utilizzo del CGI agendo su /etc/nagios/cgi.cfg.
Nagios consente di definire in modo molto selettivo i permessi.
Un modo semplice e' quello di autorizzare nagiosadmin a tutto
o quasi scommentando i vari:
#authorized_*
E' facile! Si tratta di servizi:
service http start
service nagios start
Ora funziona tutto. Basta collegarsi su http://nomeserver/nagios e si entra nella Home Page!
Il file di configurazione di default di Nagios e' /etc/nagios/nagios.cfg. Se si vuole impostare una configurazione significativa e' molto importante strutturare bene i file di configurazione. La modalita' piu' semplice e' quella di inserire le diverse clausole direttamente nel file principale ma il mio consiglio e' quello di creare una directory ed all'interno di quella piu' file organizzati per tipologia di direttiva.
Configurare Nagios non e' difficile e l'approccio pragmatico e' il migliore. Quindi conviene provare immediatamente ed inserire nuovi oggetti a poco a poco. Vediamo quindi qualche semplice configurazione.
define command{ command_name check_serv command_line $USER1$/check_http -H $ARG1$ -p $ARG2$ -u $ARG3$ -s $ARG4$ --onredirect=follow } define service{ use generic-service host_name web1.acme.it,web2.acme.it service_description PING is_volatile 0 check_period 24x7 max_check_attempts 4 normal_check_interval 5 retry_check_interval 1 contact_groups admins notification_options w,c,r notification_interval 960 notification_period 24x7 check_command check_ping!100.0,20%!500.0,60% } define service{ use generic-service host_name web1.acme.it service_description SERVICE-WebHome is_volatile 0 check_period 12x5 max_check_attempts 3 normal_check_interval 2 retry_check_interval 1 contact_groups admins notification_interval 240 notification_period 12x5 notification_options w,c,r check_command check_serv!www.acme.it!80!/pls/portal/PortalHome!"ACME Home Page" } define host{ use generic-host host_name web1.acme.it alias web1.acme.it address 10.10.10.4 check_command check-host-alive max_check_attempts 10 notification_interval 120 notification_period 24x7 notification_options d,r contact_groups admins } define host{ use generic-host host_name web2.acme.it alias web2.acme.it address 10.10.10.5 check_command check-host-alive max_check_attempts 10 notification_interval 120 notification_period 24x7 notification_options d,r contact_groups admins }
I principali oggetti in Nagios sono gli host che
ospitano service e che vengono controllati con gli
opportuni command.
Nell'esempio sono configurati due host che vengono controllati con un
"ping". E' inoltre definito il controllo di un servizio web su cui
viene verificato il contenuto della pagina. La verifica segue eventuali
redirect ed e' indipendente dagli indirizzi dei server (come deve essere
per verificare le piu' complesse configurazioni con proxy, cluster, ...).
E' possibile definire anche altri aspetti quali raggruppamenti di
host e servizi, gruppi di operatori ed i loro diritti, orari
di servizio, coordinate dei server per una visione in 3D, ...
Le diverse definizioni possono essere poste su un unico file oppure,
meglio, separate per tipologia di oggetto e di servizio e raccolte
nella directory indicata in nagios.cfg.
La definizione degli elementi di configurazione di Nagios
utilizza una logica object oriented. Quindi le opzioni
vengono "ereditate" consentendo cosi' una definizione piuttosto
snella e modulare di ambienti anche complessi.
define hostgroup{
hostgroup_name production
alias Production Servers
members web1.acme.it,web2.acme.it,db1.acme.it
}
define contact{
contact_name sist-II
alias Sistemisti IIo livello
service_notification_period 12x5
host_notification_period 24x7
service_notification_options w,u,c,f
host_notification_options d,f
service_notification_commands notify-by-email
host_notification_commands host-notify-by-email
email sist2@acme.it
}
define contactgroup{
contactgroup_name admins
alias Nagios Administrators
members nagios-admin,sist-II
}
define timeperiod{
timeperiod_name 12x5
alias Extended working hours
sunday 00:00-00:00
monday 08:00-19:00
tuesday 08:00-19:00
wednesday 08:00-19:00
thursday 08:00-19:00
friday 08:00-19:00
saturday 00:00-00:00
}
define hostextinfo{
host_name web1.acme.it
notes Application Server 1
icon_image linux.png
icon_image_alt Web Server1
statusmap_image linux.gd2
2d_coords 200,75
3d_coords 200.0,75.0,50.0
}
Il controllo dell'effettivo fuzionamento di un servizio avviene
mediante un comando interno di Nagios oppure mediante un Plug-in.
Il numero di Plug-in e' molto elevato e ciascuno consente un
controllo molto completo delle risorse per le quali e' stato
sviluppato.
Quanto riportato e' relativo al solo Plug-in check_http
che supporta una ventina di differenti opzioni. I Plug-in ufficiali
sono una cinquantina e si trovano in /usr/lib/nagios/plugins.
I controlli possibili sono i piu' svariati: connettivita' di rete,
presenza di servizi, utilizzo del sistema operativo,
corretto funzionamento di database, ...
Ad esempio e' possibile controllare se un sito web e' attivo,
se ad una richiesta risponde con una pagina che contiene uno
specifico testo, se il certificato server utilizzato dal protocollo
HTTPS e' in scadenza, se la pagina viene reindirizzata, ...
I plug-in possono essere provati in modalita' interattiva,
quindi la configurazione di nuovi controlli e test risulta semplice
e veloce:
./check_oracle --help
Restituisce un help sulle diverse opzioni fornite
dal plugin (e' anche possibile utilizzare l'opzione in formato short:
-h).
E' possibile sviluppare nuovi plug-in seguendo le semplici linee guida
pubblicate. Tale eventualita' e' diventata tuttavia piuttosto remota
poiche' i plug-in disponibili sono gia' molto completi e quindi tipicamente
si utilizzano quelli presenti con eventuali piccole modifiche.
Le caratteristiche di base di un plug-in sono molto semplici.
Deve essere un programma eseguibile scritto in un qualsiasi linguaggio,
che possa ricevere eventuali parametri, che restituisca su stdout una
stringa con il risultato del controllo ed un codice d'errore secondo
la seguente logica: 0=OK 1=WARNING 2=CRITICAL 3=UNKNOWN.
Oltre ai plug-in e' possibile attivare controlli esterni.
Nagios legge periodicamente da un file le direttive di comandi esterni
che possono contenere richieste di configurazione o i risultati di un
controllo (PROCESS_SERVICE_CHECK_RESULT).
In questo modo integrare Nagios con altri strumenti e programmi di monitoraggio
risulta molto semplice.
L'utilizzo di Nagios e' molto semplice. E' lui a lavorare in modo continuo
ed a controllare i sistemi ed i servizi che sono stati configurati.
Generalmente si utilizza la pagina di dettaglio dei servizi ordinata
per stato (ma anche altre come la "Tactical Overview" o la "ServiceGroup Summary")
per avere su console lo stato complessivo
di tutti gli ambienti evidenziando eventuali problemi.
Quando Nagios rileva un problema lo evidenzia sulla console e scatena
tutte le azioni configurate (eg. invio di email). Quando un operatore
prende in carico il problema Nagios interrompe le escalation e riporta
sulla console l'indicazione di lavori in corso.
E' possibile effettuare
da web diverse attivita' di controllo e gestione
(eg. controlli a richiesta, interruzioni di servizio programmate, ...).
Dal punto di vista funzionale sono coperte tutte le esigenze di una
linea di servizio operativa sulle rete e sui sistemi.
Nagios e' un ottimo software per il controllo operativo di sistemi
e reti. E' completo e flessibile al pari di altri prodotti commerciali.
La sua configurazione e' semplice e veloce.
Inoltre e' completamente personalizzabile e gratuito... che dire di piu'?
Documento: Nagios
Nagios effettua i controlli in modo intelligente.
Se un server risulta e' in down ovviamente non saranno utilizzabili tutti
i servizi su esso definiti; Nagios non effettua controlli inutili ed
invia una sola notifica d'errore.
Se e' stata configurata in modo corretto la topologia della rete
(con l'opzione <parent> dell'oggetto host),
Nagios puo' distinguere tra un sistema in down ed un sistema non raggiungibile
perche' un componente intermedio della rete e' in fault.
Anche in questo caso non vengono effettuati controlli inutili
e vengono inviate solo le notifiche richieste.
Come si conviene ai piu' completi strumenti di monitoraggio,
sono disponibili sofisticate funzioni di statistica e reportistica.
Data: 1 Aprile 2006
Versione: 1.0.2 - 1 Aprile 2014
Autore: Meo Bogliolo