<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mia mamma usa Linux! &#187; Monitoraggio</title>
	<atom:link href="http://www.miamammausalinux.org/tag/monitoraggio/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.miamammausalinux.org</link>
	<description>Perché niente è impossibile da capire... Se lo spieghi bene !</description>
	<lastBuildDate>Mon, 02 Jan 2012 11:31:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Un Nagios parlante con Festival !</title>
		<link>http://www.miamammausalinux.org/2009/02/un-nagios-parlante-con-festival/</link>
		<comments>http://www.miamammausalinux.org/2009/02/un-nagios-parlante-con-festival/#comments</comments>
		<pubDate>Wed, 11 Feb 2009 10:06:22 +0000</pubDate>
		<dc:creator>Raoul Scarazzini</dc:creator>
				<category><![CDATA[Festival]]></category>
		<category><![CDATA[Nagios]]></category>
		<category><![CDATA[Postfix]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Monitoraggio]]></category>
		<category><![CDATA[Monitoraggio vocale]]></category>

		<guid isPermaLink="false">http://www.miamammausalinux.org/?p=372</guid>
		<description><![CDATA[&#160;&#160;&#160;&#160; Nagios è universalmente considerato il tool di monitoraggio opensource numero uno sulla piazza. La sua duttilità lo rende uno strumento indispensabile per tutti gli amministratori di sistema che si trovano a controllare numeri elevati di macchine e che necessitano di notifiche tempestive a seguito di malfunzionamenti. Generalmente le notifiche dei guasti avvengono via mail [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.miamammausalinux.org/wp-content/uploads/2009/01/nagios.png" alt="nagios" title="nagios" width="100" class="alignnone size-full wp-image-174" />&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://www.miamammausalinux.org/wp-content/uploads/2009/02/festival.png" alt="festival" title="festival" width="100" height="65" class="alignnone size-full wp-image-383" /></p>
<p>Nagios è universalmente considerato il tool di monitoraggio opensource numero uno sulla piazza. La sua duttilità lo rende uno strumento indispensabile per tutti gli amministratori di sistema che si trovano a controllare numeri elevati di macchine e che necessitano di notifiche tempestive a seguito di malfunzionamenti.<br />
Generalmente le notifiche dei guasti avvengono via mail o via sms, ma possono esserci casi in cui questi tipi di notifiche non sortiscano l&#8217;effetto desiderato. La soluzione presentata in questo articolo prevede che Nagios attraverso il software opensource di <a href="http://it.wikipedia.org/wiki/Text_to_speech">sintesi vocale</a> Festival comunichi a voce quali sono i malfunzionamenti in corso.</p>
<p><strong>Installazione di Festival</strong></p>
<p>Il sistema di riferimento su cui verranno effettuate le prove è Debian Etch. Partiremo dal presupposto che sul sistema utilizzato vi sia una scheda audio correttamente configurata.<br />
Festival è disponibile nei <em>repository</em> ufficiali della distribuzione ed è pertanto installabile attraverso <em>apt-get</em> :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ apt-get install festival festvox-italp16k festvox-itapc16k</pre></div></div>

<p>I tre pacchetti installati contengono il programma Festival e le voci italiane (maschile e femminile) da esso utilizzabili.<br />
Per verificare il corretto funzionamento del software (e di conseguenza della scheda audio) è sufficiente lanciare il seguente comando :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ echo &quot;Ciao mondo&quot; | festival --tts --language italian</pre></div></div>

<p>Se dagli altoparlanti si sente una voce (un poco metallica per la verità, ma comunque intonata) che recita la frase &#8220;Ciao mondo&#8221; allora Festival è perfettamente funzionante e si può procedere con la configurazione di Nagios.</p>
<p><strong>Installazione di Nagios</strong></p>
<p>Anche Nagios è presente nei <em>repository</em> della distribuzione <em>Etch</em> ed è installabile quindi con il consueto comando <em>apt-get</em> :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ apt-get install nagios2 nagios-plugins nagios-images</pre></div></div>

<p>L&#8217;installazione si occupa di creare una configurazione base che comprende i controlli relativi alla macchina locale ed al gateway utilizzato da questa. Per consultare le informazioni relative ai controlli è possibile utilizzare l&#8217;interfaccia web che Nagios rende disponibile all&#8217;indirizzo <a href="http://localhost/nagios2">http://localhost/nagios2</a>.<br />
Questa interfaccia però richiede un&#8217;autenticazione. All&#8217;interno della configurazione base creata dal sistema è stato definito un utente denominato <em>nagiosadmin</em> che ha i privilegi di accesso ai controlli di default definiti. A questo utente è quindi sufficiente assegnare una password :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">htpasswd -c /etc/nagios2/htpasswd.users nagiosadmin
New password: 
Re-type new password: 
Adding password for user nagiosadmin</pre></div></div>

<p>attraverso la quale sarà possibile accedere all&#8217;interfaccia, che non dovrebbe scostarsi troppo da quella in Figura 1.</p>
<div id="attachment_378" class="wp-caption alignnone" style="width: 310px"><a href="http://www.miamammausalinux.org/wp-content/uploads/2009/02/nagios-festival_figura1.png"><img src="http://www.miamammausalinux.org/wp-content/uploads/2009/02/nagios-festival_figura1-300x137.png" alt="Figura 1" title="nagios-festival_figura1" width="300" height="137" class="size-medium wp-image-378" /></a><p class="wp-caption-text">Figura 1</p></div>
<p><strong>Iterazione Nagios &#8211; Festival</strong></p>
<p>Il comportamento di Nagios a fronte di controlli, azioni e notifiche è sempre lo stesso, lanciare uno script.<br />
Pertanto il primo passo sarà quello di creare uno script che possa essere utilizzato da Nagios per notificare i malfunzionamenti in una forma interpretabile da Festival.<br />
La filosofia utilizzata in questo senso è la seguente : a fronte di un <em>service</em> o <em>host</em> in stato <em>CRITICAL</em>, verrà creato un file di testo contenente il messaggio che Festival dovrà leggere.<br />
Tale script risiederà nella cartella dei plugin di Nagios, e verrà nominato <em>check_festival_parse</em> :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ vi /usr/lib/nagios/plugins/check_festival_parse</pre></div></div>

<p>Lo script sarà così definito :</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># RaSca (rasca@miamammausalinux.org) - 2009/02/04 :</span>
<span style="color: #666666; font-style: italic;"># Script per l'interpretazione delle notifiche Nagios e l'eventuale creazione</span>
<span style="color: #666666; font-style: italic;"># (o cancellazione) dei file di testo contenente i messaggi.</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Primo parametro : il tipo di notifica (host o servizio)</span>
<span style="color: #007800;">tipo</span>=<span style="color: #007800;">$1</span>
<span style="color: #666666; font-style: italic;"># Secondo parametro : stato dell'host/servizio</span>
<span style="color: #007800;">stato</span>=<span style="color: #007800;">$2</span>
<span style="color: #666666; font-style: italic;"># Terzo parametro : Nome dell'host/servizio</span>
<span style="color: #007800;">nome</span>=<span style="color: #007800;">$3</span>
<span style="color: #666666; font-style: italic;"># Path dove depositare i file di testo contenenti le notifiche</span>
<span style="color: #007800;">file_path</span>=<span style="color: #ff0000;">&quot;/var/log/nagios2/festival&quot;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">case</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$tipo</span>&quot;</span> <span style="color: #000000; font-weight: bold;">in</span>
 host<span style="color: #7a0874; font-weight: bold;">&#41;</span>
  <span style="color: #007800;">messaggio</span>=<span style="color: #ff0000;">&quot;ATTENZIONE. ATTENZIONE. L'host <span style="color: #007800;">$nome</span> e' in stato <span style="color: #007800;">$stato</span>&quot;</span>
  <span style="color: #000000; font-weight: bold;">;;</span>
 service<span style="color: #7a0874; font-weight: bold;">&#41;</span>
  <span style="color: #007800;">messaggio</span>=<span style="color: #ff0000;">&quot;ATTENZIONE. ATTENZIONE. Il servizio <span style="color: #007800;">$nome</span> e' in stato <span style="color: #007800;">$stato</span>&quot;</span>
  <span style="color: #000000; font-weight: bold;">;;</span>
 <span style="color: #000000; font-weight: bold;">*</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
  <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Errore. Impossibile interpretare i parametri di input.&quot;</span>
  <span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">1</span>
  <span style="color: #000000; font-weight: bold;">;;</span>
<span style="color: #000000; font-weight: bold;">esac</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$stato</span>&quot;</span> == <span style="color: #ff0000;">&quot;CRITICAL&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>
 <span style="color: #000000; font-weight: bold;">then</span>
  <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$messaggio</span>&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #007800;">$file_path</span><span style="color: #000000; font-weight: bold;">/</span>festival_<span style="color: #007800;">$tipo_</span><span style="color: #007800;">$nome</span>
 <span style="color: #000000; font-weight: bold;">else</span>
  <span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-f</span> <span style="color: #007800;">$file_path</span><span style="color: #000000; font-weight: bold;">/</span>festival_<span style="color: #007800;">$tipo_</span><span style="color: #007800;">$nome</span>
<span style="color: #000000; font-weight: bold;">fi</span></pre></div></div>

<p>I commenti all&#8217;interno sono autoesplicativi, serve solo aggiungere che per funzionare correttamente lo script ha bisogno di tre parametri che sono il <em>tipo</em> di notifica (relativa ad un <em>service</em> o un <em>host</em>), lo stato del servizio o dell&#8217;host ed il nome di quest&#8217;ultimo.<br />
Viene inoltre definita attraverso la variabile <em>file_path</em> la posizione dei file di testo contenenti le notifiche. Nostro caso, per coerenza, la scelta è quella di creare una directory denominata <em>festival</em> nella directory principale dei log di nagios, <em>/var/log/nagios2/</em>.<br />
Per completare questa fase del progetto è necessario settare i permessi di esecuzione dello script, creare la cartella che ospiterà i file di testo ed assegnare questa all&#8217;utente nagios in modo che questo, attraverso il demone, possa scriverci :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ chmod +x /usr/lib/nagios/plugins/check_festival_parse
$ mkdir /var/log/nagios2/festival
$ chown nagios /var/log/nagios2/festival</pre></div></div>

<p>Completata la definizione delle notifiche è necessario configurare l&#8217;interpretazione delle stesse da parte del sistema. Verrà definito quindi uno script che ciclicamente controllerà l&#8217;esistenza di file all&#8217;interno della cartella <em>/var/log/nagios2/festival</em>.<br />
Il file si chiamerà semplicemente <em>check_festival</em> e risiederà sempre nella cartella dei plugin di Nagios :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ vi /usr/lib/nagios/plugins/check_festival</pre></div></div>

<p>e questo sarà il contenuto :</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># RaSca (rasca@miamammausalinux.org) - 2009/02/04 :</span>
<span style="color: #666666; font-style: italic;"># Script che legge via TTS le eventuali notifiche presenti nei</span>
<span style="color: #666666; font-style: italic;"># file in $file_path con cicli di 4 volte a distanza di 10 secondi</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Path dove leggere i file di testo contenenti le notifiche</span>
<span style="color: #007800;">file_path</span>=<span style="color: #ff0000;">&quot;/var/log/nagios2/festival/&quot;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">for</span> i <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">seq</span> <span style="color: #000000;">1</span> <span style="color: #000000;">4</span><span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #000000; font-weight: bold;">do</span>
 <span style="color: #000000; font-weight: bold;">for</span> j <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">find</span> <span style="color: #007800;">$file_path</span> <span style="color: #660033;">-type</span> f<span style="color: #000000; font-weight: bold;">`</span>
  <span style="color: #000000; font-weight: bold;">do</span>
   <span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #007800;">$j</span> <span style="color: #000000; font-weight: bold;">|</span> festival <span style="color: #660033;">--tts</span> <span style="color: #660033;">--language</span> italian
  <span style="color: #000000; font-weight: bold;">done</span>
 <span style="color: #c20cb9; font-weight: bold;">sleep</span> 10s
<span style="color: #000000; font-weight: bold;">done</span></pre></div></div>

<p>Lo script definisce un ciclo che per quattro volte, a distanza di dieci secondi, controlla l&#8217;elenco dei file presenti nella directory <em>/var/log/nagios2/festival/</em> e legge il contenuto di ciascuno di questi.<br />
Anche questo script necessita dei permessi di esecuzione :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">chmod +x /usr/lib/nagios/plugins/check_festival</pre></div></div>

<p>A completamento di questa fase del progetto è necessario configurare Nagios affinché vengano definite le notifiche. Tutte le configurazioni di Nagios sono presenti nella cartella <em>/etc/nagios2/conf.d/</em>. All&#8217;avvio il demone <em>nagios</em> controlla tutti i file contenuti in questo <em>path</em> e ne ricava la propria configurazione.<br />
Creando quindi un nuovo file all&#8217;interno di quest&#8217;area :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ vi /etc/nagios2/conf.d/commands_festival</pre></div></div>

<p>Si potranno definire due nuovi comandi chiamati <em>host-notify-by-festival</em> e <em>notify-by-festival</em> che lanceranno lo script <em>check_festival_parse</em> con i parametri relativi :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">define command{
        command_name    host-notify-by-festival
        command_line    /usr/lib/nagios/plugins/check_festival_parse host $HOSTSTATE$ $HOSTNAME$
}
&nbsp;
define command{
        command_name    notify-by-festival
        command_line    /usr/lib/nagios/plugins/check_festival_parse service $SERVICESTATE$ $SERVICEDESC$
}</pre></div></div>

<p>Prima di caricare nuovamente la configurazione di Nagios è necessario associare i nuovi comandi alle notifiche dei contatti. Tali informazioni sono contenute nel file <em>/etc/nagios2/conf.d/contacts_nagios2.cfg</em>, all&#8217;interno del quale sono presenti le seguenti righe :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">        service_notification_commands   notify-by-email
        host_notification_commands      host-notify-by-email</pre></div></div>

<p>che andranno modificate aggiungendo i comandi sopra definiti :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">        service_notification_commands   notify-by-email,notify-by-festival
        host_notification_commands      host-notify-by-email, host-notify-by-festival</pre></div></div>

<p>Nagios è quindi pronto a caricare nuovamente la configurazione :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ /etc/init.d/nagios2 reload
Reloading nagios2 monitoring daemon configuration files: nagios2.</pre></div></div>

<p>L&#8217;ultima operazione per il completamento della configurazione del sistema riguarda la definizione all&#8217;interno dello schedulatore <em>cron</em> di sistema dell&#8217;esecuzione dello script di lettura del contenuto della cartella delle notifiche. In questo caso la definizione è relativa ad ogni minuto, ma è possibile modificarla in base alle proprie necessità :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;"># Crontab per lettura messaggi Nagios via festival ogni minuto
* *     * * *   root    /usr/lib/nagios/plugins/check_festival</pre></div></div>

<p><strong>Test di funzionamento</strong></p>
<p>Per effettuare dei test di funzionamento è necessario configurare dei controlli associati ad un host di test. In questo caso la scelta è caduta su di un host di rete denominato <em>test-server</em> all&#8217;interno del quale gira un servizio HTTP (un webserver apache).<br />
L&#8217;host verrà definito nel file <em>/etc/nagios2/conf.d/test_hosts.cfg</em> :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">define host {
        host_name   test-server
        alias       Test server
        address     10.175.88.191
        use         generic-host
        }</pre></div></div>

