Project

General

Profile

MonitorIcingaEtAl » History » Version 26

Simone Piccardi, 09/15/2016 07:25 PM

1 1 Simone Piccardi
h1. Monitoraggio sistemi con Icinga & C.
2 1 Simone Piccardi
3 5 Simone Piccardi
h2. Installazione base
4 5 Simone Piccardi
5 21 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  Debian, aggiornate a Jessie (ma dovrebbero essere usabili anche su Wheezy dove i backports per @check-mk@ non dovrebbero servire). Per poter utilizzare le versione più recenti disponibili di @check-mk@ (necessario per Jessie che non lo ha nei pacchetti ufficiali) occorre usare il repository di @backports@; pertanto il primo passo da fare sarà quello di abilitare questi ultimi, aggiungendo a @/etc/apt/sources.list@ la riga:
6 5 Simone Piccardi
7 1 Simone Piccardi
<pre>
8 21 Simone Piccardi
deb http://httpredir.debian.org/debian jessie-backports main
9 16 Simone Piccardi
</pre>
10 16 Simone Piccardi
11 14 Simone Piccardi
Per installare _Icinga_  è necessario disporre di un database cui appoggiarsi per lo stoccaggio dei dati, altrimenti la configurazione automatica con @dbconfig-common@ fallirà; nel nostro caso si assumerà l'uso di MySQL su localhost, che dovrà essere già presente, per cui si abbia cura di installarlo preventivamente con:
12 1 Simone Piccardi
13 1 Simone Piccardi
<pre>
14 14 Simone Piccardi
apt-get install mysql-server
15 14 Simone Piccardi
</pre>
16 1 Simone Piccardi
17 14 Simone Piccardi
Il pacchetto di _Icinga_ fornito da Debian è suddiviso in due parti, il _"core"_ che reimplementa le funzionalità di Nagios, e la nuova interfaccia web, pertanto installeremo entrambe con (si esegua prima un @apt-get update@ se non lo si è fatto dopo avere aggiunto le fonti di _backports_):
18 1 Simone Piccardi
19 14 Simone Piccardi
<pre>
20 23 Simone Piccardi
apt-get install icinga icinga-web icinga-idoutils 
21 25 Simone Piccardi
# su Jessie anche
22 23 Simone Piccardi
apt-get install icinga-web-config-icinga
23 1 Simone Piccardi
</pre>
24 1 Simone Piccardi
25 25 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. Si verifichi che sia impostato in @/etc/icinga/icinga.cfg@ (se non viene attivato, va fatto manualmente al seguente contenuto):
26 18 Simone Piccardi
27 1 Simone Piccardi
<pre>
28 1 Simone Piccardi
check_external_commands=1
29 1 Simone Piccardi
</pre>
30 18 Simone Piccardi
31 21 Simone Piccardi
Oltre a questo è però necessario che ci siano i permessi di accesso corretti per @/var/lib/icinga/rw/@, il cui default non consente l'accesso, per questo si raccomanda di verificare che siano corretti (su Jessie l'impostazione è ok, su Wheezy no) e nel caso modificarne i permessi di accesso in maniera permanente con:
32 1 Simone Piccardi
33 10 Simone Piccardi
<pre>
34 21 Simone Piccardi
dpkg-statoverride --update --add nagios www-data 2710 /var/lib/icinga/rw 
35 21 Simone Piccardi
dpkg-statoverride --update --add nagios nagios 755
36 10 Simone Piccardi
</pre>
37 10 Simone Piccardi
38 21 Simone Piccardi
nel qual caso occorrerà riavviare il servizio con @service icinga restart@, verificando che sia raggiungibile il socket @icinga.cmd@ nella directory citata.
39 1 Simone Piccardi
40 25 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. In particolare oltre al database di @icinga@ stesso, richiesta la configurazione del database di appoggio per lo storico dei dati (@icinga-idoutils@).
41 10 Simone Piccardi
42 25 Simone Piccardi
Con _debconf_ vengono anche impostate le password per gli utenti di amministrazione delle interfacce web, che sono @icingaadmin@ per _Icinga_ standard e @root@ per la nuova interfaccia Web. La password di @root@ di @icinga-web@ viene salvata sul database, e può essere modificata con un @dpkg-reconfigure@ del pacchetto; la password di @icingaadmin@ della versione classica (riusata anche da PNP4Nagios) viene salvata sul file @/etc/icinga/htpasswd.users@ e può essere modificata con il comando @htpasswd@.
43 25 Simone Piccardi
44 21 Simone Piccardi
Con alcune vecchie versioni di Debian la configurazione di @icinga-web@ può fallire in fase di configurazione, ed allora 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):
45 2 Simone Piccardi
46 2 Simone Piccardi
<pre>
47 2 Simone Piccardi
salt=$(php5 -r 'echo hash("sha256", uniqid("root_", mt_rand()));')
48 2 Simone Piccardi
export SALT="$salt"
49 2 Simone Piccardi
export PW="passwordlungaecomplicata"
50 2 Simone Piccardi
pwhash=$(php5 -r 'echo hash_hmac("sha256", getenv("PW"), getenv("SALT"));')
51 2 Simone Piccardi
salt_e=${salt/\'/\\\'}
52 2 Simone Piccardi
pwhash_e=${pwhash/\'/\\\'}
53 2 Simone Piccardi
query="UPDATE nsm_user SET user_password='""$pwhash_e""', user_salt = '""$salt_e""', user_modified = NOW() WHERE user_name = 'root';"
54 2 Simone Piccardi
echo $query | mysql -u icinga_web -p icinga_web
55 1 Simone Piccardi
</pre>
56 2 Simone Piccardi
57 2 Simone Piccardi
fornendo dopo l'ultimo comando la password impostata per il database di @icinga-web@.
58 4 Simone Piccardi
59 25 Simone Piccardi
Come accennato 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@:
60 3 Simone Piccardi
61 3 Simone Piccardi
<pre>
62 1 Simone Piccardi
# start ido2db daemon (no/yes)
63 3 Simone Piccardi
IDO2DB=yes
64 3 Simone Piccardi
</pre>
65 3 Simone Piccardi
66 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:
67 1 Simone Piccardi
68 1 Simone Piccardi
<pre>
69 1 Simone Piccardi
cp /usr/share/doc/icinga-idoutils/examples/idoutils.cfg-sample /etc/icinga/modules/idoutils.cfg
70 4 Simone Piccardi
</pre>
71 4 Simone Piccardi
72 4 Simone Piccardi
una volta fatto questo si riavviino i relativi servizi con:
73 1 Simone Piccardi
74 1 Simone Piccardi
<pre>
75 1 Simone Piccardi
service ido2db restart
76 1 Simone Piccardi
service icinga restart
77 1 Simone Piccardi
</pre>
78 5 Simone Piccardi
79 25 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/@. 
80 5 Simone Piccardi
81 19 Simone Piccardi
Con Wheezy un aggiornamento di PHP ha introdotto una regression che causa errori nel funzionamento dell'interfaccia web, questa può essere curata modificando il file @/usr/share/icinga-web/app/modules/Cronks/views/System/ViewProc/MetaInformationSuccessView.class.php@ modificando la riga:
82 19 Simone Piccardi
83 19 Simone Piccardi
<pre>
84 19 Simone Piccardi
$template = new CronkGridTemplateXmlParser($file);
85 19 Simone Piccardi
</pre>
86 19 Simone Piccardi
87 19 Simone Piccardi
in: 
88 1 Simone Piccardi
89 19 Simone Piccardi
<pre>
90 19 Simone Piccardi
$template = new CronkGridTemplateXmlParser($file->getRealPath());
91 19 Simone Piccardi
</pre>
92 19 Simone Piccardi
93 25 Simone Piccardi
94 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.
95 5 Simone Piccardi
96 5 Simone Piccardi
97 5 Simone Piccardi
h2. Grafici delle risorse con _PNP4Nagios_
98 22 Simone Piccardi
99 1 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 fino a Wheezy occorre eseguire il comando:
100 5 Simone Piccardi
101 1 Simone Piccardi
<pre>
102 1 Simone Piccardi
apt-get install icinga-web-pnp
103 1 Simone Piccardi
</pre>
104 5 Simone Piccardi
105 26 Simone Piccardi
che installa tutto il necessario nelle dipendenze, con Jessie la cosa non funziona a meno di non aver abilitato in precedenza i repository di backports in quanto alcuni pacchetti sono assenti dalla release ufficiale, pertanto per essere sicuri di installare tutti, si abilitino i suddetti repository e si installi tutto con:
106 1 Simone Piccardi
107 26 Simone Piccardi
<pre>
108 26 Simone Piccardi
apt-get install pnp4nagios pnp4nagios-bin pnp4nagios-web pnp4nagios-web-config-icinga
109 26 Simone Piccardi
</pre>
110 25 Simone Piccardi
111 25 Simone Piccardi
Una volta fatto questo con Wheezy vanno fatte alcune correzioni ad alcune configurazioni che sono predisposte per Nagios, occorre modificare @/etc/apache2/conf.d/pnp4nagios.conf@ correggendo le modalità di autenticazione con:
112 25 Simone Piccardi
113 1 Simone Piccardi
<pre>
114 22 Simone Piccardi
AuthName "Icinga Access"
115 22 Simone Piccardi
AuthUserFile /etc/icinga/htpasswd.users
116 22 Simone Piccardi
</pre>
117 24 Simone Piccardi
118 22 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. 
119 22 Simone Piccardi
120 25 Simone Piccardi
Con Jessie ueste correzioni non necessarie viene creata una configurazione corretta per Apache nella nuova directory @/etc/apache2/conf-available@. 
121 5 Simone Piccardi
122 25 Simone Piccardi
Occorre comunque correggere @/etc/pnp4nagios/config.php@ di nuovo per fagli usare i valori opportuni relativi ad _Icinga_, in particolare si dovranno modificare le seguenti linee:
123 5 Simone Piccardi
124 5 Simone Piccardi
<pre>
125 25 Simone Piccardi
...
126 1 Simone Piccardi
$conf['nagios_base'] = "/icinga/cgi-bin";  # solo per Wheezy, Jessie include un file con il valore corretto
127 5 Simone Piccardi
...
128 26 Simone Piccardi
$conf['livestatus_socket'] = "unix:/var/lib/icinga/rw/live"; # con Jessie questa è l'unica da cambiare
129 9 Simone Piccardi
...
130 25 Simone Piccardi
$conf['template_dirs'][] = '/usr/share/check_mk/pnp-templates'; # non più necessario con Jessie
131 5 Simone Piccardi
...
132 1 Simone Piccardi
</pre>
133 9 Simone Piccardi
134 1 Simone Piccardi
135 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. 
136 7 Simone Piccardi
137 7 Simone Piccardi
Anzitutto occorre attivare il demone @npcd@ in @/etc/default/npcd@ inserendo la riga:
138 7 Simone Piccardi
139 1 Simone Piccardi
<pre>
140 7 Simone Piccardi
# Should NPCD be started? ("yes" to enable)
141 7 Simone Piccardi
RUN="yes"
142 7 Simone Piccardi
</pre>
143 7 Simone Piccardi
144 1 Simone Piccardi
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:
145 7 Simone Piccardi
146 1 Simone Piccardi
<pre>
147 1 Simone Piccardi
process_performance_data=1
148 1 Simone Piccardi
</pre>
149 1 Simone Piccardi
150 1 Simone Piccardi
occorrerà poi abilitare il modulo inserendo in un file di configurazione (nel nostro caso @npcdmod.cfg@) nella directory @/etc/icinga/modules/@ con contenuto:
151 1 Simone Piccardi
152 7 Simone Piccardi
<pre>
153 7 Simone Piccardi
define module{
154 7 Simone Piccardi
        module_name    npcdmod
155 7 Simone Piccardi
        path           /usr/lib/pnp4nagios/npcdmod.o 
156 7 Simone Piccardi
        module_type    neb
157 7 Simone Piccardi
        args           config_file=/etc/pnp4nagios/npcd.cfg
158 7 Simone Piccardi
        }
159 7 Simone Piccardi
</pre>
160 7 Simone Piccardi
161 25 Simone Piccardi
ed occorrerà riavviare @icinga@ e @npcd@ con:
162 7 Simone Piccardi
163 25 Simone Piccardi
<pre>
164 25 Simone Piccardi
service npcd restart
165 25 Simone Piccardi
service icinga restart
166 1 Simone Piccardi
</pre>
167 1 Simone Piccardi
168 26 Simone Piccardi
Attenzione: su Jessie @systemd@ può causare problemi, infatti il restart può non essere eseguito se il primo lancio è avvenuto prima delle modifiche, trovandosi in una situazione in cui @systemctl status npcd@ riporta il servizio attivo ma il programma non gira (la cosa si verifica anche per @ido2db@). Pertanto si verifichi con @ps@ che i processi siano partiti, e si provveda nel caso a rendere esplicito il restart a quel testone di @systemd@ eseguendo in sequenza:
169 26 Simone Piccardi
170 26 Simone Piccardi
<pre>
171 26 Simone Piccardi
systemctl stop npcd
172 26 Simone Piccardi
systemctl start npcd
173 26 Simone Piccardi
</pre>
174 26 Simone Piccardi
175 26 Simone Piccardi
verificando che effettivamente alla fine il programma giri.
176 25 Simone Piccardi
177 8 Simone Piccardi
h2. Controllo con _Check_MK_
178 1 Simone Piccardi
179 1 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:
180 1 Simone Piccardi
181 8 Simone Piccardi
<pre>
182 23 Simone Piccardi
apt-get install check-mk-server check-mk-config-icinga check-mk-livestatus
183 1 Simone Piccardi
</pre>
184 9 Simone Piccardi
185 9 Simone Piccardi
dove in particolare il secondo pacchetto installa tutti i file necessari ad integrare _Check_MK_ con _Icinga_.
186 9 Simone Piccardi
187 9 Simone Piccardi
La configurazione di base prevede che si inserisca la lista delle macchine da sottoporre a controllo nel file @/etc/check_mk/main.mk@, inizialmente ad esempio con qualcosa del tipo (la configurazione è l'assegnazione di una lista in python):
188 9 Simone Piccardi
189 9 Simone Piccardi
<pre>
190 9 Simone Piccardi
# Put your host names here
191 9 Simone Piccardi
# all_hosts = [ 'localhost' ]
192 9 Simone Piccardi
all_hosts = [  'localhost', 'www.fountainpen.it', ... ]
193 9 Simone Piccardi
</pre>
194 9 Simone Piccardi
195 13 Simone Piccardi
Si tenga presente che la semplice installazione _Check_MK_ di default non comporta nessun controllo, il programma infatti si collega agli _agent_ sulle macchine indicate nel precedente file di configurazione, e raccoglie gli eventuali dati disponibili, ma questi sono normalmente utilizzati soltanto all'interno del programma stesso, se si vogliono poter inserire i controlli dentro _Icinga_ occorre richiedere al programma la generazione degli opportuni file di configurazione, il grande vantaggio di _Check_MK_ è che consente di semplificare ed automatizzare (centralizzando le configurazioni) la generazione di questi file per tutte le macchine che si gestiscono tramite di lui. 
196 9 Simone Piccardi
197 13 Simone Piccardi
La forma precedente @/etc/check_mk/main.mk@, in cui si inserisce un semplice elenco, è quella più elementare, infatti la variabile @all_hosts@ non solo consente di mantenere un elenco di macchine da controllare, ma anche di classificarle assegnando a ciascuna un numero arbitrario di "TAG" che poi possono essere riutilizzati in altre configurazioni per raggruppare le macchine. L'assegnazione dei tag è molto semplice, basta indicarli dopo il nome della macchina separati con il carattere "@|@". Pertanto una configurazione di più sofisticata della precedente, potrebbe essere:
198 1 Simone Piccardi
199 13 Simone Piccardi
<pre>
200 13 Simone Piccardi
# Put your host names here
201 13 Simone Piccardi
# all_hosts = [ 'localhost' ]
202 13 Simone Piccardi
all_hosts = [  
203 13 Simone Piccardi
   'localhost|linux|cnt', 
204 13 Simone Piccardi
   'www.fountainpen.it|phy|linux',
205 13 Simone Piccardi
    ...
206 1 Simone Piccardi
]
207 13 Simone Piccardi
</pre>
208 1 Simone Piccardi
209 13 Simone Piccardi
dove si sono aggiunti alle macchine il tag "@linux@" per indicare il sistema operativo, ed i tag "@phy@" o "@cnt@" per indicare se la macchina è una macchina fisica o un container. Questo consente ad esempio di applicare configurazioni ad hoc, ad esempio si possono stabilire controlli da ignorare per intere classi di macchine utilizzando la variabile @ignored_checks@,  con qualcosa del tipo:
210 13 Simone Piccardi
211 9 Simone Piccardi
<pre>
212 13 Simone Piccardi
ignored_checks = [
213 13 Simone Piccardi
        ( [ "mem.vmalloc" ], [ "cnt" ], ALL_HOSTS)
214 13 Simone Piccardi
]
215 1 Simone Piccardi
</pre>
216 1 Simone Piccardi
217 13 Simone Piccardi
in cui si esclude per tutti le macchine con il tag "@cnt@" il controllo sulla dimensione della memoria virtuale occupata (che non ha senso sui container fatti con OpenVZ). La sintassi richiede che si assegni la variabile ad un vettore di tuple. Il primo elemento indica il controllo da escludere (si può ottenere la lista completa si quelli supportati con @check_mk -L@), segue, opzionale, un tag (o una lista di tag) da utilizzare come filtro, inine la lista degli host da controllare (la variabile @ALL_HOSTS@ indica tutti quelli definiti in @all_hosts@).
218 13 Simone Piccardi
219 13 Simone Piccardi
Un'altra delle caratteristiche interessanti di _Check_MK_ è che non solo è possibile utilizzare il controllo eseguito direttamente tramite il suo agent, ma si può configurare direttamente da @/etc/check_mk/main.mk@ l'uso dei programmi di controllo ordinari di _Icinga_/_Nagios_. In questo caso si deve usare la variabile @legacy_checks@ ed inserire qualcosa del tipo:
220 13 Simone Piccardi
221 13 Simone Piccardi
<pre>
222 13 Simone Piccardi
legacy_checks = [
223 13 Simone Piccardi
  # On all hosts with the tag 'cnt' give a simple check
224 25 Simone Piccardi
  ( ( "check_https", "Homepage", True), [ "web" ], ALL_HOSTS ),
225 13 Simone Piccardi
  ( ( "check_ssh", "SSH", True), [ "linux" ], ALL_HOSTS ), 
226 13 Simone Piccardi
]
227 13 Simone Piccardi
</pre>
228 13 Simone Piccardi
229 13 Simone Piccardi
in cui si richiede il controllo di SSH su tutte le macchine linux, e quello della risposta del web server su tutti i container. Il formato è identico a quello di @ignored_checks@ per tutti gli argomenti successivi al primo, che in questo caso invece un'altra tupla il cui primo elemento è il nome del comando (come definito dalla direttiva @command_name@ nelle configurazioni dei @define command@ di _Icinga_/_Nagios_) da usare per il controllo seguito eventualmente anche dai parametri (separati con il carattere @!@), il secondo la stringa identificativa che verrà associata al servizio, ed il terzo un valore logico che indica se devono essere generati i meno i dati delle performance di risposta (ad uso della generazione dei grafici degli stessi). 
230 13 Simone Piccardi
231 13 Simone Piccardi
Le operazioni di controllo di _Check_MK_ vengono eseguite tramite il comando @check_mk@ che consente di gestire le configurazioni di tutte le macchine controllate con _Check_MK_, In particolare il comando consente di creare un opportuno file di configurazione per _Icinga_ (sotto @/etc/icinga/objects/check_mk/check_mk_objects.cfg@ nel caso dei pacchetti Debian). 
232 13 Simone Piccardi
233 13 Simone Piccardi
Come accennato si può visualizzare l'elenco dei controlli effettuabili con @check_mk -L@, ma ovviamente solo alcuni di essi saranno disponibili sulle macchine su cui si è installato l'agent. Per identificare quali sono i controlli disponibili occorre generare il relativo inventario, questo si fa con il comando  @check_mk -I@, eventualmente seguito dall'indirizzo della macchina che si intende controllare. Il comando invocato in questo nuovo però mostra solo quelli nuovi e li aggiunge a quelli già presenti, se si vuole ripartire da zero occorrerà invece usare @check_mk -II@ con cui vengono cancellati quelli vecchi e ricreati solo quelli presenti al momento dell'invocazione. 
234 13 Simone Piccardi
235 13 Simone Piccardi
Un secondo comando di gestione molto utile è @check_mk ---scan-parents@ che fa eseguire un al programma un @traceroute@ delle macchine messe sotto controllo, dal quale viene generata automaticamente la mappa delle dipendenze dell'una dall'altra (riusata poi per generare la gerarchia dei _parent_ anche per _Icinga_ e la relativa status map), che viene salvata automaticamente in @/etc/check_mk/conf.d/parents.mk@.
236 13 Simone Piccardi
237 13 Simone Piccardi
Una volta che si sia effettuato il riconoscimento dei servizi per poter utilizzare i dati forniti dall'_agent_ dentro _Icinga_ è necessario lanciare @check_mk -R@ con cui si esegue la rigenerazione dei file di configurazione (nel caso di _Icinga_ i pacchetti Debian indicati lo fanno in @/etc/icinga/objects/check_mk/check_mk_objects.cfg@), e per una maggior sicurezza si può anche riavviare il servizio (cosa comunque effettuata dal comando). In sostanza tutte le volte che si sono modificate le configurazioni di _Check_MK_ e si vogliono riflettere i cambiamenti su _Icinga_, si devono eseguire i comandi:
238 13 Simone Piccardi
239 13 Simone Piccardi
<pre>
240 13 Simone Piccardi
check_mk -I                 # aggiorna l'inventario
241 13 Simone Piccardi
check_mk -R                 # rigenera le configurazioni e riavvia
242 13 Simone Piccardi
service icinga restart      # repetita juvant...
243 13 Simone Piccardi
</pre>
244 13 Simone Piccardi
245 10 Simone Piccardi
Si tenga presente però che in dato che _Check_MK_ utilizza il plugin @check_icmp@ di _Nagios_ per controllare lo stato di tutti gli host configurati, se non si fa altro questi risulteranno disattivi (anche se controlli disponibili grazie all'_agent_ risulteranno a posto) in quanto detto plugin deve essere eseguito da @root@. Esso allora deve essere reso _suid_ in modo da poter funzionare correttamente anche quando invocato da _Icinga_, di nuovo questo si può fare con il comando:
246 10 Simone Piccardi
247 1 Simone Piccardi
<pre>
248 1 Simone Piccardi
dpkg-statoverride --update --add root root 4755 /usr/lib/nagios/plugins/check_icmp
249 1 Simone Piccardi
</pre>
250 12 Simone Piccardi
251 12 Simone Piccardi
che rende la modifica permanente anche nell'aggiornamento dei pacchetti.
252 12 Simone Piccardi
253 12 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:
254 12 Simone Piccardi
255 12 Simone Piccardi
<pre>
256 12 Simone Piccardi
apt-get install -t squeeze-backports check-mk-livestatus
257 12 Simone Piccardi
</pre>
258 12 Simone Piccardi
259 12 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:
260 12 Simone Piccardi
261 12 Simone Piccardi
<pre>
262 12 Simone Piccardi
define module{
263 12 Simone Piccardi
        module_name    mklivestatus
264 12 Simone Piccardi
        path           /usr/lib/check_mk/livestatus.o
265 12 Simone Piccardi
        module_type    neb
266 12 Simone Piccardi
        args           /var/lib/icinga/rw/live
267 12 Simone Piccardi
        }
268 1 Simone Piccardi
</pre>
269 12 Simone Piccardi
dove @/var/lib/icinga/rw/live@ che è il default usato da _Check_MK_.
270 9 Simone Piccardi
271 9 Simone Piccardi
272 9 Simone Piccardi
h2. Installazione dell'agent di _Check_MK_
273 9 Simone Piccardi
274 13 Simone Piccardi
Per poter utilizzare a pieno le fuzionalità di _Check_MK_ è necessario installare sulle macchine da mettere sotto controllo (compresa in genere quella su cui si è installato il server), lo script che esegue il compito di _agent_. Si tratta di un semplice script di shell che deve essere eseguito con @xinetd@, quest'ultimo però non viene installato automaticamente e deve essere esplicitamente installato, pertanto si esegua:
275 9 Simone Piccardi
276 1 Simone Piccardi
<pre>
277 17 Simone Piccardi
apt-get install -t squeeze-backports check-mk-agent xinetd
278 9 Simone Piccardi
</pre>
279 10 Simone Piccardi
280 1 Simone Piccardi
inoltre dato che l'agent installa un file di configurazione per @xinetd@ in cui il servizio è disabilitato, è necessario modificare @/etc/xinetd.d/check_mk@ impostando: 
281 1 Simone Piccardi
282 1 Simone Piccardi
<pre>
283 8 Simone Piccardi
disable        = no
284 12 Simone Piccardi
</pre>
285 1 Simone Piccardi
286 8 Simone Piccardi
ed eventualmente aggiungere ulteriori direttive di controllo per bloccare gli accessi solo ai server autorizzati; nel caso di installazione locale sul server stesso si potrà mettere il programma in ascolto solo su @localhost@ con:
287 1 Simone Piccardi
288 12 Simone Piccardi
<pre>
289 1 Simone Piccardi
bind           = 127.0.0.1
290 5 Simone Piccardi
</pre>
291 12 Simone Piccardi
292 13 Simone Piccardi
mentre in caso di connessione da parte di un server remoto, oltre a proteggerle adeguatamente con un firewall, sarà opportuno indicare una restrizione di accesso con:
293 5 Simone Piccardi
294 12 Simone Piccardi
<pre>
295 5 Simone Piccardi
only_from      = IP.DEL.SERVER.REMOTO
296 1 Simone Piccardi
</pre>
297 1 Simone Piccardi
298 16 Simone Piccardi
qualora si voglia usare un nome a dominio al posto di un indirizzo numerico si tenga presente che questo è possibile solo alla condizione che questo corrisponda anche alla risoluzione inversa del relativo IP.
299 16 Simone Piccardi
300 16 Simone Piccardi
Ci si ricordi sempre di riavviare il servizio con:
301 5 Simone Piccardi
302 1 Simone Piccardi
<pre>
303 5 Simone Piccardi
service xinetd restart
304 5 Simone Piccardi
</pre>
305 8 Simone Piccardi
306 11 Simone Piccardi
Si tenga presente che se si installa l'agent sulla macchina stessa su cui gira _Icinga_, la configurazione di default di quest'ultimo già prevede un controllo eseguito su @localhost@ definito nel file @/etc/icinga/objects/localhost_icinga.cfg@, che andrà a confliggere con la configurazione creata da @check_mk -R@, pertanto si abbia cura di rimuovere detto file o di usare con _Check_MK_ un nome diverso per indicare il localhost (ad esempio "127.0.0.1"). 
307 11 Simone Piccardi
308 11 Simone Piccardi
h2. Uso di _Check_MK_ come console di controllo
309 11 Simone Piccardi
310 11 Simone Piccardi
Oltre alle funzionalità di controllo centralizzato tramite il _server_, _Check_MK_ fornisce anche una console di gestione che si può installare con il pacchetto @check-mk-multisite@, il programma usa @mod_python@ per cui oltre alla installazione sarà necessario anche riavviare apache:
311 11 Simone Piccardi
312 11 Simone Piccardi
<pre>
313 11 Simone Piccardi
apt-get install check-mk-multisite
314 11 Simone Piccardi
service apache2 restart
315 11 Simone Piccardi
</pre> 
316 11 Simone Piccardi
317 11 Simone Piccardi
Inoltre siccome il programma deve creare la directory @/var/lib/check_mk/web/icingaadmin/@ ed assegnarne il gruppo a @nagios@, occorre che l'utente @www-data@ faccia parte di detto gruppo, per questo sarà necessario eseguire il comando:
318 11 Simone Piccardi
319 11 Simone Piccardi
<pre>
320 11 Simone Piccardi
adduser www-data nagios
321 11 Simone Piccardi
</pre>
322 11 Simone Piccardi
323 1 Simone Piccardi
ed a questo punto si potrà accedere all'interfaccia Web di _Check_MK_ all'indirizzo @http://icinga.mioindirizzo.it/check_mk/@.
324 20 Simone Piccardi
325 20 Simone Piccardi
h2. Uso di SNMP con @check_mk@
326 20 Simone Piccardi
327 20 Simone Piccardi
Per poter utilizzare SNMP con @check_mk@ occorre installare alcuni pacchetti di supporto, in quanto le interrogazioni vengono fatte usando i programmi @snmpwalk@ o @snmpbulkwalk@, inoltre per poter usare i nomi degli OID occorre anche installare i relativi file di definizione, in sostanza si esegua:
328 20 Simone Piccardi
329 20 Simone Piccardi
<pre>
330 20 Simone Piccardi
apt-get install snmp snmp-mibs-downloader
331 20 Simone Piccardi
</pre>
332 20 Simone Piccardi
333 20 Simone Piccardi
inoltre per poter usare i nomi si deve anche modificare @/etc/snmp/snmp.conf@ commentando la riga:
334 20 Simone Piccardi
335 20 Simone Piccardi
<pre>
336 20 Simone Piccardi
#mibs :
337 20 Simone Piccardi
</pre>
338 20 Simone Piccardi
339 20 Simone Piccardi
Per poter utilizzare i dati occorre anzitutto inserire nella definizione degli @all_host@ un riferimento con il tag @snmp@, ad esempio:
340 20 Simone Piccardi
341 20 Simone Piccardi
<pre>
342 20 Simone Piccardi
all_hosts = [
343 20 Simone Piccardi
    ...,
344 20 Simone Piccardi
    'switchL3|snmp',
345 20 Simone Piccardi
    ...,
346 20 Simone Piccardi
</pre>
347 20 Simone Piccardi
348 20 Simone Piccardi
ed a questo punto si potrà usare @check_mk -I@ per ottenere un inventario.