Project

General

Profile

Actions

MonitorIcingaEtAl » History » Revision 7

« Previous | Revision 7/26 (diff) | Next »
Simone Piccardi, 04/18/2013 12:09 PM


Monitoraggio sistemi con Icinga & C.

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, su cui torneremo più avanti.

Per la generazione dei grafici occorre che Icinga generi i relativi dati, PHP4Nagios prevede diverse modalità per l'accesso agli stessi, la più efficiente è quella dell'uso di un apposito demone, npcd che si appoggia ad un modulo di Icinga. In realtà il demone può essere anche usato da solo, facendo generare i dati ad Icinga nelle opportune directory.

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

# Should NPCD be started? ("yes" to enable)
RUN="yes" 

Il secondo passo è configurare Icinga, cosa che varia a seconda delle modalità scelte per generare i dati. Se si sceglie di usare quella consigliata attraverso il modulo npcdmod.o occorrono due passaggi; il primo è quello di indicare ad Icinga di generare i dati, inserendo in /etc/icinga/icinga.cfg la riga:

process_performance_data=1

occorrerà poi abilitare il modulo inserendo in un file di configurazione (nel nostro caso npcdmod.cfg) nella directory /etc/icinga/modules/ con contenuto:

define module{
        module_name    npcdmod
        path           /usr/lib/pnp4nagios/npcdmod.o 
        module_type    neb
        args           config_file=/etc/pnp4nagios/npcd.cfg
        }

Controllo con check_mk

L'uso dell'interfaccia web di check_mk si basa sull'utilizzo di ''livestatus'', una modalità di presentazione dei dati che consente una lettura più veloce ed efficente, cui abbiamo già accennato in precedenta. Questa 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
        }

dove /var/lib/icinga/rw/live che è il default usato da check_mk.

Updated by Simone Piccardi over 11 years ago · 7 revisions