Progetto

Generale

Profilo

MonitorIcingaEtAl » Cronologia » Versione 5

Simone Piccardi, 17-04-2013 20:11

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