1 487
contributi
m (→Come gestire al meglio i file di configurazione: tip sul controllo dei file di configurazione) |
m (→Gli Host) |
||
Riga 1: | Riga 1: | ||
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. | |||
* | = Installazione = | ||
** | 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). | ||
** | |||
** | Per installare nagios è sufficiente un: | ||
** | <pre> | ||
** | # apt-get install nagios2 nagios2-common nagios-plugins nagios-images nagios-plugins-basic nagios-plugins-standard | ||
** | </pre> | ||
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: | |||
<pre> | |||
# apt-get install apache2 libapache2-mod-php5 | |||
</pre> | |||
= 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> |
contributi