Monitoraggio passivo di sistemi con Nagios: Difference between revisions
mNo edit summary |
|||
| Line 153: | Line 153: | ||
== Monitoraggio tramite il solo client nsca == | == Monitoraggio tramite il solo client nsca == | ||
==Installazione Server== | |||
* Installare il demone nsca sul server nagios, ed impostarlo allo startup: | |||
sudo apt-get install nsca | |||
{{ | <pre> | ||
Should the nsca daemon be enabled by default? │ | |||
│ │ | |||
│ <Yes> | |||
</pre> | |||
* Configurare i parametri: | |||
sudoedit /etc/nsca.cfg | |||
password=SecretPassword | |||
debug=1 | |||
* Avviare il daemon: | |||
sudo invoke-rc.d nsca restart | |||
* Verificare che sia in ascolto: | |||
sudo netstat -anp | grep 5667 | |||
tcp 0 0 0.0.0.0:5667 0.0.0.0:* LISTEN 31508/nsca | |||
* Sbloccare la porta di ingresso 5667 in iptables | |||
* Verificare che il server nagios abbia i parametri per i passive check abilitati: | |||
sudoedit /etc/nagios3/nagios.cfg | |||
check_external_commands=1 | |||
command_check_interval=-1 | |||
log_passive_checks=1 | |||
accept_passive_service_checks=1 | |||
accept_passive_host_checks=1 | |||
* Nel caso, restartare nagios | |||
====Test nsca daemon==== | |||
Sul server, impostare i paramentri del client per effettuare un test: | |||
sudoedit /etc/send_nsca.cfg | |||
password=SecretPassword | |||
* Creare un file con un messaggio di test, '''SEPARANDO GLI ARGOMENTI CON TAB''': | |||
vi /tmp/testfile | |||
localhost TestMessage 0 This is a test message. | |||
* Provare ad inviare il test: | |||
send_nsca localhost -c /etc/send_nsca.cfg < /tmp/testfile | |||
* Si deve ottenere la risposta: | |||
1 data packet(s) sent to host successfully. | |||
* E nel syslog: | |||
<pre> | |||
Feb 25 12:58:58 myhost nsca[6108]: Connection from 127.0.0.1 port 23171 | |||
Feb 25 12:58:58 myhost nsca[6108]: Handling the connection... | |||
Feb 25 12:58:58 myhost nsca[6108]: SERVICE CHECK -> Host Name: 'localhost', Service Description: 'TestMessage', Return Code: '0', Output: 'This is a test message.' | |||
Feb 25 12:58:58 myhost nsca[6108]: End of connection... | |||
</pre> | |||
====Servizio passivo di esempio==== | |||
* Definiamo prima i comandi a supporto: | |||
sudoedit /etc/nagios3/conf.d/commands.cfg | |||
<pre> | |||
define command{ | |||
command_name check_dummy | |||
command_line $USER1$/check_dummy $ARG1$ | |||
} | |||
</pre> | |||
* Definiamo ora il servizio passivo : | |||
sudoedit /etc/nagios3/conf.d/example.cfg | |||
<pre> | |||
define service{ | |||
use generic-service | |||
host_name myclient | |||
service_description MYSERVICE | |||
active_checks_enabled 0 | |||
passive_checks_enabled 1 | |||
check_command check_dummy!0 | |||
} | |||
</pre> | |||
* Restartare nagios e verificare che il servizio creato sia in stato | |||
PENDING | |||
* Testare ora in locale come fatto in precedenza, ma con un file con i dati del servizio: | |||
vi /tmp/testfile | |||
myclient MYSERVICE 0 This is a test message. | |||
send_nsca localhost -c /etc/send_nsca.cfg < /tmp/testfile | |||
* Ora il servizio dovrebbe essere in | |||
OK | |||
* Cambiamo lo 0 in 1, e inviamo il check | |||
myclient MYSERVICE 1 This is a test message. | |||
send_nsca localhost -c /etc/send_nsca.cfg < /tmp/testfile | |||
* Ora sarà in | |||
WARNING | |||
====Scadenza del check passivo==== | |||
* n questo modo, il servizio rimarrà nel suo stato, sino a che non verrà di nuovo inviato. Se però vogliamofare in modo che dopo un intervallo di tempo "scada", impostiamo la soglia di scadenza alla quale lo stato verrà forzato in critical | |||
sudoedit /etc/nagios3/conf.d/example.cfg | |||
<pre> | |||
define service{ | |||
use generic-service | |||
host_name myclient | |||
service_description MYSERVICE | |||
active_checks_enabled 0 | |||
passive_checks_enabled 1 | |||
check_freshness 1 | |||
freshness_threshold 60 # Time in second it will recheck and if not get result will alert as Critical | |||
check_command check_dummy!2!"Didn't not got the response from Passive Check (Please Check)" | |||
} | |||
</pre> | |||
* Attendere i 60 secondi, ed il servizio andrà in | |||
CRITICAL | |||
==Riferimenti== | ==Riferimenti== | ||
Revision as of 15:34, 25 February 2015
| Attenzione questo articolo è ancora incompleto. Sentiti libero di contribuire cliccando sul tasto edit. |
Si vuole monitorare una macchina che non è direttamente raggiungibile da nagios, che è solo in grado di inviare risultati.
Monitoraggio tramite un'istanza locale di nagios
Il "Server_A" è la console centrale di nagios.
Il "Server_B" è la macchina da monitorare, o quella che farà i veri controlli.
Installazione pacchetti
Installare nagios sul Server_B:
sudo apt-get install nagios-text nsca
Configurazione di nagios
Dire al Server_B che deve comunicare i suoi risultati ad un server esterno, tramite un comando che definiamo noi:
sudoedit /etc/nagios/nagios.cfg ... obsess_over_services=1 ... ocsp_command=submit_custom_check_result ...
Creazione del file di invio dei check results
Creare il file submit_custom_check_result.
Tale file è richiamato ogni volta che si ha un risultato di un check, ed il check viene inviato al Server_A (support.rvmgroup.it)
cat >> /usr/lib/nagios/plugins/eventhandlers/submit_custom_check_result <<'EOFile'' #!/bin/sh # Arguments: # $1 = <host_name> # $2 = <svc_description> # $3 = <return_code> # $4 = <plugin_output> # # pipe the service check info into the send_nsca program, which # in turn transmits the data to the nsca daemon on the central monitoring server /usr/bin/printf "%s\t%s\t%s\t%s\n" "$1" "$2" "$3" "$4" | /usr/sbin/send_nsca -H support.rvmgroup.it -c /etc/send_nsca.cfg #echo $@ > /tmp/send_debug #<host_name>[tab]<svc_description>[tab]<return_code>[tab]<plugin_output>[newline] #lemserver PING OK 'Stato Servizio DOK' EOFile
Renderlo eseguibile e sistemare le permission:
sudo chmod +x /usr/lib/nagios/plugins/eventhandlers/submit_custom_check_result sudo chown root: /usr/lib/nagios/plugins/eventhandlers/submit_custom_check_result
Definizione dei servizi Attivi
Definire l'host:
define host{
use generic-host ; Name of host template to use
host_name lemserver
alias LEM Server
address 127.0.0.1
max_check_attempts 20
notification_interval 60
notification_period 24x7
notification_options d,u,r
}
Sul Server_B definire normalmente i servizi da monitorare e verificarne il corretto funzionamento, avendo cura di aggiungere per i servizi che devono essere mandati al Server_A:
passive_checks_enabled 1 obsess_over_service 1
define service{
use generic-service ; Name of service template to use
host_name lemserver
service_description PING
is_volatile 0
check_period 24x7
max_check_attempts 3
normal_check_interval 5
retry_check_interval 1
contact_groups router-admins
notification_interval 240
notification_period 24x7
notification_options c,r
check_command check_ping!100.0,20%!500.0,60%
active_checks_enabled 1
passive_checks_enabled 1
obsess_over_service 1
}
Se un servizio non deve essere mandato al Server_A, metterci la direttiva:
- non è vero, li manda sempre tutti
passive_checks_enabled 0 obsess_over_service 0
Definizione dei servizi passivi
Sul Server_A definire l'host senza indirizzo:
define host{
use generic-host
host_name lemserver
alias LEMServer
parents fire.leman.it
}
Occorre solo ridefinire gli stessi servizi definiti sul Server_B, avendo cura di sostituire/aggiungere:
define service{
use generic-service
host_name lemserver
service_description PING
passive_checks_enabled 1
active_checks_enabled 1
check_freshness 1
check_command check_dummy!1
check_period none
}
In questo modo verificando la freshenss del risultato, se non lo è, si esegue il check attivo dummy, con parametro 1 che dà un errore critico. L'intervallo di freshness può essere impostato a poco più del check interval sul Server_B, usando sul Server_A l'opzione:
- verificare
freshness_theresold
(se non si mette active_checks enabled, nella tactical overview, si ha il servizio come disabilitato.)
Riavviare nagios, e verificare nagios.log.
Per i servizi non replicati sul Server_A, si avrà un warning:
[1165628960] Warning: Message queue contained results for service 'PING' on host 'lemgateway'. The service could not be found!
Pazienza.
Monitoraggio tramite il solo client nsca
Installazione Server
- Installare il demone nsca sul server nagios, ed impostarlo allo startup:
sudo apt-get install nsca
Should the nsca daemon be enabled by default? │ │ │ │ <Yes>
- Configurare i parametri:
sudoedit /etc/nsca.cfg
password=SecretPassword debug=1
- Avviare il daemon:
sudo invoke-rc.d nsca restart
- Verificare che sia in ascolto:
sudo netstat -anp | grep 5667
tcp 0 0 0.0.0.0:5667 0.0.0.0:* LISTEN 31508/nsca
- Sbloccare la porta di ingresso 5667 in iptables
- Verificare che il server nagios abbia i parametri per i passive check abilitati:
sudoedit /etc/nagios3/nagios.cfg
check_external_commands=1 command_check_interval=-1 log_passive_checks=1 accept_passive_service_checks=1 accept_passive_host_checks=1
- Nel caso, restartare nagios
Test nsca daemon
Sul server, impostare i paramentri del client per effettuare un test:
sudoedit /etc/send_nsca.cfg
password=SecretPassword
- Creare un file con un messaggio di test, SEPARANDO GLI ARGOMENTI CON TAB:
vi /tmp/testfile
localhost TestMessage 0 This is a test message.
- Provare ad inviare il test:
send_nsca localhost -c /etc/send_nsca.cfg < /tmp/testfile
- Si deve ottenere la risposta:
1 data packet(s) sent to host successfully.
- E nel syslog:
Feb 25 12:58:58 myhost nsca[6108]: Connection from 127.0.0.1 port 23171 Feb 25 12:58:58 myhost nsca[6108]: Handling the connection... Feb 25 12:58:58 myhost nsca[6108]: SERVICE CHECK -> Host Name: 'localhost', Service Description: 'TestMessage', Return Code: '0', Output: 'This is a test message.' Feb 25 12:58:58 myhost nsca[6108]: End of connection...
Servizio passivo di esempio
- Definiamo prima i comandi a supporto:
sudoedit /etc/nagios3/conf.d/commands.cfg
define command{
command_name check_dummy
command_line $USER1$/check_dummy $ARG1$
}
- Definiamo ora il servizio passivo :
sudoedit /etc/nagios3/conf.d/example.cfg
define service{
use generic-service
host_name myclient
service_description MYSERVICE
active_checks_enabled 0
passive_checks_enabled 1
check_command check_dummy!0
}
- Restartare nagios e verificare che il servizio creato sia in stato
PENDING
- Testare ora in locale come fatto in precedenza, ma con un file con i dati del servizio:
vi /tmp/testfile
myclient MYSERVICE 0 This is a test message.
send_nsca localhost -c /etc/send_nsca.cfg < /tmp/testfile
- Ora il servizio dovrebbe essere in
OK
- Cambiamo lo 0 in 1, e inviamo il check
myclient MYSERVICE 1 This is a test message.
send_nsca localhost -c /etc/send_nsca.cfg < /tmp/testfile
- Ora sarà in
WARNING
Scadenza del check passivo
- n questo modo, il servizio rimarrà nel suo stato, sino a che non verrà di nuovo inviato. Se però vogliamofare in modo che dopo un intervallo di tempo "scada", impostiamo la soglia di scadenza alla quale lo stato verrà forzato in critical
sudoedit /etc/nagios3/conf.d/example.cfg
define service{
use generic-service
host_name myclient
service_description MYSERVICE
active_checks_enabled 0
passive_checks_enabled 1
check_freshness 1
freshness_threshold 60 # Time in second it will recheck and if not get result will alert as Critical
check_command check_dummy!2!"Didn't not got the response from Passive Check (Please Check)"
}
- Attendere i 60 secondi, ed il servizio andrà in
CRITICAL