<p>Mentre i servizi ad esso associati verranno definiti nel file <em>/etc/nagios2/conf.d/test_services.cfg</em> :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">define service {
        host				test-server
        service_description             HTTP
 	check_command                   check_http
        use                             generic-service
	notification_interval           0
}</pre></div></div>

<p>Chiaramente per far assimilare le modifiche a Nagios è necessario effettuare il <em>reload</em> del servizio :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ /etc/init.d/nagios2 reload
Reloading nagios2 monitoring daemon configuration files: nagios2.</pre></div></div>

<p>Una volta che l&#8217;host <em>test-server</em> ed il servizio <em>HTTP</em> appariranno nel resoconto web si potranno simulare i malfunzionamenti per i quali ci si aspetta che Nagios parli.<br />
Ad esempio, sospendendo il servizio <em>HTTP</em> sul server di test, una volta che Nagios avrà effettuato i quattro tentativi, definiti <em>Attempt</em>, la notifica verrà inviata dal sistema attraverso il comando <em>notify-by-festival</em> che di conseguenza creerà un file di testo nominato &#8220;festival_service_HTTP&#8221; contenente il testo &#8220;Attenzione. Attenzione. Il servizio HTTP e&#8217; in stato CRITICAL&#8221;.<br />
Quanto effettuato dal sistema è visibile dal log di Nagios, <em>/var/log/nagios2/nagios.log</em> :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">[1233758032] SERVICE ALERT: test-server;HTTP;CRITICAL;SOFT;1;CRITICAL - Socket timeout after 10 seconds
[1233758092] SERVICE ALERT: test-server;HTTP;CRITICAL;SOFT;2;CRITICAL - Socket timeout after 10 seconds
[1233758152] SERVICE ALERT: test-server;HTTP;CRITICAL;SOFT;3;CRITICAL - Socket timeout after 10 seconds
[1233758212] SERVICE ALERT: test-server;HTTP;CRITICAL;HARD;4;CRITICAL - Socket timeout after 10 seconds
[1233758212] SERVICE NOTIFICATION: root;test-server;HTTP;CRITICAL;notify-by-festival;CRITICAL - Socket timeout after 10 seconds</pre></div></div>

