Nello scorso articolo abbiamo visto come configurare ed installare NAGIOS affinché monitori servizi ed emetta notifiche via e-mail in caso di malfunzionamenti. Mentre però i servizi standard sono controllabili da remoto (tramite l’interrogazione di porte TCP), non è possibile ad esempio controllare la capienza del disco di una macchina remota (o i processi in esecuzione su questa o il numero degli utenti loggati) senza lanciare dei processi locali.
Per risolvere questo problema, esiste un programma “extra” creato al di fuori del pacchetto NAGIOS denominato NRPE : Nagios Remote Plugin Executor.
Concetto e requisiti di NRPE
NRPE presenta due componenti, una associata a NAGIOS e cioè il plugin check_nrpe, l’altra associata alla macchina sulla quale si vuole effettuare il controllo e cioè il demone NRPE.
La logica di funzionamento è la seguente : si ha la necessità di lanciare un plugin remoto, viene quindi effettuata la chiamata al plugin locale check_nrpe al quale andrà passato come parametro il nome del plugin remoto da eseguire. “check_nrpe” si collegherà alla macchina remota dove su una determinata porta (generalmente la 5666), sarà in ascolto il demone NRPE che riceverà la richiesta, eseguirà il plugin locale e restituirà l’esito del comando.
Installazione di NRPE
Prima di installare NRPE sulla macchina dove lasceremo il demone in attesa della richiesta di esecuzione di un qualsiasi plugin, sarà necessario installare il pacchetto nagios-plugins (Reperibile all’indirizzo http://prdownloads.sourceforge.net/nagiosplug/nagios-plugins-1.3.1.tar.gz?download), procedendo nella consueta maniera :
$ cd /usr/src
$ tar -xzvf nagios-plugins-1.3.1.tar.gz
$ cd nagios-plugins-1.3.1
$ ./configure --prefix=/usr/local/nagios --with-nagios-user=nagios --with-nagios-group=nagios
$ make all
$ make install
Questo perché il demone in se non fa nient’altro che eseguire degli script locali, che non sono presenti nel pacchetto NRPE (La cui grandezza supera di poco i 50 Kilobyte !).
Una volta completata l’installazione di nagios-plugins, troveremo nella directory /usr/local/nagios/libexec tutti i file eseguibili relativi ai plugin di NAGIOS.
A questo punto possiamo procedere con l’installazione vera e propria di NRPE.
Entrambe le componenti (il plugin ed il demone) si trovano nel pacchetto di installazione reperibile a questo indirizzo : http://prdownloads.sourceforge.net/nagios/nrpe-2.0.tar.gz?download
Il pacchetto si configura ed installa come segue :
$ cd /usr/src
$ tar -xzvf nrpe-2.0.tar.gz
$ cd nrpe-2.0
$ ./configure
$ make all
Alla fine del processo di “make” si noterà il seguente messaggio :
*** Compile finished ***
If the NRPE daemon and client compiled without any errors, you
can continue with installation. The NRPE daemon and client
binaries are located in the src/ subdirectory.
** If this is your monitoring host **
- Copy the check_nrpe client to the directory that
contains your Nagios plugins.
- Create a command definition in your Nagios config
file for the NRPE client. See the README file for
more info on doing this.
** If this host will be running the NRPE daemon **
- Copy the nrpe daemon to /usr/sbin, /usr/local/nagios
or wherever you feel it fits best.
- Copy the sample nrpe.cfg config file to /etc,
/usr/local/nagios or wherever you feel it fits best.
- Modify the /etc/services file and configure NRPE to
run under inetd, xinetd, or as a standalone daemon.
See the README file for more info on doing this.
Da qui in poi non ci sarà nulla di meglio che seguire le istruzioni appena lette.
Sarà necessario copiare sulla macchina dove abbiamo installato NAGIOS, il file /usr/src/nrpe-2.0/src/check_nrpe nella cartella dei plugin /usr/local/nagios/libexec (via rete o trasferendo il file su un dischetto) e sempre sul nostro server di controllo, aggiungere il riferimento a check_nrpe nel file dei comandi, aggiungendo cioè al file /usr/local/nagios/etc/checkcommands.cfg le seguenti righe :
# 'check_nrpe' command definition
define command{
command_name check_nrpe
command_line /usr/local/nagios/libexec/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
in questo modo, come vedremo in seguito, potremo configurare un servizio per NAGIOS che faccia riferimento al comando check_nrpe. NAGIOS a questo punto non ha bisogno più di nulla, ciò che rimane da fare, riguarda solo la macchina che NAGIOS interrogherà, il server remoto.
Sulla macchina dove lasceremo in ascolto il demone dovremo creare la directory /usr/local/nagios/bin nella quale copieremo il file eseguibile del demone generato dalla compilazione di NRPE :
$ mkdir /usr/local/nagios/bin
$ cp /usr/src/nrpe-2.0/src/nrpe /usr/local/nagios/bin/
Creeremo poi la directory che conterrà la configurazione del demone /usr/local/nagios/etc e ci copieremo il file di esempio /usr/src/nrpe-2.0/src/nrpe.cfg :
$ mkdir /usr/local/nagios/etc
$ cp /usr/src/nrpe-2.0/nrpe.cfg /usr/local/nagios/etc/
Come ultima cosa, copieremo l’init-script (ossia il file di avvio del demone), nella cartella di sistema /etc/init.d in modo da poter automatizzare all’avvio l’esecuzione del demone NRPE e gli daremo permesso di esecuzione :
$ cp /usr/src/nrpe-2.0/init-script /etc/init.d/nrpe
$ chmod 755 /etc/init.d/nrpe
A questo punto potremo procedere con la configurazione del demone NRPE andando ad editare il file /usr/local/nagios/etc/nrpe.cfg , tra le opzioni indicate, le più importanti sono le seguenti :
server_port=5666
Indica la porta in ascolto e salvo esigenze specifiche è bene lasciare con questo valore,
allowed_hosts=127.0.0.1
Indica l’elenco degli host (separati da virgole) abilitati alle richieste. Ad esempio se il server NAGIOS avrà indirizzo 192.168.0.1, l’opzione dovrà essere modificata in allowed_hosts=127.0.0.1,192.168.0.1
nrpe_user=nagios
nrpe_group=nagios
Indicano rispettivamente l’utente ed il gruppo che andranno ad eseguire il processo.
Infine, le opzioni più importanti riguardano i comandi da eseguire :
command[check_disk1]=/usr/local/nagios/libexec/check_disk -w 20 -c 10 -p /dev/hda1
Ad esempio il comando appena scritto, denominato check_disk1, tramite il plugin check_disk consentirà di ricevere informazioni sullo stato del disco /dev/hda1.
A questo punto, non rimane altro da fare che lanciare il demone NRPE con questo comando :
$ /etc/init.d/nrpe start
Starting nrpe: [ OK ]
Se il comando non restituisce errori il demone è stato avviato correttamente.
L’ultima cosa da fare è quindi quella di configurare un servizio in NAGIOS che tramite il comando check_nrpe lanci il comando check_disk1 su questa macchina (che chiameremo remote_pc). Per fare ciò, immetteremo le informazioni relative all’host da controllare nel file /usr/local/nagios/etc/hosts.cfg :
# '' host definition
define host{
use generic-host ; Name of host template to use
host_name remote_pc
alias Server remoto
address 192.168.1.2
check_command check-host-alive
max_check_attempts 10
notification_interval 120
notification_period 24x7
notification_options d,u,r
}
Includeremo questo host nel gruppo host “lan-servers” modificando nel file /usr/local/nagios/etc/hostgroups.cfg le righe relative :
# 'lan-servers' host group definition
define hostgroup{
hostgroup_name lan-servers
alias Gruppo gestione LAN
contact_groups lan-admins
members local_pc,remote_pc
}
Ed infine configureremo il servizio per il nuovo host editando il file /usr/local/nagios/etc/services.cfg aggiungendo questa definizione :
# Service definition
define service{
use generic-service ; Name of service template to use
host_name remote_pc
service_description DISK /
is_volatile 0
check_period 24x7
max_check_attempts 3
normal_check_interval 5
retry_check_interval 1
contact_groups lan-admins
notification_interval 120
notification_period 24x7
notification_options w,u,c,r
check_command check_nrpe!check_disk1
}
Come si può notare, a differenza delle precedenti definizioni, all’opzione check_command viene passato il comando check_nrpe che ha come parametro il nome del plugin remoto da eseguire, definito precedentemente come check_disk1 sulla macchina remota all’interno del file /usr/local/nagios/etc/nrpe.cfg.
Terminata questa fase di configurazione è sufficiente ricaricare NAGIOS affinché rilevi le modifiche che abbiamo effettuato in questo modo :
$ /etc/init.d/nagios reload
Running configuration check...done
Reloading nagios configuration...done
Se il comando non restituisce errori, dovremo trovarci di fronte ad una schermata simile a quella di Figura 1, in cui rispetto a prima è stata aggiunta la riga relativa al controllo del disco della macchina remota a confermarci che tutto il nostro lavoro ha avuto buon esito.

Conclusioni
Più si sperimenterà l’utilizzo di questo programma più si capirà come sia essenziale il suo impiego all’interno di un sistema informativo, dal più semplice al più esteso.
Moltissime sono le potenzialità di NAGIOS e moltissimi i plugin non ufficiali per il controllo delle più svariate funzioni, si trovano tutti nel sito ufficiale di NAGIOS : http://www.nagios.org.
La serie comprende questi articoli :
Nagios, una rete sotto controllo Parte 1 : Installazione e configurazione
Nagios, una rete sotto controllo Parte 2 : NRPE : Nagios Remote Plugin Executor
Nota :
Questo articolo è originariamente apparso nell’edizione italiana di Linux Journal nel Giugno 2005.
Da sempre appassionato del mondo open-source e di Linux nel 2009 ho fondato il portale Mia Mamma Usa Linux! per condividere articoli, notizie ed in generale tutto quello che riguarda il mondo del pinguino, con particolare attenzione alle tematiche di interoperabilità, HA e cloud.
E, sì, mia mamma usa Linux dal 2009.
Lascia un commento