<?xml version="1.0" encoding="utf-8"?><!DOCTYPE article  PUBLIC '-//OASIS//DTD DocBook XML V4.4//EN'  'http://www.docbook.org/xml/4.4/docbookx.dtd'><article><articleinfo><title>ProxyNagios</title><revhistory><revision><revnumber>31</revnumber><date>2014-05-13 14:51:44</date><authorinitials>BornAgain</authorinitials></revision><revision><revnumber>30</revnumber><date>2011-09-26 10:19:31</date><authorinitials>NiccoloAvico</authorinitials></revision><revision><revnumber>29</revnumber><date>2011-09-26 10:18:11</date><authorinitials>NiccoloAvico</authorinitials></revision><revision><revnumber>28</revnumber><date>2011-09-26 10:08:36</date><authorinitials>NiccoloAvico</authorinitials></revision><revision><revnumber>27</revnumber><date>2011-09-26 09:58:39</date><authorinitials>NiccoloAvico</authorinitials></revision><revision><revnumber>26</revnumber><date>2011-09-25 11:26:33</date><authorinitials>NiccoloAvico</authorinitials></revision><revision><revnumber>25</revnumber><date>2011-09-25 11:19:19</date><authorinitials>NiccoloAvico</authorinitials></revision><revision><revnumber>24</revnumber><date>2011-09-25 11:12:38</date><authorinitials>NiccoloAvico</authorinitials></revision><revision><revnumber>23</revnumber><date>2011-09-25 10:31:47</date><authorinitials>NiccoloAvico</authorinitials></revision><revision><revnumber>22</revnumber><date>2011-09-25 10:23:37</date><authorinitials>NiccoloAvico</authorinitials></revision><revision><revnumber>21</revnumber><date>2011-09-18 11:48:03</date><authorinitials>NiccoloAvico</authorinitials></revision><revision><revnumber>20</revnumber><date>2011-09-18 11:43:59</date><authorinitials>NiccoloAvico</authorinitials></revision><revision><revnumber>19</revnumber><date>2011-09-18 11:42:18</date><authorinitials>NiccoloAvico</authorinitials></revision><revision><revnumber>18</revnumber><date>2011-09-18 11:30:33</date><authorinitials>NiccoloAvico</authorinitials></revision><revision><revnumber>17</revnumber><date>2011-09-18 11:13:08</date><authorinitials>NiccoloAvico</authorinitials></revision><revision><revnumber>16</revnumber><date>2011-07-11 22:26:28</date><authorinitials>NiccoloAvico</authorinitials></revision><revision><revnumber>15</revnumber><date>2011-07-11 22:17:36</date><authorinitials>NiccoloAvico</authorinitials></revision><revision><revnumber>14</revnumber><date>2011-07-11 22:14:10</date><authorinitials>NiccoloAvico</authorinitials></revision><revision><revnumber>13</revnumber><date>2011-07-03 16:12:01</date><authorinitials>93.182.155.31</authorinitials></revision><revision><revnumber>12</revnumber><date>2011-07-03 16:09:52</date><authorinitials>93.182.155.31</authorinitials></revision><revision><revnumber>11</revnumber><date>2011-06-23 21:39:45</date><authorinitials>NiccoloAvico</authorinitials></revision><revision><revnumber>10</revnumber><date>2011-06-07 22:52:29</date><authorinitials>NiccoloAvico</authorinitials></revision><revision><revnumber>9</revnumber><date>2011-06-07 22:50:01</date><authorinitials>NiccoloAvico</authorinitials></revision><revision><revnumber>8</revnumber><date>2011-06-07 22:43:40</date><authorinitials>NiccoloAvico</authorinitials></revision><revision><revnumber>7</revnumber><date>2011-06-07 22:36:27</date><authorinitials>NiccoloAvico</authorinitials></revision><revision><revnumber>6</revnumber><date>2011-06-07 17:37:40</date><authorinitials>NiccoloAvico</authorinitials></revision><revision><revnumber>5</revnumber><date>2011-06-07 17:29:07</date><authorinitials>NiccoloAvico</authorinitials></revision><revision><revnumber>4</revnumber><date>2011-06-07 16:29:36</date><authorinitials>NiccoloAvico</authorinitials></revision><revision><revnumber>3</revnumber><date>2011-06-07 14:11:13</date><authorinitials>NiccoloAvico</authorinitials></revision><revision><revnumber>2</revnumber><date>2011-06-07 12:24:36</date><authorinitials>NiccoloAvico</authorinitials></revision><revision><revnumber>1</revnumber><date>2011-06-07 11:11:36</date><authorinitials>NiccoloAvico</authorinitials></revision></revhistory></articleinfo><section><title>Configurazione di un proxy Nagios per monitoraggio distribuito</title><para>Lo sviluppo del backbone della rete Ninux ha reso necessaria l'introduzione di uno strumento per il suo monitoraggio costante, in grado di (a) segnalare tempestivamente l'eventuale insorgere di fenomeni e problematiche con impatto potenzialmente negativo sulla stabilità della comunicazione dati e (b) essere d'aiuto nel processo di troubleshooting. </para><para> Lo strumento utilizzato allo scopo è la piattaforma Nagios, inizialmente configurata in modalità completamente centralizzata. L'esperienza tuttavia ha dimostrato che i check eseguiti per verificare la funzionalità degli apparati e dei link, basati su test indiretti implementati a livello rete, soffrono di imprecisioni dovute alle condizioni istantanee del canale di trasporto del test (che è effettuato in-banda), che possono generare tipicamente falsi allarmi o comunque aumentare il ritardo nella trasmissione. </para><section><title>Premessa: il monitoraggio distribuito</title><para>Per superare le difficoltà citate si può, oltre a progettare test il cui risultato sia per quanto possibile svincolato dalla condizione dei canali intermedi (processo oggetto di work in progress sperimentale), utilizzare la modalità che Nagios offre di <emphasis role="strong">monitoraggio distribuito</emphasis>. Questa modalità prevede l'esistenza di una <emphasis>istanza centrale Nagios</emphasis>, che riceve da istanze distribuite (<emphasis>proxy clusterizzati Nagios</emphasis>) le segnalazioni relative all'esito di check eseguiti da ciascun proxy sul proprio cluster di nodi. Se i proxy sono sufficientemente distribuiti nella topologia, è possibile minimizzare i tragitti intermedi (<emphasis>hop</emphasis>) percorsi sulla rete dai pacchetti di test, con un impatto molto positivo sul fenomeno delle imprecisioni indotte nelle misure, descritto inizialmente. </para><para> In questo wiki verrà spiegato come implementare un nuovo proxy Nagios, tecnicamente e organizzativamente, utilizzando una piattaforma openWRT (per cui è disponibile Nagios2) oppure debian (in questo caso la versione è Nagios3). </para></section><section><title>Requisiti</title><para>Per implementare un proxy di monitoraggio Nagios è richiesto disporre di un hardware acceso per l'intera giornata (h24), possibilmente alimentato tramite UPS. Il sistema operativo può essere openWRT (backfire 10.03.1-rc4 o superiore) o anche una qualsiasi versione di linux per la quale sia disponibile il pacchetto Nagios3. </para></section><section><title>Principio di funzionamento</title><para>La spiegazione generale del meccanismo di monitoraggio tramite proxy, riassunta di seguito, è spiegata dettagliatamente in <emphasis role="strong">[1]</emphasis>. </para><itemizedlist><listitem><para>Sono presenti una istanza Nagios centrale + tante istanze proxy, distribuite quanto più possibile e con dominio di monitoraggio più granulare possibile; </para></listitem><listitem><para>L'istanza centrale possiede la definizione di tutti gli oggetti di rete che saranno monitorati, sia da lei che dai proxy; in particolare <emphasis>normalmente</emphasis> si incarica di effettuare monitoraggi attivi solo sugli apparati a lei prossimi, mentre per gli apparati cui delega il monitoraggio ai proxy è specificato che gli active checks sono disabilitati; </para></listitem><listitem><para>L'istanza proxy generica viene configurata priva di interfaccia web; inoltre si debbono disabilitare le notifiche ai contatti; i comandi e la definizione dei servizi da monitorare sono comuni per tutte le istanze proxy, mentre quello che varia sono i file degli host e dei servizi presenti nel bacino di monitoraggio individuale; </para></listitem><listitem><para>Ogni istanza proxy utilizza un plug-in denominato NSCA client <emphasis role="strong">[2]</emphasis>, mentre l'istanza centrale dispone di un corrispondente NSCA server: questa coppia di software abilita la comunicazione al centro dei <emphasis>passive service checks</emphasis> <emphasis role="strong">[3]</emphasis> </para></listitem><listitem><para>La configurazione della istanza proxy deve prevedere anche (cfr. <emphasis role="strong">[4]</emphasis>) l'esecuzione di un comando <emphasis role="strong">ocsp</emphasis> e <emphasis role="strong">ochp</emphasis> da attivare <emphasis role="underline">SEMPRE A SEGUITO DI OGNI</emphasis> check eseguito; questo comando, banalmente, sarà la trasmissione del risultato del check stesso al Nagios centrale, utilizzando il modulo NCSA client; </para></listitem><listitem><para>Nella istanza centrale deve essere attivato il meccanismo degli <emphasis>external commands</emphasis> <emphasis role="strong">[5]</emphasis>, che consente di dirigere le attività (in questo caso inviare allarmi) a Nagios tramite una <emphasis>named pipe</emphasis>. </para></listitem></itemizedlist><para>La catena di trasmissione degli eventi è pertanto: </para><orderedlist numeration="upperalpha"><listitem><para>istanza proxy </para><orderedlist numeration="lowerroman"><listitem><para>check_test su un host del proprio bacino </para></listitem><listitem><para>esecuzione dell'ocsp (o dell'ochp se era un test di un host) </para></listitem><listitem><para>invio tramite client NCSA del risultato del test al NCSA server </para></listitem></orderedlist></listitem><listitem><para>istanza centrale </para><orderedlist numeration="lowerroman"><listitem><para>ricezione del check da parte del NCSA server </para></listitem><listitem><para>NCSA server inserisce una PROCESS_SVC_CHECK_RESULT nella named pipe degli external commands del core </para></listitem><listitem><para>Nagios (con frequenza definita da <emphasis role="strong">[6]</emphasis>) controlla la presenza di check_result nella named pipe e acquisisce il risultato del test come se lo avesse eseguito dalla istanza centrale </para></listitem></orderedlist></listitem></orderedlist></section><section><title>Quali apparati monitorare?</title><para>Il monitoraggio di tutto l'insieme degli apparati della rete ninux è effettuato da un server Nagios centralizzato, il quale però è stato configurato per non eseguire check in prima persona, aspettandosi che un qualche Proxy li esegua per lui.</para><para> Siccome questa condizione non è <emphasis>ancora</emphasis> sempre vera, il server Nagios interviene (con periodicità più alta) con un check diretto, qualora non riceva notifiche da nessun Proxy per quell'apparato.</para><para> In ogni caso, un apparato può essere monitorato da non oltre un proxy, ovvero tutti gli apparati sono ripartiti su più <emphasis>zone-proxy</emphasis> Nagios, in maniera disgiunta. Più precisamente, ogni proxy monitora un certo numero di apparati a lui prossimi per topologia (cosiddetta <emphasis>zona-proxy</emphasis>); per ogni apparato oggetto di monitoraggio è bene indicare quale Proxy lo ha in carico, nella <ulink url="http://wiki.ninux.org/GestioneIndirizzi">tabella degli indirizzi</ulink>. </para><para> Da notare che la configurazione delle <emphasis>zone-proxy</emphasis> non è statica: nel tempo, qualsiasi nodo (in radiofrequenza) della rete ninux, che rispetti i requisiti esposti in precedenza, può installare presso di se un nuovo proxy Nagios, il quale monitorerà K apparati. Se uno o più di questi K apparati erano già sotto monitoraggio da parte di altri proxy, (cioé se erano già appartenenti ad altre <emphasis>zone-proxy</emphasis>), essi dovranno essere <emphasis role="strong">spostati</emphasis> sotto il monitoraggio del nuovo proxy N+1, cancellati dalla configurazione dei Proxy che li avevano in cura fino a quel momento e anche la tabella degli indirizzi andrà aggiornata di conseguenza. </para><para> Oltre agli apparati in radiofrequenza, Nagios (e quindi il proxy) può monitorare qualsiasi altro oggetto in rete (NAS, printer server, host con servizi, ecc.). In particolare il proxy è oggetto di monitoraggio da parte di se stesso, e in questo caso i servizi monitorati possono essere anche di sistema. </para><para> Operativamente, una volta eseguita l'installazione del software Nagios sul proxy, sulla base della topologia della rete e dei proxy Nagios già predisposti viene decisa la porzione di rete da trasferire di monitoraggio: i relativi oggetti <emphasis role="strong">host</emphasis> vengono trasferiti dalla configurazione del/dei proxy cedente/i (se esiste) a quella del proxy N+1. Dal punto di vista dell'istanza centrale nulla cambia, in quanto le notifiche vengono trattate indipendentemente da chi le manda. </para></section><section><title>Proxy in ambiente OpenWRT</title><section><title>Componenti sw da installare</title><para>I seguenti tre pacchetti devono essere scaricati dal repository OpenWRT: <emphasis role="strong">nagios</emphasis>, <emphasis role="strong">nagios-plugins</emphasis>, <emphasis role="strong">send-nsca</emphasis>. </para></section><section><title>Aspetti di configurazione</title><section><title>Le directory previste</title><para>A seguito della installazione dei pacchetti, vengono generate le directory: </para><itemizedlist><listitem><para><code>/etc/nagios</code> - file di configurazione generali </para></listitem><listitem><para><code>/etc/nagios/commands</code> - file di configurazione dei comandi di check di nagios </para></listitem><listitem><para><code>/etc/libexec/nagios</code> - contiene gli eseguibili dei test </para></listitem></itemizedlist><para>Inoltre a cura dell'installazione viene generato lo script <code>/etc/init.d/nagios</code>. <emphasis role="strong">ATTENZIONE:</emphasis> gli eseguibili dei check vengono posti dall'installazione in <code>/usr/libexec/nagios/</code> mentre la directory riferita nelle definizioni dei comandi è <code>/usr/lib/nagios/plugins/</code> quindi occorre creare a mano un link simbolico <code>plugins</code> dentro <code>/usr/lib/nagios/</code> che punti a <code>/usr/libexec/nagios/</code>, altrimenti i check nagios locali non potranno essere eseguiti. </para></section><section><title>Aggiunte da fare</title><para>Si deve scaricare il file <code>nagios-openwrt.tar</code> dal <ulink url="http://www.nnx.me/ProxyNagios/smb%3A//10.168.177.189/share/NagiosConfig#">repository</ulink> e, ponendosi come utente <emphasis>root</emphasis> nella directory <code>/</code>, ne deve essere estratto il contenuto (<code>tar xvf nagios-openwrt.tar</code>). Questa azione crea le directory necessarie per ninux e aggiunge o sovrascrive alcuni file originali dell'installazione. </para></section><section><title>I file di configurazione</title><para>Il file fondamentale per Nagios è <code>/etc/nagios/nagios.cfg</code>, riferito a startup in <code>/etc/init.d/nagios</code> Per informazione, le parti fondamentali del file riguardano l'esecuzione degli active_checks (deve essere abilitata) e dei passive checks (deve essere disabilitata). Le notifiche devono essere disabilitate. La parte chiave per i proxy Nagios riguarda invece le direttive obsess: <emphasis>obsess_over_services</emphasis> deve essere <emphasis>=1</emphasis> e deve essere specificato il comando da eseguire <emphasis>obsess</emphasis>. Questo comando deve essere contenuto nel file <code>commands.cfg</code>; il <emphasis>date_format</emphasis> è bene che sia <emphasis>iso8601</emphasis> ovunque. </para></section><section><title>La configurazione degli apparati</title><para>Come già detto è bene che ogni apparato sia monitorato da (al più) un Proxy, e in particolare dal più prossimo nella topologia di rete. Tramite la <ulink url="http://wiki.ninux.org/GestioneIndirizzi">tabella degli indirizzi</ulink> ci si deve pertanto assicurare che non esista già per l'apparato un altro Proxy e nel caso decidere quale dei due è il più vicino. </para><para> Come detto, tutti i nodi devono essere posti nella directory <code>/etc/nagios/ninux</code>, utilizzando per convenzione una alberatura sulla base del tipo di apparato. Ogni apparato è descritto in un proprio file <emphasis role="strong">.cfg</emphasis>. Siccome ogni apparato è sicuramente già stato definito presso l'istanza centrale di Nagios, sarà sufficiente copiare il relativo file <emphasis role="strong">.cfg</emphasis> dalla sua posizione nel server centrale, ponendolo in una posizione analoga dell'alberatura del proxy. </para><para> <emphasis role="strong">IMPORTANTE:</emphasis> ci si deve accertare di eliminare, dalla versione locale al Proxy, le righe con le direttive <emphasis>contacts</emphasis>  e <emphasis>parents</emphasis> poiché queste informazioni non vengono utilizzate nella esecuzione dei check da parte del proxy, bensì solo nella notifica degli eventi e nel disegno della mappa, entrambe operazioni localizzate nella istanza Nagios centrale. Inoltre si deve porre a &quot;1&quot; il parametro &quot;active_checks_enabled&quot;. </para></section></section></section><section><title>Proxy in ambiente linux (debian)</title><section><title>Componenti sw da installare</title><para>I seguenti tre pacchetti devono essere scaricati e installati: <emphasis role="strong">nagios3</emphasis>, <emphasis role="strong">nagios-plugins</emphasis>, <emphasis role="strong">send-nsca</emphasis>. </para></section><section><title>Aspetti di configurazione</title><section><title>Le directory previste</title><para>A seguito della installazione dei pacchetti, vengono generate le directory: </para><itemizedlist><listitem><para><code>/etc/nagios3</code> - file di configurazione generali </para></listitem><listitem><para><code>/etc/nagios-plugins/config</code> - file di configurazione dei comandi di check di nagios </para></listitem><listitem><para><code>/usr/lib/nagios/plugins</code> - contiene gli eseguibili dei test </para></listitem><listitem><para><code>/var/log/nagios</code> - contiene nagios.log (file riferito in /etc/nagios/nagios.cfg) </para></listitem></itemizedlist><para>Inoltre a cura dell'installazione viene generato lo script /etc/init.d/nagios3. </para></section><section><title>Aggiunte da fare</title><para>Si deve scaricare il file <code>nagios-debian.tar</code> dal <ulink url="http://www.nnx.me/ProxyNagios/smb%3A//10.168.177.189/share/NagiosConfig#">repository</ulink> e, ponendosi come utente <emphasis>root</emphasis> nella directory <code>/</code>, ne deve essere estratto il contenuto (<code>tar xvf nagios-debian.tar</code>). Questa azione crea le directory necessarie per ninux e aggiunge o sovrascrive alcuni file originali dell'installazione. Dopo aver compiuto l'estrazione si deve modificare il proprietario dei file di configurazione: <code>chown -R nagios:nagios /etc/nagios3/ninux</code> </para></section><section><title>I file di configurazione</title><para>Il file fondamentale per Nagios è <code>/etc/nagios3/nagios.cfg</code>, riferito a startup in <code>/etc/init.d/nagios3</code>, che viene sovrascritto dal tar di ninux. </para><para> Per informazione, le parti fondamentali del file riguardano l'esecuzione degli <emphasis>active checks</emphasis> (deve essere abilitata) e dei <emphasis>passive checks</emphasis> (deve essere disabilitata). Le notifiche devono essere disabilitate. La parte chiave per i proxy Nagios riguarda invece le direttive obsess: <emphasis>obsess_over_services</emphasis> deve essere <emphasis>=1</emphasis> e deve essere specificato il comando da eseguire <emphasis>obsess</emphasis>. Questo comando deve essere contenuto nel file <code>commands.cfg</code>; il <emphasis>date_format</emphasis> è bene che sia <emphasis>iso8601</emphasis> ovunque. </para><para> Altro file importante, che invece va personalizzato, è <code>/etc/nagios/localhost.cfg</code> che deve riportare il nome del proxy come host_name e il relativo IP. Queste informazioni, comuicate a uno degli amministratori della istanza centrale di Nagios, saranno utilizzate per creare un nuovo oggetto linux-servers che consentirà al proxy di essere a sua volta monitorato da Nagios. </para></section><section><title>La configurazione degli apparati</title><para>Come già detto è bene che ogni apparato sia monitorato da (al più) un Proxy, e in particolare dal più prossimo nella topologia di rete. Tramite la <ulink url="http://wiki.ninux.org/GestioneIndirizzi">tabella degli indirizzi</ulink> ci si deve pertanto assicurare che non esista già per l'apparato un altro Proxy e nel caso decidere quale dei due è il più vicino. </para><para> Come detto, tutti i nodi devono essere posti nella directory <code>/etc/nagios3/ninux</code>, utilizzando per convenzione una alberatura sulla base del tipo di apparato. Ogni apparato è descritto in un proprio file <emphasis role="strong">.cfg</emphasis>. Siccome ogni apparato è sicuramente già stato definito presso l'istanza centrale di Nagios, sarà sufficiente copiare il relativo file <emphasis role="strong">.cfg</emphasis> dalla sua posizione nel server centrale, ponendolo in una posizione analoga dell'alberatura del proxy. </para><para> <emphasis role="strong">IMPORTANTE:</emphasis> ci si deve accertare di eliminare, dalla versione locale al Proxy, la direttiva <emphasis>parents</emphasis> poiché questa informazione non viene utilizzata nella esecuzione dei check da parte del proxy, bensì solo nella notifica degli eventi e nel disegno della mappa, entrambe operazioni localizzate nella istanza Nagios centrale. Inoltre si deve porre a &quot;1&quot; il parametro &quot;active_checks_enabled&quot;. </para></section></section></section><section><title>Test pre-flight</title><para>Quando si è terminata la fase preparatoria della nuova installazione, predisponendo come illustrato tutti i file di configurazione, è opportuno eseguire un test diagnostico del lavoro fatto: a tal fine è sufficiente invocare il comando <code>nagios -v /etc/nagios/nagios.cfg</code> (<code>nagios3 -v /etc/nagios3/nagios.cfg</code> per ambiente linux), il cui output descriverà tutti i problemi e incongruenze eventualmente presenti nelle definizioni. Solo quando questo test pre-flight avrà dato esito positivo, sarà possibile attivare il processo proxy (nagios start). </para><para> Appena avviato il proxy se ne deve verificare il corretto funzionamento: localmente si può consultare il file <code>/tmp/nagios.log</code> (<code>/var/log/nagios3/nagios.log</code> per debian) (devono apparire tutti i comandi inviati tramite send_nsca). </para></section><section><title>Note</title><para>Potrebbe anche interessarti :  <ulink url="http://www.nnx.me/ProxyNagios/NagiosAutofwd#">How to integrate autofwd with Nagios</ulink> </para></section><section><title>Riferimenti sul web</title><para>[1] - <ulink url="http://nagios.sourceforge.net/docs/3_0/distributed.html"/> </para><para> [2] - <ulink url="http://nagios.sourceforge.net/docs/3_0/addons.html#nsca"/> </para><para> [3] - <ulink url="http://nagios.sourceforge.net/docs/3_0/passivechecks.html"/> </para><para> [4] - <ulink url="http://nagios.sourceforge.net/docs/3_0/configmain.html#ocsp_command"/> </para><para> [5] - <ulink url="http://nagios.sourceforge.net/docs/3_0/extcommands.html"/> </para><para> [6] - <ulink url="http://nagios.sourceforge.net/docs/3_0/configmain.html#command_check_interval"/> </para></section></section></article>