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-pluginPassword 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-serverNome del gruppo di lavoro/dominio: <– WORKGROUP
Ora apri /etc/nagios/nrpe.cfg:
vi /etc/nagios/nrpe.cfgDobbiamo 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.101su 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 definitonell’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 restartOra controlla se il server NRPE sta ascoltando:
netstat -tap | grep nrperoot@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.101L’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 -pGRANT 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 restartDopo 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
- Icinga: https://www.icinga.org/
- Documentazione di Icinga: http://docs.icinga.org/latest/en/
- Nagios: http://www.nagios.org/
- Debian: http://www.debian.org/
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.