MonitorIcingaEtAl » History » Version 8
Simone Piccardi, 04/18/2013 02:21 PM
1 | 1 | Simone Piccardi | h1. Monitoraggio sistemi con Icinga & C. |
---|---|---|---|
2 | |||
3 | 5 | Simone Piccardi | h2. Installazione base |
4 | |||
5 | _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: |
||
6 | |||
7 | 1 | Simone Piccardi | <pre> |
8 | deb http://backports.debian.org/debian-backports squeeze-backports main |
||
9 | </pre> |
||
10 | |||
11 | il pacchetto è suddiviso in due parti, il _"core"_ che reimplementa le funzionalità di Nagios, e la nuova interfaccia web, pertanto installeremo entrambe con: |
||
12 | |||
13 | <pre> |
||
14 | apt-get install -t squeeze-backports icinga icinga-web |
||
15 | </pre> |
||
16 | |||
17 | 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. |
18 | 1 | Simone Piccardi | |
19 | 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. |
20 | 2 | Simone Piccardi | |
21 | 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): |
||
22 | |||
23 | <pre> |
||
24 | salt=$(php5 -r 'echo hash("sha256", uniqid("root_", mt_rand()));') |
||
25 | export SALT="$salt" |
||
26 | export PW="passwordlungaecomplicata" |
||
27 | pwhash=$(php5 -r 'echo hash_hmac("sha256", getenv("PW"), getenv("SALT"));') |
||
28 | salt_e=${salt/\'/\\\'} |
||
29 | pwhash_e=${pwhash/\'/\\\'} |
||
30 | query="UPDATE nsm_user SET user_password='""$pwhash_e""', user_salt = '""$salt_e""', user_modified = NOW() WHERE user_name = 'root';" |
||
31 | echo $query | mysql -u icinga_web -p icinga_web |
||
32 | </pre> |
||
33 | |||
34 | fornendo dopo l'ultimo comando la password impostata per il database di @icinga-web@. |
||
35 | 4 | Simone Piccardi | |
36 | 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@: |
37 | |||
38 | <pre> |
||
39 | 1 | Simone Piccardi | # start ido2db daemon (no/yes) |
40 | 3 | Simone Piccardi | IDO2DB=yes |
41 | </pre> |
||
42 | |||
43 | 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: |
44 | 1 | Simone Piccardi | |
45 | <pre> |
||
46 | 4 | Simone Piccardi | cp /usr/share/doc/icinga-idoutils/examples/idoutils.cfg-sample /etc/icinga/modules/idoutils.cfg |
47 | </pre> |
||
48 | |||
49 | una volta fatto questo si riavviino i relativi servizi con: |
||
50 | |||
51 | 1 | Simone Piccardi | <pre> |
52 | service ido2db restart |
||
53 | service icinga restart |
||
54 | </pre> |
||
55 | 5 | Simone Piccardi | |
56 | 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/@. |
||
57 | |||
58 | 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. |
||
59 | |||
60 | |||
61 | h2. Grafici delle risorse con _PNP4Nagios_ |
||
62 | |||
63 | 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: |
||
64 | |||
65 | <pre> |
||
66 | apt-get install -t squeeze-backports icinga-web-pnp |
||
67 | </pre> |
||
68 | |||
69 | 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: |
||
70 | |||
71 | <pre> |
||
72 | AuthName "Iconga Access" |
||
73 | AuthUserFile /etc/icinga/htpasswd.users |
||
74 | </pre> |
||
75 | |||
76 | 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. |
||
77 | |||
78 | 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: |
||
79 | |||
80 | <pre> |
||
81 | ... |
||
82 | $conf['nagios_base'] = "/icinga/cgi-bin"; |
||
83 | ... |
||
84 | $conf['livestatus_socket'] = "unix:/var/lib/icinga/rw/live"; |
||
85 | ... |
||
86 | </pre> |
||
87 | |||
88 | 7 | Simone Piccardi | La seconda riga attiene all'uso di ''livestatus'' per una lettura efficiente dei dati di _Icinga_, su cui torneremo più avanti. |
89 | 1 | Simone Piccardi | |
90 | 7 | Simone Piccardi | 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. |
91 | |||
92 | Anzitutto occorre attivare il demone @npcd@ in @/etc/default/npcd@ inserendo la riga: |
||
93 | |||
94 | 1 | Simone Piccardi | <pre> |
95 | 7 | Simone Piccardi | # Should NPCD be started? ("yes" to enable) |
96 | RUN="yes" |
||
97 | </pre> |
||
98 | |||
99 | 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: |
||
100 | |||
101 | <pre> |
||
102 | process_performance_data=1 |
||
103 | </pre> |
||
104 | |||
105 | occorrerà poi abilitare il modulo inserendo in un file di configurazione (nel nostro caso @npcdmod.cfg@) nella directory @/etc/icinga/modules/@ con contenuto: |
||
106 | |||
107 | <pre> |
||
108 | define module{ |
||
109 | module_name npcdmod |
||
110 | path /usr/lib/pnp4nagios/npcdmod.o |
||
111 | module_type neb |
||
112 | args config_file=/etc/pnp4nagios/npcd.cfg |
||
113 | } |
||
114 | </pre> |
||
115 | |||
116 | |||
117 | 8 | Simone Piccardi | h2. Controllo con _Check_MK_ |
118 | 1 | Simone Piccardi | |
119 | 8 | Simone Piccardi | _Check_MK_ è programma che consente di gestire il monitoraggio centralizzato di diversi parametri da parte di _Icinga_ con una singola connessione ad un opportuno _agent_ da installare sulle singole macchine da porre sotto controllo. Il programma inoltre fornisce anche una serie di funzionalità di controllo ed autodiscovery dei servizi ed una interfaccia di controllo alternativa. Per l'integrazione con _Icinga_ il primo passo è installare tutto il necessario sul server: |
120 | 1 | Simone Piccardi | |
121 | 8 | Simone Piccardi | <pre> |
122 | apt-get install -t squeeze-backports check-mk-server check-mk-config-icinga check-mk-agent |
||
123 | </pre> |
||
124 | 1 | Simone Piccardi | |
125 | 8 | Simone Piccardi | 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: |
126 | |||
127 | 7 | Simone Piccardi | <pre> |
128 | 5 | Simone Piccardi | apt-get install -t squeeze-backports check-mk-livestatus |
129 | </pre> |
||
130 | |||
131 | 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: |
||
132 | |||
133 | 1 | Simone Piccardi | <pre> |
134 | 5 | Simone Piccardi | define module{ |
135 | module_name mklivestatus |
||
136 | path /usr/lib/check_mk/livestatus.o |
||
137 | module_type neb |
||
138 | 1 | Simone Piccardi | args /var/lib/icinga/rw/live |
139 | 5 | Simone Piccardi | } |
140 | </pre> |
||
141 | 8 | Simone Piccardi | dove @/var/lib/icinga/rw/live@ che è il default usato da _Check_MK_. |