Project

General

Profile

MonitorIcingaEtAl » History » Version 5

Simone Piccardi, 04/17/2013 08:11 PM

1 1 Simone Piccardi
h1. Monitoraggio sistemi con Icinga & C.
2 1 Simone Piccardi
3 5 Simone Piccardi
<pre>
4 1 Simone Piccardi
5 5 Simone Piccardi
</pre>
6 5 Simone Piccardi
h2. Installazione base
7 5 Simone Piccardi
8 5 Simone Piccardi
_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:
9 5 Simone Piccardi
10 1 Simone Piccardi
<pre>
11 1 Simone Piccardi
deb http://backports.debian.org/debian-backports squeeze-backports main
12 1 Simone Piccardi
</pre>
13 1 Simone Piccardi
14 1 Simone Piccardi
il pacchetto è suddiviso in due parti, il _"core"_ che reimplementa le funzionalità di Nagios, e la nuova interfaccia web, pertanto installeremo entrambe con:
15 1 Simone Piccardi
16 1 Simone Piccardi
<pre>
17 1 Simone Piccardi
apt-get install -t squeeze-backports icinga icinga-web
18 1 Simone Piccardi
</pre>
19 1 Simone Piccardi
20 5 Simone Piccardi
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. 
21 1 Simone Piccardi
22 5 Simone Piccardi
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.
23 2 Simone Piccardi
24 2 Simone Piccardi
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):
25 2 Simone Piccardi
26 2 Simone Piccardi
<pre>
27 2 Simone Piccardi
salt=$(php5 -r 'echo hash("sha256", uniqid("root_", mt_rand()));')
28 2 Simone Piccardi
export SALT="$salt"
29 2 Simone Piccardi
export PW="passwordlungaecomplicata"
30 2 Simone Piccardi
pwhash=$(php5 -r 'echo hash_hmac("sha256", getenv("PW"), getenv("SALT"));')
31 2 Simone Piccardi
salt_e=${salt/\'/\\\'}
32 2 Simone Piccardi
pwhash_e=${pwhash/\'/\\\'}
33 2 Simone Piccardi
query="UPDATE nsm_user SET user_password='""$pwhash_e""', user_salt = '""$salt_e""', user_modified = NOW() WHERE user_name = 'root';"
34 2 Simone Piccardi
echo $query | mysql -u icinga_web -p icinga_web
35 2 Simone Piccardi
</pre>
36 2 Simone Piccardi
37 2 Simone Piccardi
fornendo dopo l'ultimo comando la password impostata per il database di @icinga-web@.
38 4 Simone Piccardi
39 3 Simone Piccardi
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@:
40 3 Simone Piccardi
41 3 Simone Piccardi
<pre>
42 1 Simone Piccardi
# start ido2db daemon (no/yes)
43 3 Simone Piccardi
IDO2DB=yes
44 3 Simone Piccardi
</pre>
45 3 Simone Piccardi
46 5 Simone Piccardi
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:
47 1 Simone Piccardi
48 1 Simone Piccardi
<pre>
49 4 Simone Piccardi
cp /usr/share/doc/icinga-idoutils/examples/idoutils.cfg-sample /etc/icinga/modules/idoutils.cfg
50 4 Simone Piccardi
</pre>
51 4 Simone Piccardi
52 4 Simone Piccardi
una volta fatto questo si riavviino i relativi servizi con:
53 4 Simone Piccardi
54 1 Simone Piccardi
<pre>
55 1 Simone Piccardi
service ido2db restart
56 1 Simone Piccardi
service icinga restart
57 1 Simone Piccardi
</pre>
58 5 Simone Piccardi
59 5 Simone Piccardi
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/@. 
60 5 Simone Piccardi
61 5 Simone Piccardi
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.
62 5 Simone Piccardi
63 5 Simone Piccardi
64 5 Simone Piccardi
h2. Grafici delle risorse con _PNP4Nagios_
65 5 Simone Piccardi
66 5 Simone Piccardi
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:
67 5 Simone Piccardi
68 5 Simone Piccardi
<pre>
69 5 Simone Piccardi
apt-get install -t squeeze-backports icinga-web-pnp
70 5 Simone Piccardi
</pre>
71 5 Simone Piccardi
72 5 Simone Piccardi
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:
73 5 Simone Piccardi
74 5 Simone Piccardi
<pre>
75 5 Simone Piccardi
AuthName "Iconga Access"
76 5 Simone Piccardi
AuthUserFile /etc/icinga/htpasswd.users
77 5 Simone Piccardi
</pre>
78 5 Simone Piccardi
79 5 Simone Piccardi
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. 
80 5 Simone Piccardi
81 5 Simone Piccardi
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:
82 5 Simone Piccardi
83 5 Simone Piccardi
<pre>
84 5 Simone Piccardi
...
85 5 Simone Piccardi
$conf['nagios_base'] = "/icinga/cgi-bin";
86 5 Simone Piccardi
...
87 5 Simone Piccardi
$conf['livestatus_socket'] = "unix:/var/lib/icinga/rw/live";
88 5 Simone Piccardi
...
89 5 Simone Piccardi
</pre>
90 5 Simone Piccardi
91 5 Simone Piccardi
La seconda riga attiene all'uso di ''livestatus'' per una lettura efficiente dei dati di _Icinga_, che comporta l'installazione del pacchetto relativo con:
92 5 Simone Piccardi
93 5 Simone Piccardi
<pre>
94 5 Simone Piccardi
apt-get install -t squeeze-backports check-mk-livestatus
95 5 Simone Piccardi
</pre>
96 5 Simone Piccardi
97 5 Simone Piccardi
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:
98 5 Simone Piccardi
99 5 Simone Piccardi
<pre>
100 5 Simone Piccardi
define module{
101 5 Simone Piccardi
        module_name    mklivestatus
102 5 Simone Piccardi
        path           /usr/lib/check_mk/livestatus.o
103 5 Simone Piccardi
        module_type    neb
104 5 Simone Piccardi
        args           /var/lib/icinga/rw/live
105 5 Simone Piccardi
        }
106 5 Simone Piccardi
</pre>
107 5 Simone Piccardi
(si usi @/var/lib/icinga/rw/live@ che è il default anche per @check_mk@ che vedremo in seguito). 
108 5 Simone Piccardi
109 5 Simone Piccardi
110 5 Simone Piccardi
Inoltre occorre attivare il demone @npcd@ in @/etc/default/npcd@ inserendo la riga:
111 5 Simone Piccardi
112 5 Simone Piccardi
113 5 Simone Piccardi
h2. Controllo con @check_mk@