Nagios: monitoraggio infrastruttura IT

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
Guida da adottare! Bannermv.png


Edit-clear-history.png Attenzione. Questa guida è da considerarsi abbandonata, per via del tempo trascorso dall'ultima verifica.

Potrà essere resa obsoleta, previa segnalazione sul forum, se nessuno si propone per l'adozione.


Debian-swirl.png Versioni Compatibili

Debian 5 "lenny"
Debian 6 "squeeze"

Introduzione

Nagios è un sistema di monitoraggio che consente di identificare e risolvere eventuali problematiche di un'infrastruttura IT prima che possano avere conseguenze negative. Nagios è in grado di monitorare apparati di rete, sistemi e servizi; inoltre il sistema dei plugin lo rende versatile ed adattabile ad ogni esigenza di monitoraggio, infatti è possibile anche scrivere plugin personalizzati.

Esistono una versione enterprise chiamata Nagios XI che offre un sistema di monitoraggio completo e già costruito ed una versione Nagios Core che costituisce la base su cui fondare il proprio sistema di monitoring. In Debian 'squeeze' è disponibile la versione 'Core' nel pacchetto nagios3.

Installazione

Come anticipato nell'Introduzione, installiamo Nagios in una Debian 'squeeze'.

~# apt-get install nagios3

Al termine dell'installazione debconf chiede di impostare la password dell' utente nagiosadmin per l'accesso all'interfaccia web http://192.0.2.1/nagios3 oppure http:/mioserver/nagios3 e ovviamente è necessario sostituire opportunamente gli indirizzi a seconda del proprio caso.

Se si ha intenzione di eseguire il monitoraggio di apparati di rete è necessario il seguente pachetto:

~# apt-get install nagios-snmp-plugins

E questo per la documentazione:

~# apt-get install nagios3-doc

Panoramica

L'interfaccia web presenta un menu suddiviso in quattro blocchi:

General
link alla documentazione.
Current Status
accesso allo stato degli host, dei servizi alle problematiche in atto e alla Mappa# mappa.
Reports
report sulla disponibilità di host e servizi, lo storico degli alert e delle notifiche inviate.
System
informazioni sul funzionamento del sistema Nagios.

Inizialmente viene monitorato il solo server su cui è installato Nagios, identificato come localhost, ma per iniziare a monitorare un'infrastruttura IT è necessaria una configurazione.

Configurazione

Esistono due modi di configurare un'installazione Nagios:

  1. editare i file di configurazione siti in /etc/nagios3
  2. utilizzare uno strumento per la configurazione

L'installazione appena effettuata non offre alcuno strumento di configurazione e tra i pacchetti Debian troviamo solo djagios che non raccomanderei, almeno all'attuale stato di sviluppo.

Alcuni tra gli strumenti disponibili al di fuori di Debian sono:

In questa guida ci si riferirà a NagiosQL ed alla modifica diretta dei file di configurazione.

Editare i file di configurazione

I file di configurazione si trovano in /etc/nagios3:

apache2.conf
configurazione relativa al web server apache2.
cgi.cfg
configurazione dell'interfaccia web di Nagios e dei permessi concessi agli utenti.
commands.cfg
file di definizione dei comandi tramite cui eseguire il monitoraggio.
htpasswd.users
username e password degli utenti che possono accedere all'interfaccia web.
nagios.cfg
file di configurazione principale.
resource.cfg
file di definizione delle risorse come ad esempio SNMP community o password da usare nei comandi.

Se è stato installato il pacchetto nagios3-docs, controllare che nel file /etc/nagios3/apache2.conf sia presente index.html dopo index.php

[...]
#Alias /nagios /usr/share/nagios3/htdocs

<DirectoryMatch (/usr/share/nagios3/htdocs|/usr/lib/cgi-bin/nagios3|/etc/nagios3/stylesheets)>
        Options FollowSymLinks

        DirectoryIndex index.php index.html
[...]

Oltre a questi file è presente la directory conf.d in cui è contenuta la configurazione dell'host di esempio localhost che si trova nel file: localhost_nagios2.cfg.

define host{
        use       generic-host   ; Name of host template to use
        host_name localhost
        alias     localhost
        address   127.0.0.1
        }

define service{
        use                 generic-service ; Name of service template to use
        host_name           localhost
        service_description Disk Space
        check_command       check_all_disks!20%!10%
        }
[...]

Le definizioni sono autoesplicative, tuttavia si noti che la direttiva use indica i template a cui fare riferimento: generic-host per gli host e generic-service per i servizi. I template specificano direttive comuni ad una categoria di host in modo da non doverle ripetere in tutte le definizioni.

La direttiva check_all_disks indica il comando da eseguire per controllare lo spazio disco libero del server localhost e gli argomenti separati da ! indicano rispettivamente la soglia di warning e di condizione critical. Ci si aspeterebbe che il comando fosse definito nel file /etc/nagios3/commands.cfg, ma in Debian i comandi relativi ai plugin installati sono specificati all'interno della directory /etc/nagios-plugins/config.

