Nagios, una rete sotto controllo – Parte 2 : NRPE : Nagios Remote Plugin Executor

1

nagios

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.

Figura 1
Figura 1

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.