Monitoraggio di sistemi con Nagios: Difference between revisions

From RVM Wiki
Jump to navigation Jump to search
No edit summary
 
No edit summary
Line 187: Line 187:
'''ATTENZIONE''': non usare mail il comando ''''check-ping'''' che fa 4 ping perchè porta l'uso della CPU al 100%. Usare il check-host-alive che ne fa uno solo.
'''ATTENZIONE''': non usare mail il comando ''''check-ping'''' che fa 4 ping perchè porta l'uso della CPU al 100%. Usare il check-host-alive che ne fa uno solo.


'''ATTENZIONE''': se inizialmente non si era definito le notifiche attive per un servizio, anche se poi si abilitano nel file di config, rimarranno disabilitate.
Occorre abilitarle a mano via web


== Verifica configurazione ed attivazione modifiche ==
== Verifica configurazione ed attivazione modifiche ==
Line 206: Line 209:
Ora si dovrebbe vedere l'host corretto.
Ora si dovrebbe vedere l'host corretto.
VERIFICARE: la notifica dei servizi è disabilitata da web perchè viene attivata se un servizio fallisce, e l'host è attivo, viene abilitata. Oppure si deve abilitare via web ?
VERIFICARE: la notifica dei servizi è disabilitata da web perchè viene attivata se un servizio fallisce, e l'host è attivo, viene abilitata. Oppure si deve abilitare via web ?
== Creare una status map che mostri come gli host sono disposti ==
Se si vuole avere una mappa che mostri come gli host sono disposti, bisogna definire una relazione di parentela.
Se si ha una situazione del genere:
(Server_LanA)----->(router)-------->(Server_LanB)
Gli host possono essere definti come:
<pre>
define host{
        use                    generic-host            ; Name of host template to use
        host_name              Server_LanA
        }
define host{
        use                    generic-host            ; Name of host template to use
        host_name              router
        parents                Server_LanA
        }
define host{
        use                    generic-host            ; Name of host template to use
        host_name              Server_LanB
        parents                router
        }