<p>Tale file sarà letto dallo script definito nel crontab di sistema che darà il via alle letture attraverso Festival.<br />
In conclusione, Nagios dovrebbe parlare.<br />
Una volta ripristinato il servizio <em>HTTP</em> il file verrà automaticamente rimosso sempre dallo script <em>notify-by-festival</em> e di conseguenza Nagios verrà zittito (con soddisfazione).</p>
<p><strong>Conclusioni</strong></p>
<p>E&#8217; evidente che tutto l&#8217;impianto può essere personalizzato in modo che l&#8217;integrazione con il sistema di controllo avvenga nella maniera più consona possibile. Le potenzialità di una simile implementazione di Nagios sono moltissime ed applicabili ad uno spettro di situazioni altrettanto numerose.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.miamammausalinux.org/2009/02/un-nagios-parlante-con-festival/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Nagios, una rete sotto controllo &#8211; Parte 2 : NRPE : Nagios Remote Plugin Executor</title>
		<link>http://www.miamammausalinux.org/2005/06/nagios-una-rete-sotto-controllo-parte-2/</link>
		<comments>http://www.miamammausalinux.org/2005/06/nagios-una-rete-sotto-controllo-parte-2/#comments</comments>
		<pubDate>Wed, 01 Jun 2005 11:30:58 +0000</pubDate>
		<dc:creator>Raoul Scarazzini</dc:creator>
				<category><![CDATA[Nagios]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Monitoraggio]]></category>

		<guid isPermaLink="false">http://www.miamammausalinux.org/?p=99</guid>
		<description><![CDATA[Nello scorso articolo abbiamo visto come configurare ed installare NAGIOS affinché monitori servizi ed emetta notifiche via e-mail in caso di malfunzionamenti. Mentre però i servizi standard sono controllabili da remoto (tramite l&#8217;interrogazione di porte TCP), non è possibile ad esempio controllare la capienza del disco di una macchina remota (o i processi in esecuzione [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.miamammausalinux.org/wp-content/uploads/2009/01/nagios.png" alt="nagios" title="nagios" width="100" class="alignnone size-full wp-image-174" /></p>
<p>Nello scorso articolo abbiamo visto come configurare ed installare NAGIOS affinché monitori servizi ed emetta notifiche via e-mail in caso di malfunzionamenti. Mentre però i servizi standard sono controllabili da remoto (tramite l&#8217;interrogazione di porte TCP), non è possibile ad esempio controllare la capienza del disco di una macchina remota (o i processi in esecuzione su questa o il numero degli utenti loggati) senza lanciare dei processi locali.<br />
Per risolvere questo problema, esiste un programma “extra” creato al di fuori del pacchetto NAGIOS denominato NRPE : Nagios Remote Plugin Executor.</p>
<p><strong>Concetto e requisiti di NRPE</strong></p>
<p>NRPE presenta due componenti, una associata a NAGIOS e cioè il plugin <em>check_nrpe</em>, l&#8217;altra associata alla macchina sulla quale si vuole effettuare il controllo e cioè il demone NRPE.<br />
La logica di funzionamento è la seguente : si ha la necessità di lanciare un plugin remoto, viene quindi effettuata la chiamata al plugin locale <em>check_nrpe</em> al quale andrà passato come parametro il nome del plugin remoto da eseguire. “check_nrpe” si collegherà alla macchina remota dove su una determinata porta (generalmente la 5666), sarà in ascolto il demone NRPE che riceverà la richiesta, eseguirà il plugin locale e restituirà l&#8217;esito del comando.</p>
<p><strong>Installazione di NRPE</strong></p>
<p>Prima di installare NRPE sulla macchina dove lasceremo il demone in attesa della richiesta di esecuzione di un qualsiasi plugin, sarà necessario installare il pacchetto nagios-plugins (Reperibile all&#8217;indirizzo <a href="http://prdownloads.sourceforge.net/nagiosplug/nagios-plugins-1.3.1.tar.gz?download">http://prdownloads.sourceforge.net/nagiosplug/nagios-plugins-1.3.1.tar.gz?download</a>), procedendo nella consueta maniera :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ cd /usr/src
$ tar -xzvf nagios-plugins-1.3.1.tar.gz
$ cd nagios-plugins-1.3.1 
$ ./configure  --prefix=/usr/local/nagios --with-nagios-user=nagios --with-nagios-group=nagios
$ make all
$ make install</pre></div></div>

<p>Questo perché il demone in se non fa nient&#8217;altro che eseguire degli script locali, che non sono presenti nel pacchetto NRPE (La cui grandezza supera di poco i 50 Kilobyte !).<br />
Una volta completata l&#8217;installazione di nagios-plugins, troveremo nella directory <em>/usr/local/nagios/libexec</em> tutti i file eseguibili relativi ai plugin di NAGIOS.<br />
A questo punto possiamo procedere con l&#8217;installazione vera e propria di NRPE.<br />
Entrambe le componenti (il plugin ed il demone) si trovano nel pacchetto di installazione reperibile a questo indirizzo : <a href="http://prdownloads.sourceforge.net/nagios/nrpe-2.0.tar.gz?download">http://prdownloads.sourceforge.net/nagios/nrpe-2.0.tar.gz?download</a><br />
Il pacchetto si configura ed installa come segue :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ cd /usr/src
$ tar -xzvf nrpe-2.0.tar.gz
$ cd nrpe-2.0
$ ./configure
$ make all</pre></div></div>

<p>Alla fine del processo di “make” si noterà il seguente messaggio :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">*** Compile finished ***
&nbsp;
If the NRPE daemon and client compiled without any errors, you
can continue with installation.  The NRPE daemon and client
binaries are located in the src/ subdirectory.
&nbsp;
 ** If this is your monitoring host **
&nbsp;
     - Copy the check_nrpe client to the directory that
       contains your Nagios plugins.
     - Create a command definition in your Nagios config
       file for the NRPE client.  See the README file for
       more info on doing this.
&nbsp;
 ** If this host will be running the NRPE daemon **
&nbsp;
     - Copy the nrpe daemon to /usr/sbin, /usr/local/nagios
       or wherever you feel it fits best.
     - Copy the sample nrpe.cfg config file to /etc,
       /usr/local/nagios or wherever you feel it fits best.
     - Modify the /etc/services file and configure NRPE to
       run under inetd, xinetd, or as a standalone daemon.
       See the README file for more info on doing this.</pre></div></div>

<p>Da qui in poi non ci sarà nulla di meglio che seguire le istruzioni appena lette.<br />
Sarà necessario copiare sulla macchina dove abbiamo installato NAGIOS, il file <em>/usr/src/nrpe-2.0/src/check_nrpe</em> nella cartella dei plugin <em>/usr/local/nagios/libexec</em> (via rete o trasferendo il file su un dischetto) e sempre sul nostro server di controllo, aggiungere il riferimento a <em>check_nrpe</em> nel file dei comandi, aggiungendo cioè al file <em>/usr/local/nagios/etc/checkcommands.cfg</em> le seguenti righe :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;"># 'check_nrpe' command definition
define command{
        command_name    check_nrpe
        command_line    /usr/local/nagios/libexec/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
        }</pre></div></div>

<p>in questo modo, come vedremo in seguito, potremo configurare un servizio per NAGIOS che faccia riferimento al comando <em>check_nrpe</em>. NAGIOS a questo punto non ha bisogno più di nulla, ciò che rimane da fare, riguarda solo la macchina che NAGIOS interrogherà, il server remoto.<br />
Sulla macchina dove lasceremo in ascolto il demone dovremo creare la directory <em>/usr/local/nagios/bin</em> nella quale copieremo il file eseguibile del demone generato dalla compilazione di NRPE :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ mkdir /usr/local/nagios/bin
$ cp /usr/src/nrpe-2.0/src/nrpe /usr/local/nagios/bin/</pre></div></div>

<p>Creeremo poi la directory che conterrà la configurazione del demone /usr/local/nagios/etc e ci copieremo il file di esempio <em>/usr/src/nrpe-2.0/src/nrpe.cfg</em> :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ mkdir /usr/local/nagios/etc
$ cp /usr/src/nrpe-2.0/nrpe.cfg /usr/local/nagios/etc/</pre></div></div>

<p>Come ultima cosa, copieremo l&#8217;init-script (ossia il file di avvio del demone), nella cartella di sistema <em>/etc/init.d</em> in modo da poter automatizzare all&#8217;avvio l&#8217;esecuzione del demone NRPE e gli daremo permesso di esecuzione :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ cp /usr/src/nrpe-2.0/init-script /etc/init.d/nrpe
$ chmod 755 /etc/init.d/nrpe</pre></div></div>

<p>A questo punto potremo procedere con la configurazione del demone NRPE andando ad editare il file <em>/usr/local/nagios/etc/nrpe.cfg</em> , tra le opzioni indicate, le più importanti sono le seguenti :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">server_port=5666</pre></div></div>

<p>Indica la porta in ascolto e salvo esigenze specifiche è bene lasciare con questo valore,</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">allowed_hosts=127.0.0.1</pre></div></div>

<p>Indica l&#8217;elenco degli host (separati da virgole) abilitati alle richieste. Ad esempio se il server NAGIOS avrà indirizzo 192.168.0.1, l&#8217;opzione dovrà essere modificata in <em>allowed_hosts=127.0.0.1,192.168.0.1</em></p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">nrpe_user=nagios
nrpe_group=nagios</pre></div></div>

<p>Indicano rispettivamente l&#8217;utente ed il gruppo che andranno ad eseguire il processo.<br />
Infine, le opzioni più importanti riguardano i comandi da eseguire :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">command[check_disk1]=/usr/local/nagios/libexec/check_disk -w 20 -c 10 -p /dev/hda1</pre></div></div>

<p>Ad esempio il comando appena scritto, denominato <em>check_disk1</em>, tramite il plugin <em>check_disk</em> consentirà di ricevere informazioni sullo stato del disco <em>/dev/hda1</em>.<br />
A questo punto, non rimane altro da fare che lanciare il demone NRPE con questo comando :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ /etc/init.d/nrpe start
Starting nrpe:                                             [  OK  ]</pre></div></div>

<p>Se il comando non restituisce errori il demone è stato avviato correttamente.<br />
L&#8217;ultima cosa da fare è quindi quella di configurare un servizio in NAGIOS che tramite il comando <em>check_nrpe</em> lanci il comando <em>check_disk1</em> su questa macchina (che chiameremo remote_pc). Per fare ciò, immetteremo le informazioni relative all&#8217;host da controllare nel file <em>/usr/local/nagios/etc/hosts.cfg</em> :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;"># '' host definition
define host{
        use                     generic-host    ; Name of host template to use
        host_name               remote_pc
        alias                   Server remoto
        address                 192.168.1.2
        check_command           check-host-alive
        max_check_attempts      10
        notification_interval   120
        notification_period     24x7
        notification_options    d,u,r
        }</pre></div></div>

<p>Includeremo questo host nel gruppo host “lan-servers” modificando nel file <em>/usr/local/nagios/etc/hostgroups.cfg</em> le righe relative :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;"># 'lan-servers' host group definition
define hostgroup{
	hostgroup_name	lan-servers
	alias			Gruppo gestione LAN
	contact_groups	lan-admins
	members		local_pc,remote_pc
	}</pre></div></div>

<p>Ed infine configureremo il servizio per il nuovo host editando il file <em>/usr/local/nagios/etc/services.cfg</em> aggiungendo questa definizione :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;"># Service definition
define service{
	use                             generic-service         ; Name of service template to use
&nbsp;
	host_name			remote_pc
	service_description	DISK /
	is_volatile			0
	check_period		24x7
	max_check_attempts	3
	normal_check_interval	5
	retry_check_interval	1
	contact_groups		lan-admins
	notification_interval	120
	notification_period	24x7
	notification_options	w,u,c,r
	check_command		check_nrpe!check_disk1
	}</pre></div></div>

<p>Come si può notare, a differenza delle precedenti definizioni, all&#8217;opzione <em>check_command</em> viene passato il comando <em>check_nrpe</em> che ha come parametro il nome del plugin remoto da eseguire, definito precedentemente come <em>check_disk1</em> sulla macchina remota all&#8217;interno del file <em>/usr/local/nagios/etc/nrpe.cfg</em>.<br />
Terminata questa fase di configurazione è sufficiente ricaricare NAGIOS affinché rilevi le modifiche che abbiamo effettuato in questo modo :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ /etc/init.d/nagios reload
Running configuration check...done
Reloading nagios configuration...done</pre></div></div>

<p>Se il comando non restituisce errori, dovremo trovarci di fronte ad una schermata simile a quella di Figura 1, in cui rispetto a prima è stata aggiunta la riga relativa al controllo del disco della macchina remota a confermarci che tutto il nostro lavoro ha avuto buon esito.</p>
<div id="attachment_102" class="wp-caption alignnone" style="width: 310px"><a href="http://www.miamammausalinux.org/wp-content/uploads/2005/06/nagios_articolo_2-10-figura1.png"><img src="http://www.miamammausalinux.org/wp-content/uploads/2005/06/nagios_articolo_2-10-figura1-300x211.png" alt="Figura 1" title="nagios_articolo_2-10-figura1" width="300" height="211" class="size-medium wp-image-102" /></a><p class="wp-caption-text">Figura 1</p></div>
<p><strong>Conclusioni</strong></p>
<p>Più si sperimenterà l&#8217;utilizzo di questo programma più si capirà come sia essenziale il suo impiego all&#8217;interno di un sistema informativo, dal più semplice al più esteso.<br />
Moltissime sono le potenzialità di NAGIOS e moltissimi i plugin non ufficiali per il controllo delle più svariate funzioni, si trovano tutti nel sito ufficiale di NAGIOS : <a href="http://www.nagios.org">http://www.nagios.org</a>.</p>
<p><strong>La serie comprende questi articoli :</strong></p>
<p>Nagios, una rete sotto controllo <a href="http://www.miamammausalinux.org/2005/05/nagios-una-rete-sotto-controllo-parte-1/">Parte 1 : Installazione e configurazione</a><br />
Nagios, una rete sotto controllo <a href="http://www.miamammausalinux.org/2005/06/nagios-una-rete-sotto-controllo-parte-2/">Parte 2 : NRPE : Nagios Remote Plugin Executor</a></p>
<p><strong>Nota :</strong></p>
<p><em>Questo articolo è originariamente apparso nell&#8217;edizione italiana di Linux Journal nel Giugno 2005.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.miamammausalinux.org/2005/06/nagios-una-rete-sotto-controllo-parte-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Nagios, una rete sotto controllo &#8211; Parte 1 : Installazione e configurazione</title>
		<link>http://www.miamammausalinux.org/2005/05/nagios-una-rete-sotto-controllo-parte-1-installazione-e-configurazione/</link>
		<comments>http://www.miamammausalinux.org/2005/05/nagios-una-rete-sotto-controllo-parte-1-installazione-e-configurazione/#comments</comments>
		<pubDate>Sun, 01 May 2005 11:30:25 +0000</pubDate>
		<dc:creator>Raoul Scarazzini</dc:creator>
				<category><![CDATA[Nagios]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Monitoraggio]]></category>

		<guid isPermaLink="false">http://www.miamammausalinux.org/?p=89</guid>
		<description><![CDATA[Tutto quello di cui un&#8217;amministratore di sistema necessita per svolgere in maniera ottimale il proprio lavoro è il controllo di tutte le risorse che deve gestire. All&#8217;interno però di situazioni complesse, di sistemi estesi in cui operano decine di PC ciascuno con una propria specifica e critica funzione, ottenere il controllo totale risulta particolarmente complicato. [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.miamammausalinux.org/wp-content/uploads/2009/01/nagios.png" alt="nagios" title="nagios" width="100" class="alignnone size-full wp-image-174" /></p>
<p>Tutto quello di cui un&#8217;amministratore di sistema necessita per svolgere in maniera ottimale il proprio lavoro è il controllo di tutte le risorse che deve gestire. All&#8217;interno però di situazioni complesse, di sistemi estesi in cui operano decine di PC ciascuno con una propria specifica e critica funzione, ottenere il controllo totale risulta particolarmente complicato.<br />
Si potrebbe creare un elenco scritto delle cose da controllare ogni mattina appena arrivati in ufficio o creare degli script specifici che partano automaticamente e che generino delle notifiche, ma sarebbe meglio essere sempre previdenti e agire appena un problema si rivela, senza magari ricevere prima una telefonata che segnala un disservizio.<br />
Cerchiamo di capire con questo primo articolo come si possa implementare un complesso sistema di controllo e monitoraggio delle funzioni critiche di un sistema informativo servendosi del software Open Source : NAGIOS.</p>
<p><strong>Perché usare NAGIOS</strong></p>
<p>Il mercato mette a disposizione delle aziende parecchie soluzioni commerciali per il controllo dei sistemi : Openview, distribuito da HP dispone di un sistema di auto-rilevamento molto ben fatto, è un programma modulare (nel senso che a seconda di ciò che si vuole controllare, viene caricato un determinato “modulo” senza appesantire il sistema) e destinato ad un livello di utilizzo professionale, soprattutto a causa del costo. Presenta però alcuni lati negativi come la mancanza di un&#8217; interfaccia web e l&#8217;obbligo di visionare lo stato dei sistemi solo dal PC sul quale è installato.<br />
Un&#8217;altra alternativa è IBM Tivoli-netview che per funzionalità e capacità non è da meno ad Openview, ma come il precedente, risulta molto costoso e presenta un ulteriore lato negativo : gira solo su sitemi Unix AIX (che ne aggravano ulteriormente il costo).<br />
Si fa presto a capire che seppur buoni, questi (come altri) programmi incidono sul bilancio aziendale in maniera consistente. Ecco perché ancora una volta l&#8217;alternativa più interessante è offerta dal mondo Open Source,  precisamente da NAGIOS.<br />
NAGIOS è un programma che consente di tenere sotto controllo servizi di rete, monitorare le risorse dei server come i carichi di lavoro e la capienza dei dischi, ricevere in tempo reale notifiche di malfunzionamenti via mail o addirittura SMS, possiede un interfaccia web completa, intuitiva e comprensibile, gira su tutti i sistemi unix-like (Linux in testa), è gratuito e rilasciato sotto licenza GPL (General Public License, http://www.gnu.org/copyleft/gpl.html).<br />
Implementare NAGIOS in modo da monitorare un complesso sistema informativo consente di avere un&#8217; efficiente alternativa ai software commerciali sopraelencati senza spendere nulla, a parte il tempo necessario per configurare a dovere questo utile software.</p>
<p><strong>Concetto e requisiti di NAGIOS</strong></p>
<p>NAGIOS è un demone, un programma sempre attivo e residente in memoria. In base al contenuto dei file di configurazione effettua tutti i controlli che sono stati decisi ed in caso di malfunzionamenti invia le notifiche agli utenti interessati. Per effettuare le interrogazioni ai servizi, NAGIOS si serve dei cosi detti  “plugin” i quali altro non sono che dei programmi il cui unico scopo, una volta lanciati, è quello di interrogare questo o quel servizio e restituire un codice di uscita che NAGIOS interpreterà per effettuare le notifiche del caso.<br />
NAGIOS possiede inoltre un interfaccia web (figura 1 e 2) che illustra, con una quantità considerevole di dettagli, lo stato di tutti i servizi, dei server e di quanto altro abbiamo deciso debba essere controllato.<br />
A livello di requisiti, ciò di cui si necessita per compilare e far funzionare NAGIOS sono un compilatore C, che ci consentirà di compilare programma e plugin relativi, un web-server da configurare affinché visualizzi l&#8217;interfaccia web e la libreria “gd library” che consentirà all&#8217;interfaccia web di generare grafici e disegni. Ad ogni modo durante la fase di configurazione del programma, qualsiasi mancanza del sistema ci verrà segnalata in modo da potervi porre rimedio.</p>
<p><strong>Installare NAGIOS</strong></p>
<p>Descriveremo l&#8217;installazione partendo dai file sorgente in modo da rendere l&#8217;articolo il più generale possibile. Sono disponibili comunque i pacchetti binari per le più comuni distribuzioni, ma come sempre, luoghi e posizioni dei file di configurazione ed eseguibili potrebbero variare sensibilmente. Un elenco dei pacchetti disponibili lo si può trovare a questo indirizzo : <a href="http://dag.wieers.com/packages/nagios/">http://dag.wieers.com/packages/nagios/</a>.<br />
A questo punto, per proseguire, è necessario prelevare i file sorgenti dal sito ufficiale di NAGIOS <a href="http://www.nagios.org">http://www.nagios.org</a>. I file che ci interessano sono due, quello relativo al nucleo del programma : <a href="http://prdownloads.sourceforge.net/nagios/nagios-1.2.tar.gz?download">http://prdownloads.sourceforge.net/nagios/nagios-1.2.tar.gz?download</a> e quello relativo ai plugin : <a href="http://prdownloads.sourceforge.net/nagiosplug/nagios-plugins-1.3.1.tar.gz?download">http://prdownloads.sourceforge.net/nagiosplug/nagios-plugins-1.3.1.tar.gz?download</a> al momento in cui scrivo le versioni “stabili” dei pacchetti sono quelle rappresentate dal relativo nome di file : 1.2 per quanto riguarda il programma effettivo ed 1.3.1 per quanto riguarda i suoi plugin.<br />
Prima di iniziare, è necessario creare un utente denominato “nagios” affinché la nostra compilazione vada a buon fine. Questo utente sarà colui il quale avvierà il demone. Non è obbligatorio che questo si chiami “nagios” (è possibile modificarlo in fase di configurazione), ma torna utile in quanto è lo standard di installazione :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ adduser nagios</pre></div></div>

<p>Quindi, una volta scaricati i file procediamo con la decompressione del primo :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ cd /usr/src
$ tar -xzvf nagios-1.2.tar.gz
$ cd nagios-1.2</pre></div></div>

<p>Questo comando creerà la directory <em>/usr/src/nagios-1.2</em> nella quale dovremo entrare per far parire la configurazione, lanciando il comando <em>./configure</em> con alcune opzioni che indicano il percorso nel quale vogliamo che il programma venga installato, la directory relativa ai CGI (i programmi che consentono all&#8217;interfaccia web di funzionare a dovere), la directory base del sito, l&#8217;utente con il quale nagios verrà eseguito ed il suo gruppo :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ ./configure --prefix=/usr/local/nagios --with-cgiurl=/nagios/cgi-bin --with-htmurl=/nagios/ --with-nagios-user=nagios –with-nagios-grp=nagios</pre></div></div>

<p>E&#8217; da notare che tutte le opzioni passate al comando qui sopra sono il default e che quindi sarebbe bastato digitare un <em>./configure</em> per ottenere lo stesso risultato, in questo modo però, si capisce come personalizzare ulteriormente la propria installazione.<br />
Completata la configurazione e verificato che tutto sia andato bene (in caso non lo fosse, ad esempio per problemi di mancanza di pacchetti, è necessario rimediare installandoli e rilanciare il comando) si può procedere con la compilazione effettiva seguita dall&#8217;installazione all&#8217;interno del nostro sistema dei file del programma :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ make all
$ make install</pre></div></div>

<p>Si procede poi con l&#8217;installazione dello script di init, che sarà necessario per avviare automaticamente il programma durante il boot del sistema e controllarne poi il funzionamento (in pratica per controllare le operazioni di start, stop, restart e reload del servizio).<br />
Lo script nelle più comuni distribuzioni verrà posto nella directory /etc/rc.d/init.d :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ make install-init</pre></div></div>

<p>Per concludere, verranno installati i file “sample” (di esempio) necessari per orientarsi durante la prima configurazione di NAGIOS :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ make install-config</pre></div></div>

<p>Completiamo la fase di installazione installando i plugin con i seguenti comandi :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ cd /usr/src
$ tar -xzvf nagios-plugins-1.3.1.tar.gz
$ cd nagios-plugins-1.3.1 
$ ./configure  --prefix=/usr/local/nagios --with-nagios-user=nagios --with-nagios-group=nagios
$ make all
$ make install</pre></div></div>

<p>A questo punto l&#8217;installazione può dirsi teminata e la directory <em>/usr/local/nagios/</em> avrà questo contenuto :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ cd /usr/local/nagios/
$ ls
bin  etc  libexec  sbin  share  var</pre></div></div>

<p>Tra le sottodirectory, <em>bin/</em> contiene il file eseguibile <em>nagios</em>, <em>/usr/local/nagios/libexec/</em> i file eseguibili dei plugin, <em>etc/</em> i file di esempio e conterrà i file effettivi di configurazione, <em>sbin/</em> gli script CGI per l&#8217;interfaccia web, <em>share/</em> le pagine web “statiche” e la documentazione mentre var/ conterrà le informazioni di esecuzione di NAGIOS (file di lock e via dicendo).<br />
Tutti i plugin contenuti in <em>/usr/local/nagios/libexec/</em> sono file eseguibili da linea di comando. Questa qualità di NAGIOS (operare su eseguibili di sistema) ne estende le possibilità all&#8217;infinito. Qualsiasi sia la nostra esigenza, qualsiasi sia il servizio da monitorare, possiamo costruirci per conto nostro un plugin che ne verifichi il funzionamento.<br />
A questo punto NAGIOS è pronto da configurare.</p>
<p><strong>Configurare NAGIOS</strong></p>
<p>NAGIOS necessità di un&#8217;approfondita configurazione che se fatta a regola d&#8217;arte può soddisfare le più svariate richieste. Va aggiunto però, che imparare a padroneggiare NAGIOS in un solo articolo è impossibile, pertanto è bene definire cosa ci proponiamo di implementare in modo da capire le basi del programma ed acquisire conoscenze che ci consentano in breve di approfondire lo studio e di sperimentare.<br />
Possiamo quindi limitarci all&#8217;obiettivo di configurare NAGIOS affinché monitori lo stato di una sola risorsa, il server “local_pc” : se questo sia “vivo” (cioè se risponde ai ping), quanto spazio è presente sul disco e se il servizio HTTP è attivo. In caso di qualsiasi malfunzionamento, verrà  allertato l&#8217;utente “lan_user_1”.<br />
Per ciascun file di configurazione ci baseremo sui sample che il programma di installazione ha creato per noi, copiandoli in un nuovo file senza il suffisso “-sample”, ad esempio per il file hosts.cfg faremo come segue :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ cd /usr/local/nagios/etc/
$ cp hosts.cfg-sample hosts.cfg</pre></div></div>

<p>Editando il file ottenuto :</p>
<p><em>hosts.cfg</em></p>
<p>All&#8217;interno di questo file vanno poste le definizioni di ciascun host che intendiamo monitorare. Il formato degli inserimenti di questo file prevede la clausola define, seguita dal nome host e dalla definizione dei suoi parametri racchiusi tra due parentesi graffe.<br />
La prima definizione, riguardante “generic-host”, riguarda il template (modello) su cui si baseranno gli inserimenti e va perciò mantenuta. Per il resto, dovendo configurare un solo host, utilizzeremo la seguente dichiarazione :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;"># 'local_pc' host definition
define host{
        use                     generic-host    ; Name of host template to use
        host_name               local_pc
        alias                   Server locale
        address                 192.168.1.1
        check_command           check-host-alive
        max_check_attempts      10
        notification_interval   120
        notification_period     24x7
        notification_options    d,u,r
        }</pre></div></div>

<p>La definizione risulta abbastanza intuitiva in quanto ciascun parametro è auto-esplicativo. Il parametro più importante è “address” che identifica l&#8217;indirizzo della macchina, il quale potrebbe essere anche un sito internet, ad esempio <em>www.esempio.com</em>.</p>
<p><em>hostgroups.cfg</em></p>
<p>In questo file vengono definiti i gruppi di host e soprattutto il gruppo di contatto (che vedremo di seguito) ad essi associato. I membri del gruppo di contatto saranno allertati in caso di malfunzionamento. Nel nostro caso, il file conterrà :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;"># 'lan-servers' host group definition
define hostgroup{
	hostgroup_name	lan-servers
	alias			Gruppo gestione LAN
	contact_groups	lan-admins
	members		local_pc
	}</pre></div></div>

<p>Abbiamo quindi configurato il gruppo “lan-servers” al quale il nostro host appartiene ed indicato per questo gruppo, i contatti di riferimento “lan-admins” che verranno dichiarati nel file che segue&#8230; </p>
<p><em>contactgroups.cfg</em></p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;"># 'lan-admins' contact group definition
&nbsp;
define contactgroup{
	contactgroup_name	lan-admins
	alias			LAN Administrators
	members		lan_user_1
	}</pre></div></div>

<p>Qui vengono indicati i gruppi di contatto, nel nostro caso, abbiamo dichiarato “lan-admins” nel quale sarà incluso l&#8217;utente deciso in partenza, “lan_user_1”, i cui dettagli verranno dichiarati in&#8230;</p>
<p><em>contacts.cfg</em></p>
<p>All&#8217;interno di questo file possiamo definire i dettagli relativi ai contatti, nel nostro caso il solo contatto che vogliamo dichiarare è “lan_user_1” :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;"># 'lan_user_1' contact definition
define contact{
	contact_name				lan_user_1
	alias						Network Administrator
	service_notification_period		24x7
	host_notification_period		24x7
	service_notification_options		w,u,c,r
	host_notification_options		d,u,r
	service_notification_commands		notify-by-email
	host_notification_commands		host-notify-by-email
	email						lan_user_1@localhost.localdomain
	}</pre></div></div>

<p><em>services.cfg</em></p>
<p>Ultimo ma non per importanza, il file relativo ai servizi. Anche per questo è presente una template definita come “generic-service” che va obbligatoriamente inclusa in testa al file. Vanno poi incluse in questo file tutte le dichiarazioni dei servizi che vogliamo monitorare. Come deciso, controlleremo che la macchina sia attiva e raggiungibile dai ping, che non abbia il disco pieno e che su di essa sia attivo il servizio HTTP.</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;"># Service definition
define service{
	use				generic-service
	host_name			local_pc
	service_description	PING
	is_volatile			0
	check_period		24x7
	max_check_attempts	3
	normal_check_interval	5
	retry_check_interval	1
	contact_groups		lan-admins
	notification_interval	120
	notification_period	24x7
	notification_options	c,r
	check_command		check_ping!200.0,20%!500.0,60%
	}
&nbsp;
# Service definition
define service{
	use				generic-service
	host_name			local_pc
	service_description	DISK /
	is_volatile			0
	check_period		24x7
	max_check_attempts	3
	normal_check_interval	5
	retry_check_interval	1
	contact_groups		lan-admins
	notification_interval	120
	notification_period	24x7
	notification_options	w,u,c,r
	check_command		check_local_disk!20%!10%!/dev/hda1
	}
&nbsp;
# Service definition
define service{
	use				generic-service
	host_name			local_pc
	service_description	HTTP
	is_volatile             0
	check_period            24x7
	max_check_attempts      3
	normal_check_interval   5
	retry_check_interval    1
	contact_groups          lan-admins
	notification_interval   120
	notification_period     24x7
	notification_options    w,u,c,r
	check_command           check_http
	}</pre></div></div>

<p>Osservando le dichiarazioni di questi servizi si fa presto a capire come possa essere regolato qualsiasi dettaglio, il periodo di tempo (la cui definizione è indicata nel file timeperiods.cfg il quale, a meno di casi particolari, è bene lasciare con il contenuto di default) di ventiquattro ore per sette giorni, il numero massimo di tentativi prima di inviare segnalazioni di malfunzionamento e così via.<br />
Il parametro che indica il comando da eseguire per effettuare il controllo è <em>check_command</em>, di fianco al quale va dichiarato il nome del plugin da utilizzare. Se il comando necessita di parametri, ed è il caso del comando <em>check_ping</em>,  questi vanno indicati di seguito, separati con un punto esclamativo.<br />
I comandi si trovano nel file <em>checkcommand.cfg</em> ed è proprio qui che, nell&#8217;eventualità in cui si vogliano costruire plugin per proprio conto, ne vanno indicate le dichiarazioni.<br />
Per quel che ci riguarda, <em>checkcommand.cfg</em> può rimanere com&#8217;è, così come <em>resource.cfg</em>.</p>
<p><em>cgi.conf</em></p>
<p>All&#8217;interno di questo importantissimo file, vi sono indicate le opzioni per la gestione dei CGI, fondamentali per l&#8217;utilizzo dell&#8217;interfaccia web. I CGI sono una serie di programmi che NAGIOS utilizza per visualizzare nelle pagine web le più svariate informazioni. Questi programmi, si trovano nella directory <em>/usr/local/nagios/sbin</em>.<br />
In questo file, vanno abilitate le linee relative ai permessi di accesso. Nel nostro caso sarà utile definire che l&#8217;utente “local_user_1” potrà accedere tramite browser alla consultazione di tutte le informazioni di NAGIOS, pertanto, nelle righe relative andrà indicato come nell&#8217;esempio riportato :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">authorized_for_system_information=local_user_1</pre></div></div>

<p>Più avanti vedremo come configurare il web server affinché l&#8217;interfaccia web funzioni a dovere.</p>
<p><em>nagios.cfg</em></p>
<p>L&#8217;ultimo file da tenere in considerazione, è nagios.cfg. Questo file contiene tutte le impostazioni generali di programma, a partire dalla posizione dei file di configurazione fino ad arrivare ai permessi di accesso dell&#8217;interfaccia web. Le impostazioni di default sono in generale ideali ed in caso di esigenze specifiche si può ottenere il risultato desiderato facendo riferimento ai commenti.<br />
Solo un&#8217;opzione ci interessa abilitare ai fini del nostro progetto :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">use_authentication=1</pre></div></div>

<p>Quest&#8217;indicazione obbligherà NAGIOS a richiedere l&#8217;autenticazione per l&#8217;accesso ai sopracitati CGI.</p>
<p>Tra i file rimanenti, dependencies.cfg contiene le dipendenze dei diversi servizi ed al suo interno va indicato ad esempio che la vitalità del sito dipende dall&#8217;esecuzione del web server e senza di questo non può funzionare. Nel nostro caso, questo file può rimanere vuoto, così come il file escalations.cfg in cui si possono definire ad esempio il numero totale di volte in cui una notifica deve essere segnalata.</p>
<p><strong>Configurare Apache affinché supporti NAGIOS</strong></p>
<p>Prima di procedere con il primo avvio del programma, è bene predisporre Apache, il nostro web server, per il funzionamento di NAGIOS. All&#8217;interno del file httpd.conf vanno perciò immesse queste righe :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">&lt;Directory /usr/local/nagios/sbin&gt;
AllowOverride AuthConfig
order allow,deny
allow from all
Options ExecCGI
&lt;/Directory&gt;
&nbsp;
&lt;Directory /usr/local/nagios/share&gt;
AllowOverride AuthConfig
order allow,deny
allow from all
&lt;/Directory&gt;</pre></div></div>

<p>In questo modo, oltre ad essere dichiarate, le directory di NAGIOS saranno anche protette (<em>AllowOverride AuthConfig</em>).<br />
Per completare il discorso autenticazione, nella directory <em>/usr/local/nagios/cgi</em>, andrà creato un file denominato .htaccess con questo contenuto :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">AuthName &quot;Nagios Access&quot;
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd.users
require valid-user</pre></div></div>

<p>La consultazione dei dettagli relativi allo stato dei servizi e degli host, raggiungibili attraverso l&#8217;indirizzo <em>http://localhost/nagios</em>, sarà protetta : all&#8217;accesso, verrà cioè richiesto di indicare un nome utente ed una password.<br />
Il file .htaccess indica ad Apache che i dati di accesso sono inclusi nel file <em>/usr/local/nagios/etc/htpasswd.users</em>. Questo file viene creato con il comando htpasswd in questo modo :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ htpasswd -c /usr/local/nagios/etc/htpasswd.users local_user_1
New password: ******
Re-type new password: ******
Adding password for user local_user_1</pre></div></div>

<p>All&#8217;interno di htpasswd.users verranno registrati i dati di accesso l&#8217;utente “local_user_1” abilitato in precedenza nel file <em>/usr/local/nagios/etc/cgi.conf</em>.<br />
Per creare altri utenti basterà rilanciare il comando senza l&#8217;opzione -c.<br />
Nel caso in cui si volesse bloccare completamente l&#8217;accesso all&#8217;interfaccia web, sarà necessario inserire il file .htaccess anche nella directory <em>/usr/local/nagios/share</em>.</p>
<p>A questo punto, per applicare le modifiche è necessario avviare (o riavviare) il servizio di Apache in questo modo :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">/etc/init.d/httpd start</pre></div></div>

<p>La fase di configurazione può dirsi completata.</p>
<p><strong>Avviare NAGIOS</strong></p>
<p>Per avviare il demone di nagios è sufficiente lanciare il seguente comando :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">/etc/init.d/nagios start
Starting network monitor: nagios
  PID TTY          TIME CMD
22037 ?        00:00:00 nagios</pre></div></div>

<p>Se l&#8217;output è come quello mostrato, NAGIOS è in esecuzione e non resta che aprire il browser all&#8217;indirizzo <em>http://localhost/nagios</em> per verificare che tutto sia come ci aspettiamo : In Figura 1  è riportata la schermata definita “Tactical Overview” in cui c&#8217;è il riepilogo generale del sistema, mentre in Figura 2, “Service Detail”, è rappresentato il dettaglio dei servizi configurati.</p>
<div id="attachment_96" class="wp-caption alignnone" style="width: 310px"><a href="http://www.miamammausalinux.org/wp-content/uploads/2005/05/nagios_articolo_1-20-figura1.png"><img src="http://www.miamammausalinux.org/wp-content/uploads/2005/05/nagios_articolo_1-20-figura1-300x211.png" alt="Figura 1" title="nagios_articolo_1-20-figura1" width="300" height="211" class="size-medium wp-image-96" /></a><p class="wp-caption-text">Figura 1</p></div>
<div id="attachment_97" class="wp-caption alignnone" style="width: 310px"><a href="http://www.miamammausalinux.org/wp-content/uploads/2005/05/nagios_articolo_1-20-figura2.png"><img src="http://www.miamammausalinux.org/wp-content/uploads/2005/05/nagios_articolo_1-20-figura2-300x211.png" alt="Figura 2" title="nagios_articolo_1-20-figura2" width="300" height="211" class="size-medium wp-image-97" /></a><p class="wp-caption-text">Figura 2</p></div>
<p><strong>Conclusioni</strong></p>
<p>E&#8217; facile capire come configurando attentamente in NAGIOS la nostra rete, potremo avere decine e decine di host costantemente sotto controllo e ricevere in caso di qualsiasi malfunzionamento un&#8217;istantanea notifica.<br />
Nel prossimo articolo vedremo come monitorare risorse remote che necessitano dell&#8217;esecuzione di plugin locali tramite NRPE : Nagios Remote Plugin Executor.</p>
<p><strong>La serie comprende questi articoli :</strong></p>
<p>Nagios, una rete sotto controllo <a href="http://www.miamammausalinux.org/2005/05/nagios-una-rete-sotto-controllo-parte-1/">Parte 1 : Installazione e configurazione</a><br />
Nagios, una rete sotto controllo <a href="http://www.miamammausalinux.org/2005/06/nagios-una-rete-sotto-controllo-parte-2/">Parte 2 : NRPE : Nagios Remote Plugin Executor</a></p>
<p><strong>Nota :</strong></p>
<p><em>Questo articolo è originariamente apparso nell&#8217;edizione italiana di Linux Journal nel Maggio 2005.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.miamammausalinux.org/2005/05/nagios-una-rete-sotto-controllo-parte-1-installazione-e-configurazione/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