Aggiungere un host

Supponiamo di voler monitorare un router; per aggiungere il nuovo host è sufficiente creare un nuovo file all'interno della directory conf.d ad esempio myrouter.cfg.

define host{
        use       generic-host
        host_name myrouter
        alias     Il mio router
        address   127.0.0.1
        }

Aggiungere un servizio

Non ha senso controllare lo spazio disco di un router, invece monitoriamo il router tramite un servizio PING. Supponendo anche di non conoscere quale comando utilizzare, controlliamo all'interno della directory /etc/nagios-plugins/config per notare il file ping.cfg:

# 'check_ping' command definition
define command{
        command_name    check_ping
        command_line    /usr/lib/nagios/plugins/check_ping -H '$HOSTADDRESS$' -w '$ARG1$' -c '$ARG2$'
        }

$HOSTADDRESS$ è una macro che sostituisce a tempo di esecuzione l'indirizzo dell'host specificato nella sua definizione, $ARG1$ e $ARG2$ sono macro che sostituiscono gli argomenti specificati nella definizione del servizio. A questo punto per capire cosa significhino gli argomenti si esegue il comando:

~# /usr/lib/nagios/plugins/check_ping --help
check_ping v1.4.15 (nagios-plugins 1.4.15)
Copyright (c) 1999 Ethan Galstad <nagios@nagios.org>
Copyright (c) 2000-2007 Nagios Plugin Development Team
	<nagiosplug-devel@lists.sourceforge.net>

Use ping to check connection statistics for a remote host.

Usage:
check_ping -H <host_address> -w <wrta>,<wpl>% -c <crta>,<cpl>%
 [-p packets] [-t timeout] [-4|-6]

Options:
 -h, --help
    Print detailed help screen
 -V, --version
    Print version information
 -4, --use-ipv4
    Use IPv4 connection
 -6, --use-ipv6
    Use IPv6 connection
 -H, --hostname=HOST
    host to ping
 -w, --warning=THRESHOLD
    warning threshold pair
 -c, --critical=THRESHOLD
    critical threshold pair
 -p, --packets=INTEGER
    number of ICMP ECHO packets to send (Default: 5)
 -L, --link
    show HTML in the plugin output (obsoleted by urlize)
 -t, --timeout=INTEGER
    Seconds before connection times out (default: 10)

THRESHOLD is <rta>,<pl>% where <rta> is the round trip average travel
time (ms) which triggers a WARNING or CRITICAL state, and <pl> is the
percentage of packet loss to trigger an alarm state.

This plugin uses the ping command to probe the specified host for packet loss
(percentage) and round trip average (milliseconds). It can produce HTML output
linking to a traceroute CGI contributed by Ian Cass. The CGI can be found in
the contrib area of the downloads section at http://www.nagios.org/
[...]

È utile farlo per qualsiasi plugin che possa essere utile. Ritornando all'esempio, aggiungere al file /etc/nagios3/conf.d/myrouter.cfg:

define service{
        use                 generic-service
        host_name           myrouter
        service_description PING
        check_command       check_ping!200,10%!350,20%
        }

Aggiungere gruppi

Definiamo un nuovo gruppo in cui inserire tutti gli apparati di rete modificando il file /etc/nagios3/conf.d/hostgroups_nagios2.cfg:

define hostgroup {
        hostgroup_name  network-devices
                alias           Network Devices
                members         myrouter
        }

I gruppi servono per separare logicamente gli apparati che compongono l'infrastruttura IT, in modo da visualizzarli più facilmente nell'interfaccia web di Nagios.

Modificare i contatti

I contatti definiscono le risorse a cui inviare gli avvisi, in modo che le eventuali problematiche siano prese in gestione e risolte. Il file /etc/nagios3/conf.d/contacts_nagios2.cfg contiene la definizione dei contatti.

define contact{
        contact_name                    root
        alias                           Root
        service_notification_period     24x7
        host_notification_period        24x7
        service_notification_options    w,u,c,r
        host_notification_options       d,r
        service_notification_commands   notify-service-by-email
        host_notification_commands      notify-host-by-email
        email                           root@localhost
        }

In questo caso gli alert relativi ai servizi e agli host sono inviati via email 24x7 a root@localhost. Gli avvisi sono inviati quando un servizio si trova in stato di WARNING, UNKNOWN, CRITICAL e RECOVERY o quando un host si trova in stato di DOWN o RECOVERY.

Applicazione della nuova configurazione

Ora è necessario ricaricare la configurazione, ma prima è opportuno controllare di non avere introdotto errori di configurazione:

# nagios3 -v /etc/nagios3/nagios.conf
[...]
Total Warnings: 0
Total Errors:   0

e quindi procedere eseguendo:

/etc/init.d/nagios3 reload
Reloading nagios3 monitoring daemon configuration files: nagios3.




Guida scritta da: Nicsar Swirl-auth20.png Debianized 20%
Estesa da:
Verificata da:

Verificare ed estendere la guida | Cos'è una guida Debianized