</pre>
In questo modo la status map via web, disegnerà gli host nella maniera in cui sono collegati.
=== Assegnazione di icone ed informazioni agli host nella statusmap ===
Se si vuole associare un'icona ad ogni host, bisogna prima scaricare le icone (preferibilmente in formato gd2) e metterle in /usr/share/nagios/htdocs/images/logos/.
Vedi [http://nagios.org/faqs/viewfaq.php?faq_id=46&expand=true&showdesc=true Nagios: FAQs : How do I beautify the CGIs with host and service icons?]
Aggiungere in cgi.cfg :
<pre>
sudoedit /etc/nagios/cgi.cfg
...
# EXTENDED HOST INFORMATION
xedtemplate_config_file=/etc/nagios/hostextinfo.cfg
...
</pre>
Poi bisogna definire le Informazioni Host Estese, vedi [https://extranet.galimberti.net/nagios/docs/xedtemplate.html#hostextinfo Extended Host Information Definition]:
<pre>
sudoedit /etc/nagios/hostextinfo.cfg
define hostextinfo{
host_name netware1
notes This is the primary Netware file server
notes_url http://webserver.localhost.localdomain/hostinfo.pl?host=netware1
icon_image novell40.png
icon_image_alt IntranetWare 4.11
vrml_image novell40.png
statusmap_image novell40.gd2
2d_coords 100,250
3d_coords 100.0,50.0,75.0
}
</pre>


== Riferimenti ==
== Riferimenti ==
Line 211: Line 279:
*[http://www.debian-administration.org/articles/299 Debian Administration :: Using Nagios to Monitor Network]
*[http://www.debian-administration.org/articles/299 Debian Administration :: Using Nagios to Monitor Network]
*[http://homepage.mac.com/duling/halfdozen/Nagios-Howto-p1.html Nagios HOWTO for OS X - Part 1]
*[http://homepage.mac.com/duling/halfdozen/Nagios-Howto-p1.html Nagios HOWTO for OS X - Part 1]
*[http://nagios.org/faqs/viewfaq.php?faq_id=145 Nagios: FAQs : Host dependencies versus parent/child relationships]

Revision as of 18:58, 16 November 2006

Nagios permette di monitorare lo stato di connessioni di rete, host e servizi.

Installazione

apt-get install nagios-text

Scegliere tutti i default,e consentire la configurazione automatica del web server desiderato.

Inserire la password per l'utente nagiosadmin

Se la configurazione del web server è standard, sarà già possibile accedere via web tramite

http[s]://hostname/nagios

Di default la configurazione monitorerà tramite ping il default gateway chiamandolo "gw".

Attendere circa 5 minuti, oppure via web schedulare un check immediato, per verificare che riesca a monitorare l'ip del default gateway.


Modifica valori de default

Impostare il formato data Europeo:

sudoedit /etc/nagios/nagios.cfg

date_format=euro

Impostare l'indirizzo email del mittente per le notifiche:

sudoedit /etc/nagios/nagios.cfg

admin_email=nagios@galimberti.net

Definizione dei Contatti per le Notifiche

Se ci sono problemi, nagios può avvertire (non solo via email, ma anche in altri modi) un elenco di contatti.

Definiamo i contatti email

sudoedit contacts.cfg

define contact{
        contact_name                    gabriele.vivinetto
        alias                           Gabriele Vivinetto
        service_notification_period     24x7
        host_notification_period        24x7
        service_notification_options    w,u,c,r
        host_notification_options       d,u,r
        service_notification_commands   notify-by-email
        host_notification_commands      host-notify-by-email
        email                           gabriele.vivinetto@rvmgroup.it
        }

Nagios permette di notificare a dei gruppi, quindi inseriamo il contatto in un gruppo:

sudoedit contactgroups.cfg

define contactgroup{
        contactgroup_name       nagios-admins
        alias                   Nagios Administrators
        members                 gabriele.vivinetto
        }

Se si vogliono aggiungere dei contatti, separarli da virgola.

Definizione degli oggetti da monitorare

Prima di tutto si definiscono gli oggetti da monitorare (macchine, router, switch, etc...).

Questi host vengono monitorati per sapere se sono raggiungibili tramite un comando (tipicamente può essere un ping, ma si può definire un qualsiasi metodo). Tale comando di monitoraggio informa solo se l'oggetto è UP o DOWN, cioè ritorna un solo un valore 0 o 1.

Cancelliamo la definizione del default gateway, e sostituiamola con quanto di seguito.

Per comodità definiamo un template con dei valori standard, che poi useremo per tutti gli host che vorremo monitorare in questo modo:

define host{
        name                            generic-host    ; The name of this host
        notifications_enabled           1       ; Host notifications are enabled
        event_handler_enabled           0       ; Host event handler is disabled
        flap_detection_enabled          0       ; Flap detection is disabled
        process_perf_data               1       ; Process performance data
        retain_status_information       1       ; Retain status information acro
        retain_nonstatus_information    1       ; Retain non-status information
        check_command                   check-host-alive
        max_check_attempts              20
        notification_interval           60
        notification_period             24x7
        notification_options            d,u,r

        register                        0       ; DONT REGISTER THIS DEFINITION
        }

Ora definiamo il default gateway, dicendogli di usare questo template:

define host{
        use                     generic-host            ; Name of host template

        host_name               fireuf
        alias                   Ufficio Limbiate - Lan
        address                 192.168.0.254
        }

Ora dobbiamo assegnare questo host ad un gruppo. Possiamo aggregare per locazione, funzione, tipologia, quello che vogliamo:

define hostgroup{
        hostgroup_name  UF
        alias           Ufficio Limbiate
        contact_groups  nagios-admins
        members         fireuf
        }

Anche qui, ulteriori membri devono essere separati da virgola.

Definizione dei servizi da monitorare

Una volta che un host è UP, si monitora anche lo stato di questo host, verificandone dei servizi.

NOTE: Nagios is service centric, so if you use host checks just remember that host checks are only performed after a service check fails for a given host. This means you must check at least one service on every host even if you really only want host checks for some hosts.

Il primo servizio da monitorare è la qualità della connessione, che viene fatto solitamente valutando i tempi di risposta di un ping.

Definiamo prima un template per i servizi standard:

 sudoedit /etc/nagios/services.cgf

define service{
        ; The 'name' of this service template, referenced in other service definitions
        name                            generic-service
        active_checks_enabled           1       ; Active service checks are enabled
        passive_checks_enabled          0       ; Passive service checks are enabled/disabled
        parallelize_check               1       ; Active service checks should be parallelized
                                                ; (disabling this can lead to major performance problems)
        obsess_over_service             1       ; We should obsess over this service (if necessary)
        check_freshness                 0       ; Default is to NOT check service 'freshness'
        notifications_enabled           1       ; Service notifications are enabled
        event_handler_enabled           0       ; Service event handler is disabled
        flap_detection_enabled          0       ; Flap detection is disabled
        process_perf_data               1       ; Process performance data
        retain_status_information       1       ; Retain status information across program restarts
        retain_nonstatus_information    1       ; Retain non-status information across program restarts

        is_volatile                     0
        check_period                    24x7
        max_check_attempts              3
        normal_check_interval           5
        retry_check_interval            1
        contact_groups                  nagios-admins
        notification_interval           240
        notification_period             24x7
        notification_options            w,c,r,u

        register                        0       ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL SERVICE, JUST A TEMPLATE!
        }

Ora definiamo come monitorare la qualità del ping il nostro default gateway:

sudoedit /etc/nagios/services.cgf

define service{
        use                             generic-service         ; Name of service template to use

        host_name                       fireuf
        service_description             PING

        check_command                   check-host-alive!100.0,20%!500.0,60%
        }

I parametri che seguono il comando dopo i "!" sono le soglie di warning e critical che fanno scattare la notifica.

ATTENZIONE: non usare mail il comando 'check-ping' che fa 4 ping perchè porta l'uso della CPU al 100%. Usare il check-host-alive che ne fa uno solo.

ATTENZIONE: se inizialmente non si era definito le notifiche attive per un servizio, anche se poi si abilitano nel file di config, rimarranno disabilitate.

Occorre abilitarle a mano via web

Verifica configurazione ed attivazione modifiche

Verificare la configurazione:

sudo nagios -v /etc/nagios/nagios.cfg | less
...
Total Warnings: 0
Total Errors:   0

Things look okay - No serious problems were detected during the pre-flight check

Se non vengono dati errori o warning, riavviare nagios:

sudo /etc/init.d/nagios restart

Ora si dovrebbe vedere l'host corretto. VERIFICARE: la notifica dei servizi è disabilitata da web perchè viene attivata se un servizio fallisce, e l'host è attivo, viene abilitata. Oppure si deve abilitare via web ?

Creare una status map che mostri come gli host sono disposti

Se si vuole avere una mappa che mostri come gli host sono disposti, bisogna definire una relazione di parentela.

Se si ha una situazione del genere:

(Server_LanA)----->(router)-------->(Server_LanB)

Gli host possono essere definti come:

define host{
        use                     generic-host            ; Name of host template to use
        host_name               Server_LanA
        }

define host{
        use                     generic-host            ; Name of host template to use
        host_name               router
        parents                 Server_LanA
        }

define host{
        use                     generic-host            ; Name of host template to use
        host_name               Server_LanB
        parents                 router
        }

In questo modo la status map via web, disegnerà gli host nella maniera in cui sono collegati.

Assegnazione di icone ed informazioni agli host nella statusmap

Se si vuole associare un'icona ad ogni host, bisogna prima scaricare le icone (preferibilmente in formato gd2) e metterle in /usr/share/nagios/htdocs/images/logos/. Vedi Nagios: FAQs : How do I beautify the CGIs with host and service icons?

Aggiungere in cgi.cfg :

sudoedit /etc/nagios/cgi.cfg

...
# EXTENDED HOST INFORMATION
xedtemplate_config_file=/etc/nagios/hostextinfo.cfg
...

Poi bisogna definire le Informazioni Host Estese, vedi Extended Host Information Definition:

sudoedit /etc/nagios/hostextinfo.cfg
define hostextinfo{
	host_name	netware1
	notes		This is the primary Netware file server
	notes_url	http://webserver.localhost.localdomain/hostinfo.pl?host=netware1
	icon_image	novell40.png 
	icon_image_alt	IntranetWare 4.11
	vrml_image	novell40.png
	statusmap_image	novell40.gd2
	2d_coords	100,250
	3d_coords	100.0,50.0,75.0
	}


Riferimenti