Project

General

Profile

MonitorIcingaEtAl » History » Version 5

« Previous - Version 5/26 (diff) - Next » - Current version
Simone Piccardi, 04/17/2013 08:11 PM


Monitoraggio sistemi con Icinga & C.



h2. Installazione base

Icinga (http://www.icinga.org) è un fork di Nagios sviluppato in maniera aperta, che presenta numerosi miglioramenti e soprattutto una interfaccia utente nettamente più elaborata. Le presenti istruzioni fanno riferimento all'installazione su una Debian Squeeze utilizzando le versione più recenti disponibili nel repository di backports pertanto il primo passo da fare sarà quello di abilitare questi ultimi, aggiungendo a /etc/apt/sources.list la riga:

deb http://backports.debian.org/debian-backports squeeze-backports main

il pacchetto è suddiviso in due parti, il "core" che reimplementa le funzionalità di Nagios, e la nuova interfaccia web, pertanto installeremo entrambe con:

apt-get install -t squeeze-backports icinga icinga-web

Il sistema di debconf chiederà se abilitare o meno l'uso di comandi esterni con Icinga, questo consente, attraverso l'accesso in scrittura della pipe di controllo posta in /var/lib/icinga/rw/ di dare al web server la possibilità di utilizzare l'interfaccia dei comandi CGI, e servirà anche per l'accesso alla stessa da parte di altri programmi di ausilio, pertanto è opportuno attivarla rispetto alla scelta di default.

L'interfaccia di debconf chiede anche (qualora si usino diverse alternative) per quale web server generare la configurazione (si lasci il default di apache2), di configurare l'accesso e la creazione di vari database per i quali occorre, usando dbconfig-common, la password di root del database (si assume l'uso di MySQL su localhost) e le password per gli utenti di amministrazione, icingaadmin per Icinga e root per l'interfaccia Web. Viene altresì richiesta la configurazione del database di appoggio per lo storico dei dati (icinga-idoutils), per il quale di nuovo occorre la password di root del database.

Qualora la configurazione di icinga-web fallisca in fase di configurazione come capitato a me, occorrerà impostare a mano la password dell'utente root nel relativo database, per questo si dovranno eseguire i seguenti comandi (estratti dallo script di post-installazione):

salt=$(php5 -r 'echo hash("sha256", uniqid("root_", mt_rand()));')
export SALT="$salt" 
export PW="passwordlungaecomplicata" 
pwhash=$(php5 -r 'echo hash_hmac("sha256", getenv("PW"), getenv("SALT"));')
salt_e=${salt/\'/\\\'}
pwhash_e=${pwhash/\'/\\\'}
query="UPDATE nsm_user SET user_password='""$pwhash_e""', user_salt = '""$salt_e""', user_modified = NOW() WHERE user_name = 'root';" 
echo $query | mysql -u icinga_web -p icinga_web

fornendo dopo l'ultimo comando la password impostata per il database di icinga-web.

Una delle caratteristiche di icinga è la possibilità di utilizzare un database per lo stoccaggio dei dati, le estensioni per l'utilizzo di questa modalità di gestione dei dati sono fornite dal pacchetto icinga-idoutils (necessario nel caso si voglia utilizzare la nuova interfaccia di icinga-web, che lo richiede come dipendenza e fa configurare il relativo accesso al database). Per poterlo utilizzare deve essere esplicitamente abilitato l'avvio del demone ido2db modificando la seguente riga in /etc/default/icinga:

# start ido2db daemon (no/yes)
IDO2DB=yes

inoltre deve essere attivato il modulo di gestione da parte di Icinga, questo deve essere fatto attraverso l'uso del file di configurazione distribuito con icinga-idoutils, pertanto occorrerà copiare:

cp /usr/share/doc/icinga-idoutils/examples/idoutils.cfg-sample /etc/icinga/modules/idoutils.cfg

una volta fatto questo si riavviino i relativi servizi con:

service ido2db restart
service icinga restart

e si potrà verificare il funzionamento anche della nuova interfaccia web (dando per scontato di aver creato un opportuno virtual host sotto SSL), andando sull'indirizzo https://icinga.miosito.it/icinga-web/.

Qualora i dati di monitoraggio siano presenti, ma risulti marcata come "_DOWN_" l'instanza di icinga nel quadro riassuntivo, si verifichi che la timezone di sistema in /etc/timezone, quella di PHP nella variabile date.timezone in /etc/php5/apache2/php.ini siano coerenti, nel caso si provveda anche al riavvio di MySQL per fargli vedere i valori corretti.

Grafici delle risorse con PNP4Nagios

Uno degli aspetti più rilevanti di un sistema di monitoraggio è quello che consente di mantenere uno storico del consumo delle risorse che consente di tenerne sotto controllo l'evoluzione. A questo scopo è disponibile PHP4Nagios, che supporta anche una opportuna integrazione con icinga; per installarlo è sufficiente eseguire il comando:

apt-get install -t squeeze-backports icinga-web-pnp

che installa tutto il necessario nelle dipendenze, una volta fatto questo però vanno fatte alcune correzioni alle configurazioni del pacchetto che sono fatte per Nagios, in particolare occorre modificare /etc/apache2/conf.d/pnp4nagios.conf correggendo le modalità di autenticazione con:

AuthName "Iconga Access" 
AuthUserFile /etc/icinga/htpasswd.users

in modo che corrispondano a quanto presente anche in /etc/apache2/conf.d/icinga.conf, e ci si ricordi di eseguire un reload di apache.

Occorre poi correggere /etc/pnp4nagios/config.php di nuovo per fagli usare i valori opportuni relativi ad Icinga, in particolare si dovranno modificare le seguenti linee:

...
$conf['nagios_base'] = "/icinga/cgi-bin";
...
$conf['livestatus_socket'] = "unix:/var/lib/icinga/rw/live";
...

La seconda riga attiene all'uso di ''livestatus'' per una lettura efficiente dei dati di Icinga, che comporta l'installazione del pacchetto relativo con:

apt-get install -t squeeze-backports check-mk-livestatus

ed una ulteriore configurazione di Icinga; questa può essere fatta usando la nuova funzionalità dei moduli (evitando quindi la direttiva broker_module) inserendo in un file (nel nostro caso livestatus.cfg) nella directory /etc/icinga/modules/ con contenuto:

define module{
        module_name    mklivestatus
        path           /usr/lib/check_mk/livestatus.o
        module_type    neb
        args           /var/lib/icinga/rw/live
        }

(si usi /var/lib/icinga/rw/live che è il default anche per check_mk che vedremo in seguito).

Inoltre occorre attivare il demone npcd in /etc/default/npcd inserendo la riga:

Controllo con check_mk