Un sistema di monitoring degno di questo nome deve prevedere la possibilità di tracciare dei grafici in base ai risultati dei check automatici da esso effettuati. Purtroppo Nagios non supporta tale funzionalità in maniera nativa, ma, per fortuna, sono disponibili tutta una serie plugin pensati appositamente per il suddetto NMS, in grado di svolgere la funzione in oggetto.
Il plugin che ho scelto prende il nome di pnp4nagios ed è scaricabile da qui.
Una volta completato il download vediamo come installare e configurare il tutto.
Preparazione della macchina ed installazione di pnp4nagios
Per prima cosa scompattiamo la tarball mediante il comando:
[root@NMS ~]# tar -xzvf pnp4nagios-0.6.21.tar.gz
Come prerequisiti per la compilazione degli eseguibili presenti all'interno della directory appena creata è necessario installare sul nostro sistema il compilatore (gcc), una libreria perl, ovvero perl-time-Hires (utile per testare la configurazione ad installazione avvenuta) ed una libreria PHP (necessaria per l'esportazione dei grafici in formato pdf):
[root@NMS ~]# yum install gcc
[root@NMS ~]# yum install perl-time-Hires
[root@NMS ~]# yum install php-gd
Ad installazione avvenuta, posizioniamoci nella dir appena creata
[root@NMS ~]# cd pnp4nagios-0.6.21
e lanciamo i comandi:
[root@NMS pnp4nagios-0.6.21]# ./configure
[root@NMS pnp4nagios-0.6.21]# make all
[root@NMS pnp4nagios-0.6.21]# make fullinstall
In particolare, il primo comando serve a verificare che il sistema sia dotato di tutti gli applicativi necessari per la compilazione dei sorgenti relativi a pnp4nagios; il secondo comando esegue la compilazione vera e propria mentre il terzo comando installa il plugin sulla nostra macchina. La dir target dell'installazione sarà la seguente:
/usr/local/pnp4nagios/
Configurazione dell'interfaccia Web di pnp4nagios
Per ragioni di sicurezza occorre dapprima disabilitare la pagina install.php, semplicemente rinominandola:
[root@NMS ~]# mv /usr/local/pnp4nagios/share/install.php /usr/local/pnp4nagios/share/install.php.ignore
In seguito dobbiamo linkare la dir share di pnp4nagios all'interno di /var/www/html, in modo che sia raggiungibile via Web:
[root@NMS ~]# ln -s /usr/local/pnp4nagios/ /var/www/html/pnp4nagios
Inoltre, bisogna fare in modo che il suddetto plugin utilizzi lo stesso file di autenticazione HTTP utilizzato da Nagios:
[root@NMS ~]# cat /etc/httpd/conf.d/nagios.conf | grep AuthUserFile
Tale file (per default) dovrebbe essere il seguente:
/etc/nagios/passwd
Ergo sostituiamo la entry presente nativamente su /etc/httpd/conf.d/pnp4nagios.conf con alla voce AuthUserFile con /etc/nagios/passwd
Ricarichiamo la configurazione di httpd per rendere effettive le suddette modifiche:
[root@NMS ~]# service httpd reload
Configurazione di Nagios
Supponendo che la modalità di funzionamento di pnp4nagios sia la synchronous, le modifiche da apportare alla configurazione di Nagios (/etc/nagios/nagios.conf) sono le seguenti:
1) Abilitare i perfdata, sostituendo:
process_performance_data=0
con:
process_performance_data=1
2) Decommentare le diciture:
host_perfdata_command=process-host-perfdata
service_perfdata_command=process-service-perfdata
All'interno del file /etc/nagios/objects/commands.cfg occorre sostituire le diciture:
'process-host-perfdata' command definition
define command{
command_name process-host-perfdata
command_line /usr/bin/printf "%b" "$LASTHOSTCHECK$t$HOSTNAME$t$HOSTSTATE$t$HOSTATTEMPT$t$HOSTSTATETYPE$t$HO$
}
'process-service-perfdata' command definition
define command{
command_name process-service-perfdata
command_line /usr/bin/printf "%b" "$LASTSERVICECHECK$t$HOSTNAME$t$SERVICEDESC$t$SERVICESTATE$t$SERVICEATTEMP$
}
con:
define command {
command_name process-service-perfdata
command_line /usr/bin/perl /usr/local/pnp4nagios/libexec/process_perfdata.pl
}
define command {
command_name process-host-perfdata
command_line /usr/bin/perl /usr/local/pnp4nagios/libexec/process_perfdata.pl -d HOSTPERFDATA
}
Ciò si rende necessario per consentire a pnp4nagios di processare le perfdata provenienti dai plugin utilizzati per effettuare i check (se le supportano).
Per quanto riguarda il file /etc/nagios/objects/template.cfg si rende necessario aggiungere la stringa:
action_url /pnp4nagios/index.phh/graph?host=$HOSTNAME$&srv=_HOST_
nella definizione degli host, e la stringa:
action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$
nella definizione dei servizi.
A configurazione di Nagios completata lanciamo un restart del demone in questione:
[root@NMS ~]# service nagios restart
Verifica della configurazione di Nagios e pnp4nagios
Per effettuare i check della configurazione relativa a Nagios ed al suo plugin pnp4nagios è possibile scaricare lo script perl verify_pnp_config:
[root@NMS ~]# wget http://verify.pnp4nagios.org/verify_pnp_config
Rendiamolo eseguibile:
[root@NMS ~]# chmod +x verify_pnp_config
Lanciamo dunque lo script:
[root@NMS ~]# ./verify_pnp_config -m sync -c /etc/nagios/nagios.cfg -p /usr/local/pnp4nagios/etc
e se il check da risultato positivo significa che la procedura di configurazione è andata a buon fine.
Come ulteriore check, verifichiamo che nella dir /usr/local/pnp4nagios/var/perfdata vi sia una dir per ogni host su cui è stata abilitata l'action_url e che tali directory contengano dei file con estensione *.rrd (round robin data) ed *.xml.
Nel caso in cui queste dir non contengano i suddetti file (recanti nomenclatura del tipo nomeservizio.rrd e nomeservizio.xml) significa che i plugin utilizzati per effettuare i check non supportano le perfdata.
Infine, all'interno della directory /usr/local/pnp4nagios/share/templates.dist sono presenti le pagine Web contenenti la struttura dei grafici per i plugin nativi di Nagios. Se avete installato qualche plugin aggiuntivo, solitamente viene resa disponibile per il download anche la pagina Web per i grafici ad esso associati. Tale pagina dovrà essere salvata all'interno della directory /usr/local/pnp4nagios/share/templates.
Fine del post, alla prossima.