Old:Nagios: monitorare server e servizi: differenze tra le versioni

Vai alla navigazione Vai alla ricerca
m (→‎Come gestire al meglio i file di configurazione: tip sul controllo dei file di configurazione)
Riga 1: Riga 1:
* navigation
Nagios ([http://www.nagios.org Home Page]) è uno strumento molto usato ed utilissimo per il monitoraggio di server e servizi. All'inizio, per molti utenti, è un po' complicato da configurare, ma dopo aver capito il funzionamento risulterà semplice, potente e versatile, attributi necessari per questo genere di strumenti.
** mainpage|mainpage
 
** sl-url|sl
= Installazione =
** Indice Guide|Indice Guide
La macchina su cui verrà installato Nagios è un Debian Stable (Etch). Installeremo la versione 2 di Nagios, con i relativi pacchetti per avere un maggior numero di plugin e immagini (vedremo dopo come usarle).
** faq-url|faq
 
** Tabella_Software|Tabella Software
Per installare nagios è sufficiente un:
** Lista Hardware|Tabella Hardware
<pre>
** Tips and Tricks|Tips and Tricks
#  apt-get install nagios2 nagios2-common nagios-plugins nagios-images nagios-plugins-basic  nagios-plugins-standard
** recentchanges-url|recentchanges
</pre>
** randompage-url|randompage
 
** Cos'� Debianizzati.Org|AboutUs
Dopo aver scaricato (sono circa 3.5Mb) ed installato nagios provvediamo all'installazione di un web server (necessario per consultare la comoda [[web-interface]]); la mia scelta è ricaduta su apache2, anche perchè il server in questione ospiterà applicazioni scritte in php. Procediamo ad installare apache2 con:
** Aiuto:Contents|help
<pre>
* risorse
# apt-get install apache2 libapache2-mod-php5
** Portale-url|Portale
</pre>
** http://blog.debianizzati.org|News
 
** http://forum.debianizzati.org|Forum
 
= Configurazione =
== Apache ==
Al momento dell'installazione viene creato in modo automatico il file <tt>/etc/apache2/conf.d/nagios2.conf</tt> (il file è, a tutti gli effetti, un link simbolico al file <tt>/etc/nagios2/apache2.conf</tt>) con il seguente contenuto:
<pre>
# apache configuration for nagios 2.x
# note to users of nagios 1.x:
# throughout this file are commented out sections which preserve
# backwards compatibility with bookmarks/config for nagios 1.x.  simply
# look for lines following "nagios 1.x:" comments.
 
ScriptAlias /cgi-bin/nagios2 /usr/lib/cgi-bin/nagios2
ScriptAlias /nagios2/cgi-bin /usr/lib/cgi-bin/nagios2
# nagios 1.x:
#ScriptAlias /cgi-bin/nagios /usr/lib/cgi-bin/nagios2
#ScriptAlias /nagios/cgi-bin /usr/lib/cgi-bin/nagios2
 
# Where the HTML pages live
Alias /nagios2 /usr/share/nagios2/htdocs
# nagios 1.x:
#Alias /nagios /usr/share/nagios2/htdocs
 
<DirectoryMatch (/usr/share/nagios2/htdocs|/usr/lib/cgi-bin/nagios2)>
Options FollowSymLinks
 
DirectoryIndex index.html
 
AllowOverride AuthConfig
Order Allow,Deny
Allow From All
 
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /etc/nagios2/htpasswd.users
# nagios 1.x:
#AuthUserFile /etc/nagios/htpasswd.users
require valid-user
</DirectoryMatch>
 
# Where the stylesheets (config files) reside
#Alias /nagios2/stylesheets /etc/nagios2/stylesheets
# nagios 1.x:
#Alias /nagios/stylesheets /etc/nagios2/stylesheets
 
# Enable this ScriptAlias if you want to enable the grouplist patch.
# See http://apan.sourceforge.net/download.html for more info
# It allows you to see a clickable list of all hostgroups in the
# left pane of the Nagios web interface
# XXX This is not tested for nagios 2.x use at your own peril
#ScriptAlias /nagios2/side.html /usr/lib/cgi-bin/nagios2/grouplist.cgi
# nagios 1.x:
#ScriptAlias /nagios/side.html /usr/lib/cgi-bin/nagios2/grouplist.cgi
</pre>
Il file contiene una bozza di configurazione per nagios che permette di raggiungere il servizio digitando, semplicemente <nowiki>http://IP/nagios2/</nowiki>. Questo sistema a me, personalmente, non piace, in quanto nagios sarebbe accessibile da qualsiasi sito ospitato sulla macchina, semplicemente digitando <nowiki>http://www.sito.it/nagios2/</nowiki>, non molto sicuro e pulito.
 
Creeremo, quindi, un sottodominio dedicato a nagios, modificando il file nel seguente modo:
<pre>
 
<VirtualHost *:80>
    ServerAdmin root@knio.it
#    DocumentRoot /var/www/nagios/
    ServerName nagios.knio.it
 
    ErrorLog /var/log/apache2/nagios.knio.it_error.log
    CustomLog /var/log/apache2/nagios.knio.it_access.log combined
 
    <Directory />
        AllowOverride All
        Options +Multiviews
        Options Indexes Includes FollowSymLinks MultiViews
        DirectoryIndex index index.html
    </Directory>
 
    ScriptAlias /cgi-bin/nagios2 /usr/lib/cgi-bin/nagios2
    ScriptAlias /nagios2/cgi-bin /usr/lib/cgi-bin/nagios2
 
   
    #Alias /nagios2/stylesheets /etc/nagios2/stylesheets
    Alias /nagios2 /usr/share/nagios2/htdocs
    # Enable this ScriptAlias if you want to enable the grouplist patch.
    # See http://apan.sourceforge.net/download.html for more info
    # It allows you to see a clickable list of all hostgroups in the
    # left pane of the Nagios web interface
    # XXX This is not tested for nagios 2.x use at your own peril
    #ScriptAlias /nagios2/side.html /usr/lib/cgi-bin/nagios2/grouplist.cgi
    <DirectoryMatch (/usr/share/nagios2/htdocs|/usr/lib/cgi-bin/nagios2)>
Options FollowSymLinks
DirectoryIndex index.html
AllowOverride AuthConfig
Order Allow,Deny
Allow From All
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /etc/nagios2/htpasswd.users
require valid-user
    </DirectoryMatch>
</VirtualHost>
</pre>
 
Creiamo la Root Directory per questo sito con:
<pre>
# mkdir  /var/www/nagios
# chown -R www-data:www-data /var/www/nagios/
# touch /var/www/nagios/index.html
</pre>
la directory conterrà un file <tt>index.html</tt> vuoto, in questo file potremmo mettere o una pagina di benvenuto oppure un redirect alla directory contenente l'applicativo, a piacere.
 
Ora manca solo una cosa da fare: aggiungere l'utente per l'accesso a nagios (operazione obbligatoria, pena un errore di tipo 500 quando si tenta di accedere all'applicazione).
 
Per aggiungere l'utente usiamo il comando <tt>htpasswd</tt>:
<pre>
# htpasswd  -c  /etc/nagios2/htpasswd.users nagiosadmin
</pre>
alla richiesta di password, inseriamo una password a nostro piacimento.
 
Ora possiamo testare la configurazione, ma prima è necessario riavviare apache per rendere effettive le modifiche che abbiamo effettuato:
<pre>
# /etc/init.d/apache2 restart
</pre>
 
Collegandosi alla pagina <nowiki>http://nagios.knio.it/nagios2/</nowiki> ci verrà chiesto username/password per accedere a nagios, dopodichè ci verrà mostrata la schermata di default.
 
== Nagios ==
=== Introduzione alla configurazione ===
La configurazione di nagios è situato, come da [[FHS]] in <tt>/etc/nagios2/</tt>. All'interno di questa directory sono presenti i seguenti file (e directory):
; cgi.cfg : il file contiene la configurazione dell'interfaccia web di nagios (quindi i percorsi dove trovare i file di configurazione ed alcuni comportamenti base; la configurazione dei permessi degli utenti e perfino i suoni da riprodurre in caso di problemi)
; commands.cfg : contiene la configurazione dei comandi eseguibili da nagios: check, notifiche ed altri
; conf.d : una directory che ha lo scopo di raccogliere i file di configurazione di tutti i vari host monitorati da nagios
; htpasswd.users : contiene (come abbiamo visto prima) le chiavi di accesso di tutti gli utenti che possono accedere all'interfaccia web di nagios (i permessi, per questi utenti, sono definiti in <tt>cgi.cfg</tt>)
; nagios.cfg : contiene la configurazione vera e propria del demone di nagios, la configurazione di default è corretta nella maggior parte dei casi
; resource.cfg : in questa guida non lo modificheremo
; stylesheets : directory per inserire i fogli di stile personalizzati (in questa guida non li useremo)
 
=== Come gestire al meglio i file di configurazione ===
Anche se la struttura dei file di configurazione è semplice, ci vuole molto poco a renderla una vera e propria accozzaglia di file. Ci sono varie scuole di pensiero su come gestire i file.
 
La prima è quella di inserire, all'interno della directory <tt>conf.d/</tt> un file per ogni host, raggruppando, poi, gli host tramite gli hostgroup. La tecnica è valida e funzionale, a meno che non ci si trovi a gestire un numero eccessivo di host.
 
La seconda tecnica, è quella di creare tante directory quante sono i segmenti della rete, così da racchiudere i file di configurazione in directory meno popolate, così da rendere più facilmente individuabile un file.
 
Personalmente trovo più comodo gestire la prima, con la seguente convenzione:
* ogni file ha la forma <tt>'''type'''-'''name'''.cfg</tt> dove '''type''' rappresenta la tipologia del file di configurazione (''host'' per un server, ''switch'' per uno switch di rete, ''router'' per un router, e così via...) e dove '''name''' è il nome univoco associato alla macchina (e usato anche all'interno di Nagios).
* i file contenenti i gruppi, le definizioni dei periodi e simili hanno una struttura <tt>'''type'''.cfg</tt> dove ''type'' può essere:
** '''contacts''': per le definizioni dei contatti
** '''timeperiods''': per le definizioni dei periodi
** '''extinfo''': per le definizioni delle informazioni aggiuntive
** '''hostgroups''': per la definizione dei gruppi di host
** '''services''': per la definizione dei gruppi di servizi
 
Un'accortezza da adottare, inoltre, quando si modifica un file di configurazione è quella di effettuare un check di correttezza tramite il comando:
<pre>
nagios -v /etc/nagios2/nagios.conf
</pre>
In questo modo si eviteranno [[downtime]] e si sarà sicuri che nagios ripartirà senza problemi (almeno legati alla sintassi dei file di configurazione...).
 
=== Gli Host ===
Tramite gli '''[[host]]''' è possibile definire i pc, server, switch e tutte le altre apparecchiature presenti nella rete da monitorare. Saranno poi i '''servizi''' a determinare cosa monitorare effettivamente.
 
La definizione classica e minimale di un host è la seguente
<pre>
define host{
  use        generic-host
  host_name  serverino
  alias      Server di Produzione
  address    192.168.0.15
}
</pre>
 
I parametri della definizione sono i seguenti:
; use : permette di specificare un [[template]] da utilizzare all'interno del nostro host. L'utilizzo di un template permette di minimizzare i parametri necessari da passare ad un host. Il template che usiamo, per ora, è ''generic-host'' che è quello fornito di default in Debian. In seguito provvederemo a creare dei template che permetteranno uan suddivisione degli host in modo semplice ed immediato.
; host_name : l'[[hostname]] dell'host. Deve essere univoco, in quanto viene utilizzato all'interno di Nagios come nome univoco di un host. è buona pratica utilizzare l'hostname della macchina, in quanto permetterà, in seguito, di identificarla più facilmente. In caso di switch od altri componenti conviene identificarli nel seguente modo: '''switch-dmz''', '''firewall-dmz''', etc...
; alias : rappresenta il nome comune dell'host.
; address : l'indirizzo IP dell'host. Deve essere inserito solo l'indirizzo Primario, e non una lista di indirizzi! Se si vogliono monitorare più indirizzi IP o più servizi legati a più indirizzi IP, sarà opportuno o definire un altro host (non molto corretto) oppure aggiungere servizi in cui viene indicato, come parametro, l'indirizzo IP secondario.
 
Oltre a quelli specificati è possibile aggiungere questi parametri (per quelli utilizzati nel template rimando al sottocapitolo dedicato):
; parents <host_names> : permette di indicare, tramite un elenco di host separati da virgola, i "parenti" di quell'host (ad esempio switch, gateway, ecc). Utile per la rappresentazione grafica della struttura della rete
; hostgroups <hostgroup_names> : permette di specificare i gruppi, sempre separati da virgola, a cui appartiene l'host.
 
Come convenzione per la creazione di un host creeremo un file col formato '''/etc/nagios2/conf.d/hosts/hostname.cfg''' dove ''hostname'' va sostituito con l'hostname dell'host definito.
 
=== I Servizi ===
=== I Comandi ===
==== Utilizzare quelli esistenti ====
==== Creare nuovi comandi ====
=== I Gruppi ===
=== I Gruppi di Servizi ===
=== I Contatti ===
=== I Timeperiod ===
=== Le notifiche ===
==== Notifiche via e-mail ====
==== Notifiche via SMS (vodafone) ====
==== Notifiche via SMS (gateway) ====
 
= Varie =
== Nagios Checker ==
Nagios Checker ([https://addons.mozilla.org/it/firefox/addon/3607 Home Page]) è una comoda estensione per Firefox che permette di monitorare, direttamente dal browser, lo stato delle nostre macchine. In caso di problemi verrà mostrato un avviso (in rosso) e verrà riprodotto un suono di allarme. Tramite l'estensione sarà possibile, inoltre, accedere direttamente alla pagina dell'host (o del servizio) che danno problemi per approfondire. Un must!
 
= FAQ =
== Come posso aggiungere un altro utente a Nagios? ==
Per aggiungere un nuovo utente è necessario effettuare due passi:
 
1) creazione dell'account all'interno del file <tt>/etc/nagios2/htpasswd.users</tt>
<pre>
# htpasswd /etc/nagios2/htpasswd.users nomeutente
</pre>
 
2) Inserire l'utente appena creato all'interno della configurazione di Nagios. Per fare questo bisogna modificare il file <tt>/etc/nagios2/cgi.cfg</tt> aggiungendo l'utente appena creato alle seguenti direttive (in base ai permessi che si vogliono dare al nuovo utente):
<pre>
authorized_for_system_information=nagiosadmin
authorized_for_configuration_information=nagiosadmin
authorized_for_system_commands=nagiosadmin
authorized_for_all_services=nagiosadmin
authorized_for_all_hosts=nagiosadmin
#authorized_for_all_services=nagiosadmin,guest
#authorized_for_all_hosts=nagiosadmin,guest
authorized_for_all_service_commands=nagiosadmin
authorized_for_all_host_commands=nagiosadmin
</pre>
 
Dopo le varie modifiche è necessario ricaricare la configurazione di nagios con un
<pre>
# /etc/init.d/nagios2 reload
</pre>