Monitoraggio Server · 6 min read · Oct 18, 2025

Monitoraggio del Server Con Icinga Su Debian Squeeze - Pagina 3

4 Aggiungere Un Server Remoto (server2) A Icinga

Monitorare localhost è bello, ma naturalmente sarebbe ancora meglio se potessimo monitorare tutti i nostri server in un’unica posizione. Questo è possibile con Icinga, e questo capitolo descrive come possiamo aggiungere il nostro secondo server Debian Squeeze (server2.example.com) alla configurazione.

Per fare ciò, dobbiamo installare il server Nagios NRPE (Nagios Remote Plugin Executor) su server2 e il plugin Nagios NRPE su server1. Il server NRPE ascolterà su server2; server1 si connetterà ad esso utilizzando il plugin NRPE e passerà comandi che il server NRPE eseguirà su server2; restituirà i risultati a server1.

Prima installiamo il pacchetto nagios-nrpe-plugin su server1:

server1:

apt-get install nagios-nrpe-plugin

Password di amministrazione web di Nagios: <– nagiosadmin_password
Conferma password: <– nagiosadmin_password

Ora andiamo su server2:

server2:

Installa il pacchetto nagios-nrpe-server:

apt-get install nagios-nrpe-server

Nome del gruppo di lavoro/dominio: <– WORKGROUP

Ora apri /etc/nagios/nrpe.cfg:

vi /etc/nagios/nrpe.cfg

Dobbiamo configurare il server NRPE per consentire a server1 (IP: 192.168.0.100) di connettersi, quindi aggiungiamo 192.168.0.100 alla riga allowed_hosts:

| [...] # INDIRIZZI HOST CONSENTITI # Questa è un'opzionale lista delimitata da virgole di indirizzi IP o nomi host # che sono autorizzati a comunicare con il demone NRPE. # # Nota: Il demone esegue solo un controllo rudimentale dell'IP del client. # Consiglierei vivamente di aggiungere voci nel tuo file /etc/hosts.allow # per consentire solo all'host specificato di connettersi alla porta # su cui stai eseguendo questo demone. # # NOTA: Questa opzione viene ignorata se NRPE è in esecuzione sotto inetd o xinetd allowed_hosts=127.0.0.1,192.168.0.100 [...] |

(Se non lo fai, riceverai il seguente errore quando esegui

/usr/lib/nagios/plugins/check_nrpe -H 192.168.0.101

su server1:

root@server1:/etc/nagios-plugins/config# /usr/lib/nagios/plugins/check_nrpe -H 192.168.0.101  
CHECK_NRPE: Errore - Impossibile completare il handshake SSL.  
root@server1:/etc/nagios-plugins/config#

)

Inoltre, server1 deve essere autorizzato a passare argomenti da riga di comando al server NRPE, quindi sempre nello stesso file impostiamo dont_blame_nrpe su 1:

| [...] # PROCESSAMENTO DEGLI ARGOMENTI DEI COMANDI # Questa opzione determina se il demone NRPE consentirà ai client # di specificare argomenti ai comandi che vengono eseguiti. Questa opzione funziona solo # se il demone è stato configurato con l'opzione dello script di configurazione --enable-command-args. # # * ABILITARE QUESTA OPZIONE È UN RISCHIO PER LA SICUREZZA! * # Leggi il file SECURITY per informazioni su alcune delle implicazioni di sicurezza # dell'abilitazione di questa variabile. # # Valori: 0=non consentire argomenti, 1=consentire argomenti ai comandi dont_blame_nrpe=1 [...] |

(Se non lo fai, vedrai l’errore

CHECK_NRPE: Ricevuti 0 byte dal demone. Controlla i log del server remoto per messaggi di errore.

per molti controlli di servizio remoti nell’interfaccia web di Icinga, e in /var/log/syslog su server2 vedrai questi errori:

Aug 23 14:20:20 server2 nrpe[11496]: Errore: La richiesta conteneva argomenti di comando, ma l'opzione degli argomenti non è abilitata!  
Aug 23 14:20:20 server2 nrpe[11496]: La richiesta del client non era valida, uscita...

)

Infine dobbiamo aggiungere definizioni di comando per ogni controllo di servizio che vogliamo eseguire su server2 e che non è già definito. Voglio eseguire i controlli check_procs, check_all_disks e check_mysql_cmdlinecred su server2; questi non sono definiti in /etc/nagios/nrpe.cfg, quindi li aggiungo ora (voglio anche eseguire i controlli check_users e check_load, ma questi sono già definiti):

| [...] command[check_procs]=/usr/lib/nagios/plugins/check_procs -w 250 -c 400 command[check_all_disks]=/usr/lib/nagios/plugins/check_disk -w '20%' -c '10%' -e command[check_mysql_cmdlinecred]=/usr/lib/nagios/plugins/check_mysql -H localhost -u 'nagios' -p 'howtoforge' [...] |

(Se non lo fai, riceverai errori come

NRPE: Comando 'check_all_disks' non definito  
NRPE: Comando 'check_mysql_cmdlinecred' non definito  
NRPE: Comando 'check_procs' non definito

nell’interfaccia web di Icinga.)

