<?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>TommyBlue.it &#187; Monitoring</title>
	<atom:link href="http://www.tommyblue.it/tag/monitoring/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.tommyblue.it</link>
	<description>Bombardare per la pace è un po' come trombare per la verginità...</description>
	<lastBuildDate>Tue, 24 Jan 2012 09:34:19 +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>Realizzare un sistema di monitoraggio con Icinga</title>
		<link>http://www.tommyblue.it/2011/03/08/realizzare-un-sistema-di-monitoraggio-con-icinga/</link>
		<comments>http://www.tommyblue.it/2011/03/08/realizzare-un-sistema-di-monitoraggio-con-icinga/#comments</comments>
		<pubDate>Tue, 08 Mar 2011 16:45:38 +0000</pubDate>
		<dc:creator>TommyBlue</dc:creator>
				<category><![CDATA[How-To]]></category>
		<category><![CDATA[Informatica]]></category>
		<category><![CDATA[Software Libero]]></category>
		<category><![CDATA[Icinga]]></category>
		<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[Nagios]]></category>

		<guid isPermaLink="false">http://www.tommyblue.it/?p=1108</guid>
		<description><![CDATA[In questa breve guida spiegherò come installare Icinga (un fork di Nagios che ha ormai superato il genitore) e Icinga Web su Ubuntu 10.04 server. Molti passi sono uguali a quelli che ho già descritto nelle due guide sull&#8217;installazione di Nagios (1 e 2). Operazioni preliminari Installare i pacchetti necessari: apt-get install apache2 bsd-mailx build-essential [...]]]></description>
			<content:encoded><![CDATA[<p>In questa breve guida spiegherò come installare Icinga (un fork di Nagios che ha ormai superato il <em>genitore</em>) e Icinga Web su Ubuntu 10.04 server.</p>
<p>Molti passi sono uguali a quelli che ho già descritto nelle due guide sull&#8217;installazione di Nagios (<a href="http://www.tommyblue.it/2010/02/12/costruirsi-un-sistema-di-monitoraggio-casalingo-con-nagios-parte-1/">1</a> e <a href="http://www.tommyblue.it/2010/02/17/costruirsi-un-sistema-di-monitoraggio-casalingo-con-nagios-parte-2/">2</a>).</p>
<h2>Operazioni preliminari</h2>
<p>Installare i pacchetti necessari:</p>
<pre>apt-get install apache2 bsd-mailx build-essential libgd2-xpm-dev libjpeg62 libjpeg62-dev libpng12-0 libpng12-0-dev snmp libsnmp-base git-core mysql-server mysql-client libdbi0 libdbi0-dev libdbd-mysql</pre>
<p>Aggiungere utenti e gruppi:</p>
<pre>addgroup --system icinga
adduser --system --no-create-home --home /usr/local/icinga --ingroup icinga --disabled-password icinga
addgroup --system icinga-cmd
usermod -a -G icinga-cmd icinga
usermod -a -G icinga-cmd www-data</pre>
<p>Creare il database:</p>
<pre> #&gt; mysql -u root -p
 mysql&gt; CREATE DATABASE icinga;
 GRANT USAGE ON *.* TO 'icinga'@'localhost' IDENTIFIED BY 'icinga' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0;
 GRANT SELECT , INSERT , UPDATE , DELETE ON icinga.* TO 'icinga'@'localhost';
 FLUSH PRIVILEGES ;
 quit</pre>
<p>Scaricare Icinga:</p>
<pre>cd /usr/src
git clone git://git.icinga.org/icinga-core.git
cd icinga-core/
git submodule init
git submodule update
./configure --with-command-group=icinga-cmd --enable-idoutils
make all
make fullinstall
make install-api
cd /usr/local/icinga/etc/
cp idomod.cfg-sample idomod.cfg
cp ido2db.cfg-sample ido2db.cfg</pre>
<p>Editare i due ultimi file per adattarli alle configurazioni del database. Nel file <em>/usr/local/icinga/etc/icinga.cfg</em> scommentare la riga:</p>
<pre>broker_module=/usr/local/icinga/bin/idomod.o config_file=/usr/local/icinga/etc/idomod.cfg</pre>
<p>Creare le tabelle:</p>
<pre> #&gt; cd /path/to/icinga-src/module/idoutils/db/mysql
 #&gt; mysql -u root -p icinga &lt; mysql.sql</pre>
<p><strong>Edit 15/03/11:</strong><br />
Ho dovuto modificare il file <em>/usr/local/icinga/etc/objects/commands.cfg</em> perchè il path al comando <em>mail</em> era sbagliato, quindi modificate le definizioni di <em>notify-host-by-email</em> e <em>notify-service-by-email</em> per utilizzare<em> /usr/bin/mail</em> e non <em>/bin/mail</em>.</p>
<p>Per terminare aggiungere Icinga ai servizi di avvio e lanciare Ido2db e Icinga:</p>
<pre>update-rc.d icinga defaults
/etc/init.d/ido2db start
/etc/init.d/icinga restart</pre>
<h2>Plugins</h2>
<p>Scaricare e installare i <a href="http://www.nagiosplugins.org/" target="_blank">plugin di Nagios</a>. Si faccia riferimento alla<a href="http://www.tommyblue.it/2010/02/12/costruirsi-un-sistema-di-monitoraggio-casalingo-con-nagios-parte-1/" target="_blank"> guida di Nagios</a> per l&#8217;installazione, si presti solo attenzione alle differenti opzioni di configurazione:</p>
<pre>./configure --prefix=/usr/local/icinga --with-cgiurl=/icinga/cgi-bin --with-htmurl=/icinga --with-nagios-user=icinga --with-nagios-group=icinga</pre>
<h2>Configurazione dei check</h2>
<p>Per la configurazione degli host e dei servizi potete vedere le mie precedenti guide per Nagios: <a href="http://www.tommyblue.it/2010/02/12/costruirsi-un-sistema-di-monitoraggio-casalingo-con-nagios-parte-1/">parte 1</a> e <a href="http://www.tommyblue.it/2010/02/17/costruirsi-un-sistema-di-monitoraggio-casalingo-con-nagios-parte-2/">parte 2</a>.</p>
<h2>Le interfacce web</h2>
<p>Icinga ha a disposizione due interfacce web: la classica interfaccia CGI e la nuova Icinga Web. Le due installazioni possono convivere tranquillamente.</p>
<h3>Icinga</h3>
<p>Installare i CGI:</p>
<pre>make cgis
make install-cgis
make install-html
make install-webconf</pre>
<p>Creare l&#8217;utente e la password per l&#8217;accesso:</p>
<pre>htpasswd -c /usr/local/icinga/etc/htpasswd.users icingaadmin</pre>
<h3>Icinga Web</h3>
<p>Installare il necessario:</p>
<pre>apt-get install php5 php5-cli php-pear php5-xmlrpc php5-xsl php5-gd php5-ldap php5-mysql
a2enmod rewrite</pre>
<p>Scaricare e installare Icinga Web:</p>
<pre>cd /usr/src
git clone git://git.icinga.org/icinga-web.git
cd icinga-web
./configure
make install
make install-apache-config</pre>
<p>Creare il database e lo schema:</p>
<pre># mysql -u root -p

mysql&gt; CREATE DATABASE icinga_web;
       GRANT USAGE ON *.* TO 'icinga_web'@'localhost' IDENTIFIED BY 'icinga_web' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0;
       GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER, INDEX ON icinga_web.* TO 'icinga_web'@'localhost';
       quit

# make db-initialize</pre>
<p>E, per finire:</p>
<pre>/etc/init.d/icinga restart
/etc/init.d/apache2 restart</pre>
<p>Se avete utilizzato le impostazioni di default non dovete fare altro, altrimenti date una lettura alla <a title="Installation of the Icinga Web Frontend" href="http://docs.icinga.org/latest/en/icinga-web-scratch.html" target="_blank">guida ufficiale</a>. Riavviate apache e connettetevi al server: <em>http://&lt;hostname&gt;/icinga-web</em></p>
<h2>Webografia</h2>
<ul>
<li><a title="Icinga with IDOUtils Quickstart" href="http://docs.icinga.org/latest/en/quickstart-idoutils.html" target="_blank">http://docs.icinga.org/latest/en/quickstart-idoutils.html</a></li>
<li><a title="Installation of the Icinga Web Frontend" href="http://docs.icinga.org/latest/en/icinga-web-scratch.html" target="_blank">http://docs.icinga.org/latest/en/icinga-web-scratch.html</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.tommyblue.it/2011/03/08/realizzare-un-sistema-di-monitoraggio-con-icinga/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configurare i check passivi in Nagios per l&#8217;integrazione con Munin</title>
		<link>http://www.tommyblue.it/2010/09/16/configurare-i-check-passivi-in-nagios-per-l-integrazione-con-munin/</link>
		<comments>http://www.tommyblue.it/2010/09/16/configurare-i-check-passivi-in-nagios-per-l-integrazione-con-munin/#comments</comments>
		<pubDate>Thu, 16 Sep 2010 16:51:16 +0000</pubDate>
		<dc:creator>TommyBlue</dc:creator>
				<category><![CDATA[How-To]]></category>
		<category><![CDATA[Informatica]]></category>
		<category><![CDATA[ALIX]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[Debian Voyage]]></category>
		<category><![CDATA[Embedded]]></category>
		<category><![CDATA[Lighttpd]]></category>
		<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[Munin]]></category>
		<category><![CDATA[Nagios]]></category>
		<category><![CDATA[Nginx]]></category>
		<category><![CDATA[NRPE]]></category>
		<category><![CDATA[NSCA]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[postfix]]></category>

		<guid isPermaLink="false">http://www.tommyblue.it/?p=990</guid>
		<description><![CDATA[Continuo la serie di guide sulla configurazione di Nagios spiegando come attivare i check passivi con NSCA e come usare Munin per avvertire Nagios di ciò che non va&#8217;. Intanto ricordo i link alla prima e alla seconda parte della guida: Parte 1 Parte 2 Tornando a Nagios e Munin: l&#8217;uso dei check passivi può [...]]]></description>
			<content:encoded><![CDATA[<p>Continuo la serie di guide sulla configurazione di Nagios spiegando come attivare i check passivi con <a href="http://www.nagios.org/download/addons" target="_blank">NSCA</a> e come usare Munin per avvertire Nagios di ciò che non va&#8217;.</p>
<p>Intanto ricordo i link alla prima e alla seconda parte della guida:</p>
<ul>
<li><a href="http://www.tommyblue.it/2010/02/12/costruirsi-un-sistema-di-monitoraggio-casalingo-con-nagios-parte-1/">Parte 1</a></li>
<li><a href="http://www.tommyblue.it/2010/02/17/costruirsi-un-sistema-di-monitoraggio-casalingo-con-nagios-parte-2/">Parte 2</a></li>
</ul>
<p>Tornando a Nagios e Munin: l&#8217;uso dei check passivi può tornare utile se si va ad installare Nagios in una rete in cui è già presente Munin che, per chi non lo conoscesse, è un software che crea grafici di andamento di una lunga serie di servizi o aspetti dei server (anch&#8217;esso configurabile con agenti su vari server e un&#8217;applicazione centralizzata per la raccolta dei dati).<br />
Se Munin non fosse già installato si può valutare una configurazione Nagios-centrica con i check effettuati da NRPE e i grafici fatti con <a href="http://nagiosgraph.sourceforge.net/" target="_blank">NagiosGraph</a>.</p>
<p>Nel mio caso era già presente Munin e ho quindi optato per la configurazione dei check passivi.<span id="more-990"></span></p>
<h2>Configurazione del server (Nagios e nsca)</h2>
<p>Si comincia come sempre installando i pacchetti necessari:</p>
<pre>apt-get install libmcrypt-dev xinetd</pre>
<p>Quindi si scarica NSCA dalla <a href="http://www.nagios.org/download/addons" target="_blank">pagina degli addon di Nagios</a>, si scompatta, si compila e si installa:</p>
<pre>tar xzf nsca-2.7.2.tar.gz
cd nsca-2.7.2/
./configure prefix=/usr/local/nagios --with-nsca-user=nagios --with-nsca-grp=nagcmd
make all
cp -a src/nsca /usr/local/nagios/bin/
cp sample-config/nsca.cfg /usr/local/nagios/etc/
chown nagios:nagcmd /usr/local/nagios/etc/nsca.cfg
chmod g+r /usr/local/nagios/etc/nsca.cfg
cp sample-config/nsca.xinetd /etc/xinetd.d/nsca</pre>
<p>Bisogna anche aggiungere al file <em>/etc/services</em> il servizio NSCA con la riga:</p>
<pre>nsca    5667/tcp    # NSCA</pre>
<p>Nel file <em>/etc/xinetd.d/nsca</em> bisogna modificare il parametro <em>only_from</em> per consentire l&#8217;accesso al server in cui gira Munin, poi possiamo riavviare xinetd.</p>
<h2>Configurazione del client (send_nsca e Munin)</h2>
<p>Nel client da cui arriveranno i check (ovvero dove gira Munin) bisogna ugualmente scaricare il pacchetto NSCA e compilarlo. Differisce l&#8217;installazione del binario che in questo caso è <strong>send_nsca</strong> e può essere posizionato dove si vuole (stessa cosa vale per il suo file di configurazione). Dato che nel mio caso Munin e Nagios sono sullo stesso server ho usato la directory di Nagios per ospitare questi file:</p>
<pre>cp -a src/send_nsca /usr/local/nagios/bin/
cp sample-config/send_nsca.cfg /usr/local/nagios/etc/</pre>
<p>Se i due software sono su server diversi potete impostare un metodo di cifratura nel file <em>send_nsca.cfg</em> e impostare una password (che deve essere la stessa sul server e sul client).</p>
<p><strong>Proviamo adesso se <em>send_nsca</em> funziona.</strong> I check passivi consistono in una riga contenente:</p>
<pre>HOSTNAME[tab]SERVIZIO[tab]CODICE[tab]DESCRIZIONE</pre>
<p>quindi per fare un test possiamo creare un file con il contenuto:</p>
<pre>hostAcaso   pippo   0   OK</pre>
<p>e fare un test di connessione con:</p>
<pre>/usr/local/nagios/bin/send_nsca localhost -c /usr/local/nagios/etc/send_nsca.cfg &lt; test
1 data packet(s) sent to host successfully.</pre>
<p>Nei log di Nagios troveremo:</p>
<pre>nagios: Warning:  Passive check result was received for service 'pippo' on host 'hostAcaso', but the host could not be found!</pre>
<p>Funziona! Non fatevi spaventare dal <em>warning</em>: Nagios ha ricevuto il check ma non ha nessun host corrispondente nella sua configurazione. Niente di male, glielo spiegheremo più tardi.</p>
<p>Possiamo quindi configurare Nagios per accettare i check passivi. Per farlo andiamo nel server e inseriamo nel file <em>etc/objects/templates.cfg</em> il template per un servizio che accetta sono check passivi:</p>
<pre>define service{
 name                            passive-service
 use                             generic-service
 active_checks_enabled           0
 passive_checks_enabled          1
 flap_detection_enabled          0
 register                        0
 is_volatile                     0
 check_period                    24x7
 max_check_attempts              1
 normal_check_interval           5
 retry_check_interval            1
 check_freshness                 0
 contact_groups                  admins
 notification_options            w,u,c,r
 stalking_options                w,c,u
 notification_interval           120
 check_command                   check_dummy!0
}</pre>
<p>Inseriamo poi nel file <em>etc/objects/commands.cfg</em> la definizione del comando <em>check_dummy</em>:</p>
<pre>define command{
 command_name    check_dummy
 command_line    $USER1$/check_dummy $ARG1$
}</pre>
<p>Fatto questo possiamo inserire un check di prova in un host:</p>
<pre>define service{
 use                             passive-service
 host_name                       hostCheEsiste
 service_description             TestMessage
}</pre>
<p>Una volta riavviato Nagios vedremo questo servizio in stato pending. Modificando il file di prima con:</p>
<pre>hostCheEsiste    TestMessage    0     Messaggio di OK</pre>
<p>ed eseguendo nuovamente:</p>
<pre>/usr/local/nagios/bin/send_nsca localhost -c /usr/local/nagios/etc/send_nsca.cfg &lt; test</pre>
<p>possiamo mettere il servizio in stato di OK.</p>
<p>Per finire dobbiamo dire a Munin di chiamare Nagios quando qualcosa non va. Per farlo dobbiamo modificare il file <em>munin.conf</em> inserendo:</p>
<pre>contacts nagios
contact.nagios.command /usr/local/nagios/bin/send_nsca -H localhost -c /usr/local/nagios/etc/send_nsca.cfg</pre>
<p>Modificate le path secondo la vostra configurazione e inserite nel file <em>send_nsca.cfg</em> l&#8217;eventuale password per comunicare con NSCA.</p>
<h2>Ma come funzionano in dettaglio gli avvertimenti di Munin?</h2>
<p>Munin si basa su plugin e ognuno di essi ha dei limiti. Per vederli basta lanciare (in questo caso interrogo il plugin <strong>cpu</strong>):</p>
<pre>munin-run cpu config</pre>
<p>Nella risposta si possono individuare i limiti:</p>
<pre>system.warning 60
system.critical 100</pre>
<p>Tali limiti possono essere monitorati da munin-limits, un eseguibile che, per essere lanciato automaticamente, va inserito in crontab. Di base ne trovate una configurazione in <em>/etc/cron.d/munin</em> (se non c&#8217;è createlo). Io l&#8217;ho modificato così:</p>
<pre>*/5 * * * *     munin if [ -x /usr/share/munin/munin-limits ]; then /usr/share/munin/munin-limits --force --contact nagios --contact old-nagios; fi</pre>
<p>Quindi ogni 5 minuti fa il check e contatta Nagios per passargli il risultato.</p>
<p>L&#8217;ultima cosa da fare è adattare i limiti di ogni plugin secondo le proprie esigienze. Si possono definire in <em>munin.conf</em> per ogni host:</p>
<pre>df._mapper_sda1_vm_root.warning      0:90
df._mapper_sda1_vm_root.critical     0:95
df.notify_alias     Disk usage</pre>
<p>La logica con cui vengono definiti i limiti è un po&#8217; cervellotica e dipende molto dal tipo di plugin. In questo caso ho usato <strong>df</strong> che controlla l&#8217;uso del disco.<br />
Il limite di warning 0:90 viene superato se il limite è al di fuori di questo range (il range è 0:100). Ma a sua volta il limite critico è al di fuori del range 0:95. Il risultato è che il plugin entra in <strong>warning</strong> se la partizione è occupata tra il 90% e il 94% e in <strong>critical</strong> da 95% in sù.<br />
Vi lascio divertire con gli altri plugin :)</p>
<h2>Inseriamo in Nagios questi check</h2>
<p>Ho già mostrato prima come inserire un check passivo in un host, ovvero:</p>
<pre>define service{
 use                             passive-service
 host_name                       hostCheEsiste
 service_description             TestMessage
}
</pre>
<p>Per accettare un check passivo valido da Munin bisogna modificare <strong>service_description</strong> affinchè sia uguale al nome del servizio che definisce il plugin di Munin. Dato che hanno nomi non facilmente individuabili e che a volte contengono caratteri incompatibili con Nagios (ad esempio %) una cosa furba è rinominarli in <em>munin.conf</em> con <strong>.notify_alias</strong> (guardate qualche riga più in sù nel caso del <strong>df</strong>) e usare quell&#8217;alias in Nagios.</p>
<p>A questo punto la teoria è finita e non rimane altro da fare che iniziare a scrivere le definizioni dei check in Nagios e le configurazioni dei plugin in Munin, buon lavoro!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tommyblue.it/2010/09/16/configurare-i-check-passivi-in-nagios-per-l-integrazione-con-munin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Costruirsi un sistema di monitoraggio &#8220;casalingo&#8221; con Nagios – parte 2</title>
		<link>http://www.tommyblue.it/2010/02/17/costruirsi-un-sistema-di-monitoraggio-casalingo-con-nagios-parte-2/</link>
		<comments>http://www.tommyblue.it/2010/02/17/costruirsi-un-sistema-di-monitoraggio-casalingo-con-nagios-parte-2/#comments</comments>
		<pubDate>Wed, 17 Feb 2010 14:01:37 +0000</pubDate>
		<dc:creator>TommyBlue</dc:creator>
				<category><![CDATA[How-To]]></category>
		<category><![CDATA[Informatica]]></category>
		<category><![CDATA[ALIX]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[Debian Voyage]]></category>
		<category><![CDATA[Embedded]]></category>
		<category><![CDATA[Lighttpd]]></category>
		<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[Nagios]]></category>
		<category><![CDATA[Nginx]]></category>
		<category><![CDATA[NRPE]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[postfix]]></category>

		<guid isPermaLink="false">http://www.tommyblue.it/?p=853</guid>
		<description><![CDATA[Costruzione di un sistema di monitoraggio a basso costo con una scheda embedded x86, Debian Voyage e Nagios]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.tommyblue.it/2010/02/12/costruirsi-un-sistema-di-monitoraggio-casalingo-con-nagios-parte-1/"><strong>Leggi la prima parte della guida</strong></a></p>
<p>In questa seconda parte della guida illustrerò alcune <strong>configurazioni di base</strong> per i check di <a title="Nagios" href="http://www.nagios.org/" target="_blank">Nagios</a> e l&#8217;uso dell&#8217;addon <strong>NRPE</strong> per check locali su sistemi remoti.</p>
<h3>La struttura</h3>
<p>In questa guida prenderò in considerazione la struttura qui si seguito che permette di illustrare vari tipi di configurazione:</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-860" title="Schema Nagios" src="http://www.tommyblue.it/wp-content/uploads/2010/02/schema-nagios.jpg" alt="" width="450" height="454" /></p>
<p>Una panoramica sugli host e i servizi:</p>
<ul>
<li>Host A, server Linux con:
<ul>
<li>Server HTTP Apache</li>
<li>VMWare Server con una macchina virtuale E con un server Zimbra</li>
</ul>
</li>
<li>Host B, server Linux con:
<ul>
<li>Server HTTP Apache</li>
<li>Server MySQL</li>
</ul>
</li>
</ul>
<p>Quindi E dipende da C che a sua volta dipende da A. Invece D dipende da B.<br />
Entrambi i server Apache rispondono sulle porte 80 e 443, l&#8217;interfaccia di amministrazione di VMWare Server risponde sulla porta 8333 (con SSL).<br />
La macchina virtuale Zimbra fornisce i servizi SMTP, POP3 e le interfaccie di webmail e amministrazione (porta 7071).<br />
Infine nella macchina B il server MySQL risponde solo sull&#8217;interfaccia locale, non è quindi possibile accedervi dall&#8217;esterno.</p>
<p><span id="more-853"></span>Negli esempi successivi gli elementi <strong>A</strong>, <strong>C</strong> ed <strong>E</strong> saranno del cliente <em>Company A</em> (dominio <em>company-a.com</em>) e <strong>B</strong> e <strong>D</strong> saranno del cliente <em>Company B</em> con dominio <em>company-b.com</em>.<br />
I nomi host saranno i seguenti:</p>
<ul>
<li><em>A =&gt; web.company-a.com<br />
</em></li>
<li><em>C (macchina virtuale) =&gt; mail.company-a.com<br />
</em></li>
<li><em>B =&gt; web.company-b.com</em></li>
</ul>
<p>Per un maggior dettaglio nella spiegazione delle singole configurazioni tenete sempre sott&#8217;occhio la guida ufficiale alla pagina <a href="http://nagios.sourceforge.net/docs/3_0/objectdefinitions.html" target="_blank"><strong>Object Definitions</strong></a>.</p>
<h3>Organizzazione dei file</h3>
<p>Una volta installato Nagios seguendo la <a href="http://www.tommyblue.it/2010/02/12/costruirsi-un-sistema-di-monitoraggio-casalingo-con-nagios-parte-1/">prima parte della guida</a>, troverete tutte le configurazioni in <em>/usr/local/nagios/etc</em>. Il file che <em>comanda</em> è <em>nagios.cfg</em> il quale poi richiama tutti gli altri. È quindi possibile, e consigliabile, creare una gerarchia di file che possa poi più facilmente permettere di gestire tutte le configurazioni (senza <em>perdersi</em> per strada i vari pezzi).<br />
Nel file <em>nagios.cfg</em> ci sono due direttive inerenti questo aspetto e sono <em>cfg_file</em> e <em>cfg_dir</em>. La prima indica direttamente un file da cui leggere ulteriori configurazioni, la seconda indica intere directory da cui saranno inclusi tutti i file che terminano con <em>.cfg</em>. Io consiglio di intervenire usando questa seconda direttiva, le cartelle che ho creato sono:</p>
<pre>cfg_dir=/usr/local/nagios/etc/personalized_objects
cfg_dir=/usr/local/nagios/etc/servers
cfg_dir=/usr/local/nagios/etc/groups</pre>
<p>Oltre alle due cartelle con le configurazioni dei server e dei gruppi, ho aggiunto una cartella in cui inserirò i <em>template</em> personalizzati, ad esempio con <em>timeperiods</em> o <em>contact groups</em> diversi da quelli standard.</p>
<h3>Gruppi di host e servizi</h3>
<p>È possibile definire dei gruppi di host (ad esempio a seconda dell&#8217;azienda di appartenenza o del tipo di hardware) e dei gruppi di servizi (server di posta, server web, ecc.). Personalmente inserisco queste configurazioni nella cartella <em>groups</em>.</p>
<p>Esempi di configurazione sono i seguenti:</p>
<pre>define hostgroup{
    hostgroup_name     companyA-servers
    alias              Company A Servers
    members            mail.company-a.com,web.company-a.com
}
define hostgroup{
    hostgroup_name     companyB-servers
    alias              Company B Servers
    members            web.company-b.com
}
define servicegroup{
    servicegroup_name  web-servers
    alias              Web Servers
    members            web.company-a.com,HTTP,web.company-b.com,HTTP
}</pre>
<p>In entrambi i casi gli host indicati in <em>members</em> devono ricalcare il nome con cui quegli host sono definiti (attributo <em>host_name</em>). Nel caso dei servizi, oltre al nome dell&#8217;host, deve essere indicato il nome del servizio (anche in questo caso deve essere uguale a quello inserito in <em>service_description</em>).</p>
<h3>Definizione degli host</h3>
<p>Iniziamo con la configurazione dei server. I file <em>web.company-a.com.cfg</em>, <em>web.company-b.com.cfg</em> e <em>mail.company-a.com.cfg</em> verranno creati nella cartella <em>servers</em>. Non c&#8217;è molto da spiegare, inserisco dei commenti direttamente nelle configurazioni:</p>
<p><em><strong>web.company-a.com.cfg</strong></em></p>
<pre>define host {
    use             linux-server   ;   Template da cui ereditare
    host_name       web.company-a.com   ;   L'host name è ciò che viene usato per identificare l'host negli altri file
    alias           CompanyA Web Server
    address         1.2.3.4
    hostgroups      comapanyA-servers   ;   Come in hostgroup, tale configurazione può essere alternativa o in aggiunta
}</pre>
<p><em><strong>web.company-b.com.cfg</strong></em></p>
<pre>define host {
    use             linux-server
    host_name       web.company-b.com
    alias           CompanyB Web Server
    address         1.2.3.5
    hostgroups      comapanyB-servers
}</pre>
<p><em><strong>mail.company-a.com.cfg</strong></em></p>
<pre>define host {
    use             linux-server
    host_name       mail.company-a.com
    alias           CompanyA Web Server
    address         1.2.3.6
    hostgroups      comapanyA-servers
    parents         web.company-a.com   ;   L'host da cui questo host dipende
}</pre>
<h3>Definizione dei servizi</h3>
<p>La definizione dei servizi è direttamente collegata ai plugin, ovvero usano questi ultimi per effettuare i check. In verità il valore dell&#8217;attributo <em>check_command</em>, anche se in genere ricalca il nome del plugin (i plugin sono nella cartella <em>libexec</em>), non lo indica direttamente ma ha una corrispondenza nel valore dell&#8217;attributo <em>command_name</em> nella definizione di un comando (file <em>etc/objects/commands.cfg</em>).</p>
<p><em><strong>mail.company-a.com.cfg</strong></em></p>
<pre>define service {
 use                     generic-service
 host_name               mail.company-a.com
 service_description     SMTP
 check_command           check_smtp!-t 5
}
define service {
 use                     generic-service
 host_name               mail.company-a.com
 service_description     IMAP
 check_command           check_imap!-t 5
}
define service {
 use                     generic-service
 host_name               mail.company-a.com
 service_description     POP3
 check_command           check_pop!-t 5
}</pre>
<p>Nella direttiva <em>check_command</em> viene indicato il tipo di comando da eseguire. Dopo il punto esclamativo vengono indicati gli argomenti. Se date uno sguardo a <em>etc/objects/commands.cfg</em> vedrete che gli argomenti vengono passati al plugin con <em>$ARG1$, $ARG2$, ecc</em>. In alcuni è presente soltanto un argomento, quindi nella definizione del servizio, dopo il punto esclamativo, devono essere indicati tutti gli argomenti (tipo <em>./check_dummy -t pippo -x pluto</em>) mentre in altri comandi sono presenti più argomenti, spesso associati ad una specifica opzione (tipo <em>./check_dummy -t </em><em>$ARG1$</em><em> -x </em><em>$ARG2$</em>). Nella definizione del servizio, più argomenti possono essere indicati con più punti esclamativi (tipo <em>check_dummy!pippo!pluto</em>). Per avere più informazioni su un plugin lanciatelo con <em>libexec/check_dummy &#8211;help</em>.</p>
<p>Un esempio di check un po&#8217; più complesso può essere, ad esempio, quello necessario per controllare se l&#8217;interfaccia di amministrazione di Zimbra sta girando correttamente (HTTPS sulla porta 7071):</p>
<p><em><strong>mail.company-a.com.cfg</strong></em></p>
<pre>define service{
 use                             generic-service
 host_name                       mail.comapany-a.com
 service_description             ZimbraAdmin
 check_command                   check_http!"-H mail.company-a.com -p 7071 -w 5 -c 15 --ssl"
}</pre>
<p>Com&#8217;è facile intuire, con <em>check_http</em> è possibile quindi monitorare ogni singolo sito presente su un server web.</p>
<p>Ecco gli altri file necessari per la nostra configurazione:</p>
<p><em><strong>web.company-a.com.cfg</strong></em></p>
<pre>define service{
 use                             generic-service
 host_name                       web.company-a.com
 service_description             HTTP
 check_command                   check_http   ;   Semplice check sulla porta 80
}</pre>
<pre>define service{
 use                             generic-service
 host_name                       web.company-a.com
 service_description             VMWareAdmin
 check_command                   check_http!"-H web.company-a.com -p 8333 -w 5 -c 15 --ssl"
}</pre>
<p><em><strong>web.company-b.com.cfg</strong></em></p>
<pre>define service{
 use                             generic-service
 host_name                       web.company-b.com
 service_description             HTTP
 check_command                   check_http
}</pre>
<h3>NRPE</h3>
<p>L&#8217;ultima cosa che rimane da controllare è lo stato del server MySQL. Dato che il servizio risponde soltanto sull&#8217;interfaccia locale non è possibile controllarne direttamente lo stato dal server Nagios. L&#8217;addon<em> NRPE </em>fa proprio questo: installato sulla macchina da controllare, esegue dei check locali quando interrogato da Nagios.Il plugin da usare sul server è <em>check_nrpe</em> e l&#8217;argomento da passargli è il nome del check definito nel client, il quale a sua volta dovrà associare questo nome ad un check locale (quindi sul client dobbiamo installare i plugin).</p>
<p>Su entrambe le macchine va compilato  l&#8217;addon:</p>
<pre>tar xzf nrpe-2.12.tar.gz
cd nrpe-2.12/
./configure --enable-ssl
make all</pre>
<p>A questo punto l&#8217;installazione tra host e client differisce. Per l&#8217;installazione nel client dei plugin seguite la <a href="http://www.tommyblue.it/2010/02/12/costruirsi-un-sistema-di-monitoraggio-casalingo-con-nagios-parte-1/" target="_blank">prima parte della guida</a>.</p>
<p><strong>Host</strong></p>
<pre>make install-plugin</pre>
<p>e quindi bisogna creare il template del comando:</p>
<p><em><strong>commands.cfg</strong></em></p>
<pre>define command {
 command_name    check_nrpe
 command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}</pre>
<p><strong>Client</strong></p>
<p>Se non è installato, installate <em>xinetd</em>:</p>
<pre>apt-get install xinetd</pre>
<p>Installate quindi il demone</p>
<pre>make install-daemon
make install-daemon-config
make install-xinetd</pre>
<p>Aggiungete NRPE al file <em>/etc/services</em>:</p>
<pre>nrpe 5666/tcp # NRPE</pre>
<p>Aggiungete l&#8217;ip del server Nagios al file <em>/etc/xinetd.d/nrpe</em> (in questo caso un fittizio <em>4.3.2.1</em>):</p>
<pre>only_from = 127.0.0.1 4.3.2.1</pre>
<p>Infine riavviate il server xinetd e controllate che NRPE sia in ascolto:</p>
<pre>~# /etc/init.d/xinetd restart
~# netstat -at | grep nrpe
tcp        0      0 *:nrpe                  *:*                     LISTEN</pre>
<p>A questo punto si può testare il servizio in locale con:</p>
<pre>~# /usr/local/nagios/libexec/check_nrpe -H localhost
NRPE v2.12</pre>
<p><strong>Controllare MySQL</strong></p>
<p>Arriviamo al nostro obiettivo: controllare che il server MySQL stia correttamente girando. Creiamo un utente MySQL non privilegiato:</p>
<pre>mysql&gt; CREATE USER 'nagiosCheck'@'localhost' IDENTIFIED BY 'some_pass';</pre>
<p>Il check, lanciato da linea di comando, sarà il seguente:</p>
<pre>~# /usr/local/nagios/libexec/check_mysql -u nagiosCheck -p some_pass
Uptime: 1061012  Threads: 2  Questions: 192277  Slow queries: 0  Opens: 198  Flush tables: 1  Open tables: 64  Queries per second avg: 0.181</pre>
<p>Inseriamo quindi tale check in <em>/usr/local/nagios/etc/nrpe.cfg</em>:</p>
<pre>command[check_mysql]=/usr/local/nagios/libexec/check_mysql -u nagiosCheck -p some_pass</pre>
<p>Da notare che nel server Nagios il nome dell&#8217;argomento da passare a <em>check_nrpe </em>sarà <em>check_mysql</em> come definito tra le parentesi quadre.<br />
A questo punto dal server Nagios si può testare il check remoto:</p>
<pre>~# /usr/local/nagios/libexec/check_nrpe -H tomcat.mydomain.com -c check_mysql
Uptime: 1061534  Threads: 2  Questions: 192280  Slow queries: 0  Opens: 198  Flush tables: 1  Open tables: 64  Queries per second avg: 0.181</pre>
<p>Se è tutto ok non resta che inserirlo tra i servizi dell&#8217;host <strong>B</strong>:</p>
<p><em><strong>web.company-b.com.cfg</strong></em></p>
<pre>define service{
 use                             generic-service
 host_name                       web.company-b.com
 service_description             MySQL
 check_command                   check_nrpe!check_mysql
}</pre>
<p>E questo conclude la configurazione della nostra rete di test. Nella prossima <em>puntata</em> spiegherò come configurare dei server <em>slave</em> per effettuare check passivi, necessari, ad esempio, in configurazioni di rete complesse in cui il server <em>master</em> non può direttamente raggiungere gli host da controllare (se l&#8217;host da controllare è all&#8217;interno di una LAN, per dirne una).</p>
<p><a href="http://www.tommyblue.it/2010/02/12/costruirsi-un-sistema-di-monitoraggio-casalingo-con-nagios-parte-1/"><strong>Leggi la prima parte della guida</strong></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tommyblue.it/2010/02/17/costruirsi-un-sistema-di-monitoraggio-casalingo-con-nagios-parte-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Costruirsi un sistema di monitoraggio &#8220;casalingo&#8221; con Nagios &#8211; parte 1</title>
		<link>http://www.tommyblue.it/2010/02/12/costruirsi-un-sistema-di-monitoraggio-casalingo-con-nagios-parte-1/</link>
		<comments>http://www.tommyblue.it/2010/02/12/costruirsi-un-sistema-di-monitoraggio-casalingo-con-nagios-parte-1/#comments</comments>
		<pubDate>Fri, 12 Feb 2010 19:49:08 +0000</pubDate>
		<dc:creator>TommyBlue</dc:creator>
				<category><![CDATA[How-To]]></category>
		<category><![CDATA[Informatica]]></category>
		<category><![CDATA[ALIX]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[Debian Voyage]]></category>
		<category><![CDATA[Embedded]]></category>
		<category><![CDATA[Lighttpd]]></category>
		<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[Nagios]]></category>
		<category><![CDATA[Nginx]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[postfix]]></category>

		<guid isPermaLink="false">http://www.tommyblue.it/?p=812</guid>
		<description><![CDATA[Costruzione di un sistema di monitoraggio a basso costo con una scheda embedded x86, Debian Voyage e Nagios]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-813" title="Embedded PC" src="http://www.tommyblue.it/wp-content/uploads/2010/02/embedded.jpg" alt="" width="300" height="254" />Se, come me, avete vari server a giro per il mondo a cui fare da baby-sitter, probabilmente avrete sentito la necessità di avere tutto sotto controllo e di scoprire (e magari risolvere) i problemi non appena si presentano.</p>
<p>Dopo aver configurato sistemi di monitoraggio per alcune P.A. e aziende, mi sono deciso a farlo anche per i miei server e descriverò in queste pagine ciò che ho fatto o sto ancora facendo.</p>
<p>Dividerò questa guida in più parti, per renderla più leggibile e per poter facilmente aggiungere nuove parti via via che incremento le funzionalità del sistema.</p>
<p>Questa prima parte descrive l&#8217;<strong>hardware</strong> scelto, l&#8217;<strong>installazione del sistema operativo</strong> e l&#8217;<strong>installazione base di <a title="Nagios" href="http://www.nagios.org/" target="_blank">Nagios</a></strong>.<br />
<span id="more-812"></span></p>
<h3>Hardware</h3>
<p>La scelta dell&#8217;hardware è caduta su un <em>embedded</em> acquistato (per circa 80€) su <a title="PC Engines" href="http://www.pcengines.ch" target="_blank">pcengines.ch</a> ampiamente in grado di fornire la <strong>potenza</strong> necessaria allo scopo e con <strong>consumi</strong> estremamente limitati.</p>
<p>Nello specifico ecco le caratteristiche principali:</p>
<div id="_mcePaste">
<ul>
<li><strong>CPU</strong>: 500 MHz AMD Geode LX800</li>
<li><strong>DRAM</strong>: 256 MB DDR DRAM</li>
<li><strong>Storage</strong>: CompactFlash socket</li>
<li><strong>Power</strong>: DC jack or passive POE, min. 7V to max. 20V</li>
<li><strong>Expansion</strong>: 2 miniPCI slots, dual USB port</li>
<li><strong>Connectivity</strong>: 2 Ethernet channels (Via VT6105M 10/100)</li>
</ul>
</div>
<p>Oltre alla scheda ho acquistato anche il case (damn! non avevano quello rosa shocking!) e l&#8217;alimentatore.</p>
<p>Costo complessivo <strong>101,31€</strong> così distribuiti:</p>
<ul>
<li><strong>Scheda</strong>: 72,23 €</li>
<li><strong>Case</strong>: 6,63 €</li>
<li><strong>Alimentatore</strong>: 4,05 €</li>
<li><strong>Spedizione</strong>: 18,40 €</li>
</ul>
<p>A questo è necessario aggiungere una memoria <strong>CompactFlash</strong> (io ne ho usata una da 2GB), un <strong>lettore/scrittore di tali memorie</strong> e un <strong>adattatore seriale&lt;=&gt;USB</strong> (o soltanto un cavo seriale se avete una porta adatta). Attenzione al cavo seriale che deve essere RS-232 altrimenti la connessione non funziona.</p>
<h3>Sistema operativo</h3>
<p>Il sistema operativo scelto è <a title="Debian Voyage" href="http://linux.voyage.hk/" target="_blank">Debian Voyage</a>, una versione di Debian ottimizzata per le piattaforme <strong>embedded x86</strong>. La sua installazione sulla CompactFlash è estremamente semplice e veloce (per i dettagli vi rimando alla <a title="Wiki di Debian Voyage" href="http://wiki.voyage.hk/dokuwiki/doku.php?id=installation" target="_blank">pagina wiki dedicata</a>).<br />
Una volta installato si può montare la memoria nella mainboard e agganciare il pc via seriale. Per visualizzare la console remota si può usare il software <strong>screen</strong>:</p>
<pre>screen /dev/ttyUSB0 38400</pre>
<p>Si può quindi alimentare la scheda e osservare il boot. Per accedere la prima volta a voyager usare l&#8217;utente <em>root </em>con password <em>voyage</em>.<br />
Consiglio di configurare subito la rete con un ip statico (usate <em>/etc/network/interfaces</em>) e installare <em>openssh-server</em> che permetterà di lavorare in remoto con la console preferita.</p>
<p>Per prepararsi all&#8217;installazione di Nagios dobbiamo fare un po&#8217; di cose:</p>
<pre>apt-get install locales dialog build-essential apache2 libapache2-mod-php5 mailx postfix
addgroup --system nagios
adduser --system --no-create-home --home /usr/local/nagios --ingroup nagios --disabled-password nagios
addgroup --system nagcmd
usermod -a -G nagcmd nagios
usermod -a -G nagcmd www-data</pre>
<p>Configuriamo <a title="Postfix" href="http://www.postfix.org" target="_blank">Postfix</a> con i parametri corretti per la nostra connessione e inseriamo in <em>/etc/aliases</em> l&#8217;alias per l&#8217;utente root:</p>
<pre>postmaster: root
nagios: root
root: io@mio-dominio.com</pre>
<p>e aggiorniamo:</p>
<pre>newaliases
</pre>
<p>Anzichè <a title="Apache" href="http://www.apache.org" target="_blank">Apache</a> (un po&#8217; oneroso in termini di memoria consumata) volevo usare <a title="Nginx" href="http://nginx.org/" target="_blank">Nginx</a> ma per configurarlo per fornire pagine <a title="PHP" href="http://www.php.net" target="_blank">PHP</a> è necessario lavorarci un po&#8217;, quindi lascio questa configurazione per il futuro (considererò anche l&#8217;eventuale uso di <a title="Lighttpd" href="http://www.lighttpd.net/" target="_blank">Lighttpd</a>).</p>
<h3>Nagios</h3>
<p>Si può quindi iniziare a installare il software di monitoraggio, ovviamente <a title="Nagios" href="http://www.nagios.org/" target="_blank">Nagios</a>. Per alcuni check potrebbero essere necessari alcuni pacchetti, eccone alcuni tra i più comuni:</p>
<pre>apt-get install libgd2-xpm libgd2-xpm-dev libpng3 libpng3-dev libjpeg62 libjpeg-dev zlib1g zlib1g-dev libnet-snmp-perl snmp libssl-dev libpq-dev libmysqlclient15-dev smbclient qstat fping libradiusclient-ng-dev libldap2-dev</pre>
<p>Scarichiamo <a title="Download Nagios Core" href="http://www.nagios.org/download/core/" target="_blank">Nagios Core</a> in <em>/usr/src</em> e compiliamolo:</p>
<pre>tar xzf nagios-3.2.0.tar.gz
cd nagios-3.2.0/
./configure --prefix=/usr/local/nagios --with-command-group=nagcmd --with-httpd-conf=/etc/apache2/conf.d/
make all
make install
make install-init
make install-commandmode
make install-config
make install-webconf</pre>
<p>Per ulteriori informazioni seguite la <a title="Guida a Nagios" href="http://nagios.sourceforge.net/docs/3_0/quickstart.html" target="_blank">guida ufficiale</a>.<br />
Compiliamo e installiamo anche i plugin, scaricati da <a title="Download Nagios Plugins" href="http://www.nagios.org/download/plugins/" target="_blank">qui</a>:</p>
<pre>tar xzf nagios-plugin-1.4.14.tar.gz
cd nagios-plugin-1.4.14
./configure  --prefix=/usr/local/nagios --with-nagios-user=nagios --with-nagios-group=nagios
make
make install</pre>
<p>Creiamo adesso la password per l&#8217;accesso a Nagios:</p>
<pre>htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin</pre>
<p>Se cambiate il nome utente sostituite tutte le occorrenze di <em>nagiosadmin</em> col nuovo utente nel file <em>/usr/local/nagios/etc/cgi.cfg</em>.<br />
Aggiungiamo Nagios all&#8217;avvio del sistema:</p>
<pre>update-rc.d nagios defaults</pre>
<p>e iniziamo la configurazione. Una volta terminato, prima di lanciare o riavviare Nagios, possiamo verificare la correttezza della configurazione con:</p>
<pre>/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
</pre>
<p>La prima parte della guida termina qui, nella prossima vedremo come configurare i check di base e i controlli remoti con <a title="Nagios NRPE" href="http://www.nagios.org/download/addons/" target="_blank">Nagios NRPE</a>.</p>
<p><a href="http://www.tommyblue.it/2010/02/17/costruirsi-un-sistema-di-monitoraggio-casalingo-con-nagios-parte-2/"><strong>Leggi la seconda parte della guida</strong></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tommyblue.it/2010/02/12/costruirsi-un-sistema-di-monitoraggio-casalingo-con-nagios-parte-1/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
	</channel>
</rss>