Come puoi vedere, ho codificato gli argomenti della riga di comando perché utilizzare variabili come command[check_procs]=/usr/lib/nagios/plugins/check_procs -w $ARG1$ -c $ARG2$ non ha funzionato per me. Ma comunque, quando configuriamo i controlli di servizio per server2 su server1, dovremo passare argomenti della riga di comando a questi controlli; server2 ignorerà questi perché ho codificato gli argomenti della riga di comando in /etc/nagios/nrpe.cfg, ma se li lasci fuori, riceverai errori come /usr/lib/nagios/plugins/check_nrpe: l’opzione richiede un argomento – ‘a’ nell’interfaccia web di Icinga.

Ora salva il file e riavvia il server NRPE:

/etc/init.d/nagios-nrpe-server restart

Ora controlla se il server NRPE sta ascoltando:

netstat -tap | grep nrpe
root@server2:~# netstat -tap | grep nrpe  
tcp        0      0 *:nrpe                  *:*                     LISTEN      2132/nrpe  
root@server2:~#

Ora torna su server1…

server1:

… e controlla se può connettersi al server NRPE su server2:

/usr/lib/nagios/plugins/check_nrpe -H 192.168.0.101

L’output dovrebbe essere il seguente in caso di successo:

root@server1:~# /usr/lib/nagios/plugins/check_nrpe -H 192.168.0.101  
NRPE v2.12  
root@server1:~#

Ora torna su server2:

server2:

Vogliamo controllare MySQL su server2; poiché utilizziamo il demone NRPE, possiamo eseguire il controllo localmente su server2, cioè non dobbiamo aprire MySQL all’esterno per consentire a server1 di eseguire il controllo. Pertanto creo l’utente MySQL nagios per localhost e localhost.localdomain invece di per 192.168.0.100 e server1.example.com:

mysql -u root -p
GRANT USAGE ON *.* TO nagios@localhost IDENTIFIED BY 'howtoforge';  
GRANT USAGE ON *.* TO [email protected] IDENTIFIED BY 'howtoforge';  
FLUSH PRIVILEGES;
quit;

Ora torniamo su server1…

server1:

… e creiamo la configurazione di Icinga per server2:

vi /etc/icinga/objects/server2_icinga.cfg

| define host{ use generic-host host_name server2.example.com alias server2 address 192.168.0.101 } define service{ use generic-service host_name server2.example.com service_description PING check_command check_ping!100.0,20%!500.0,60% } define service{ use generic-service ; Nome del template di servizio da utilizzare host_name server2.example.com service_description Spazio Disco check_command check_nrpe!check_all_disks!20%!10% } define service{ use generic-service host_name server2.example.com service_description Utenti Correnti check_command check_nrpe!check_users!20!50 } define service{ use generic-service ; Nome del template di servizio da utilizzare host_name server2.example.com service_description Processi Totali check_command check_nrpe!check_procs!250!400 } define service{ use generic-service ; Nome del template di servizio da utilizzare host_name server2.example.com service_description Carico Corrente check_command check_nrpe!check_load!5.0!4.0!3.0!10.0!6.0!4.0 } define service{ use generic-service host_name server2.example.com service_description MySQL check_command check_nrpe!check_mysql_cmdlinecred!nagios!howtoforge } define service{ use generic-service host_name server2.example.com service_description SMTP check_command check_smtp } define service{ use generic-service host_name server2.example.com service_description POP3 check_command check_pop } define service{ use generic-service host_name server2.example.com service_description IMAP check_command check_imap } |

(Come ho già detto, anche se ho codificato gli argomenti della riga di comando per alcuni comandi in /etc/nagios/nrpe.cfg su server2, dobbiamo comunque aggiungere argomenti della riga di comando a certi controlli qui.)

Come puoi vedere, utilizzo check_nrpe per alcuni controlli e passo il controllo effettivo (come check_all_disks) come argomento della riga di comando a check_nrpe. Questi sono i controlli che verranno eseguiti localmente dal server NRPE su server2. check_nrpe non è necessario per tutti i controlli. I controlli che testano una connessione dall’esterno come check_ping o check_smtp possono essere eseguiti da server1.

Per controllare i servizi SSH e HTTP su server2, possiamo O aggiungere i seguenti stanzas a /etc/icinga/objects/server2_icinga.cfg…

| [...] define service { use generic-service host_name server2.example.com service_description SSH check_command check_ssh } define service { use generic-service host_name server2.example.com service_description HTTP check_command check_http } |

O aggiungiamo server2.example.com ai gruppi host http-servers e ssh-servers in /etc/icinga/objects/hostgroups_icinga.cfg:

vi /etc/icinga/objects/hostgroups_icinga.cfg

| # Alcune definizioni generiche di gruppi host # Un semplice gruppo host con caratteri jolly define hostgroup { hostgroup_name all alias Tutti i Server members * } # Un elenco dei tuoi server Debian GNU/Linux define hostgroup { hostgroup_name debian-servers alias Server Debian GNU/Linux members localhost,server2.example.com } # Un elenco dei tuoi server web define hostgroup { hostgroup_name http-servers alias server HTTP members localhost,server2.example.com } # Un elenco dei tuoi server accessibili tramite ssh define hostgroup { hostgroup_name ssh-servers alias server SSH members localhost,server2.example.com } |

Riavvia Icinga:

/etc/init.d/icinga restart

Dopo dovresti trovare server2 nell’interfaccia web di Icinga:

Ecco i controlli di servizio per server2:

Se hai aggiunto server2 ai gruppi host, dovrebbe essere elencato anche sotto Panoramica dei Servizi per Tutti i Gruppi Host:

5 Link

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.