Table of Contents

Instalar Nagios Remote Plugin Executor (NRPE) desde el código fuente

NRPE se instala en el servidor Nagios y en los equipos que deben ser monitorizados. En el servidor donde Nagios corre, solo es necesario instalar el ejecutable “check_nrpe” que provee el paquete NRPE. Por el contrario, en los hosts a monitorizar, se debe correr el demonio NRPE y además, debe tener instalados los checks que se deseen utilizar (El paquete “Nagios plugins” debe instalarse).

NOTA: Las rutas de esta pequeña guía se basan en una instalación estándar de todos los componentes de Nagios. Si se usan / usaron paquetes específicos puede que las rutas varíen, se incluyan otros checks y muy posiblemente se incluirá el script de inicio de NRPE que por defecto no vienen en el paquete de código fuente. Es perfectamente compatible e independiente tener Nagios instalado mediante paquetes y que los hosts remotos utilicen una versión compilada de NRPE.

Host remoto a monitorizar (NRPE + Nagios-Plugins)

Crear el usuario nagios.

adduser nagios

NRPE - Nagios Remote Plugin Executor.

tar -zxvf nrpe-2.15.tar.gz
cd nrpe-2.15/
./configure
# Algunas distros necesitan indicar la ruta de las librerías SSL.
# ./configure --with-ssl=/usr/bin/openssl --with-ssl-lib=/usr/lib/i386-linux-gnu
# ./configure --with-ssl=/usr/bin/openssl --with-ssl-lib=/usr/lib/x86_64-linux-gnu/
make all
make install
make install-plugin
make install-daemon
make install-daemon-config

NOTA: No se utilizará / instalara la configuración para xinetd. Es posible que sea necesario instalar “openssl-dev” como dependencia para poder compilar NRPE.

Regla de iptables para permitir NRPE.

iptables -A INPUT -p tcp -m tcp --dport 5666 -j ACCEPT

Nagios Plugins (https://nagios-plugins.org/doc/man/index.html)

tar -zxvf nagios-plugins-2.0.3.tar.gz
cd nagios-plugins-2.0.3
./configure --enable-libtap --enable-perl-modules
make
make install

Como dependencias perl-ExtUtils-MakeMaker debe estar instalado para evitar el siguiente error en la compilación.

Can't locate ExtUtils/MakeMaker.pm in @INC (@INC contains: /root/nrpe-2.15/nagios-plugins-2.1.1/perlmods/Test-Simple-0.98/blib/lib /root/nrpe-2.15/nagios-plugins-2.1.1/perlmods/Test-Simple-0.98/blib/arch /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at Makefile.PL line 6.

Configurar NRPE (/usr/local/nagios/etc/nrpe.cnf) Permitir el uso de NRPE por parte del servidor Nagios y otras IPs / Dominios de interés

allowed_hosts=nagios.dominio.com,localhost,127.0.0.1,nagios2.dominio.com

Se deben configurar las ultimas lineas del fichero nrpe.cnf.

#command[check_users]=/usr/local/nagios/libexec/check_users -w $ARG1$ -c $ARG2$
#command[check_load]=/usr/local/nagios/libexec/check_load -w $ARG1$ -c $ARG2$
#command[check_disk]=/usr/local/nagios/libexec/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
#command[check_procs]=/usr/local/nagios/libexec/check_procs -w $ARG1$ -c $ARG2$ -s $ARG3$

Ejecución del demonio NRPE.

/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d

NOTA: Crear un init script puede facilitar el uso del demonio.

Con esta mínima configuración, se permite al servidor Nagios conectar al demonio NRPE y ejecutar los cheks que podemos ver justo antes de los comentados, los cuales debemos adaptar a nuestras necesidades. Ejemplo:

command[check_users]=/usr/local/nagios/libexec/check_users -w 2 -c 4
command[check_load]=/usr/local/nagios/libexec/check_load -w 4,4,4 -c 5,5,5
command[check_raiz]=/usr/local/nagios/libexec/check_disk -w 35% -c 20% -p /dev/simfs
command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 1 -c 3 -s Z
command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 70 -c 110
command[check_swap]=/usr/local/nagios/libexec/check_swap -w 80% -c 70%

En la parte correspondiente de Nagios veremos un ejemplo para utilizar esos checks remotos mediante check_nrpe.

Script de inicio estándar para NRPE (sin xinetd)

nrpe
#!/bin/bash
### BEGIN INIT INFO
# Provides:          NRPE
# Required-Start:    $syslog
# Required-Stop:     $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: NRPE Init script
# Description: NRPE Init script
#
### END INIT INFO
PID=/var/run/nrpe.pid
 
not_working() {
	echo "NRPE daemon isn't working ..."
}
working() {
	echo "NRPE is working .. Not starting"
}
starting(){
	echo "Starting NRPE daemon ..."
}
stopping(){
	echo "Stopping NRPE daemon ..."
}
start() {
	if [ -e  $PID ]; then
		working
	else
		starting
		/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
	fi
}
stop() {
	if [ -e  $PID ]; then
		stopping
		kill `cat /var/run/nrpe.pid`
		rm /var/run/nrpe.pid
	else
		not_working
	fi
}
restart() {
	if [ -e  $PID ]; then
		stop
	else
		not_working
	fi
	start
}
usage(){
	echo "$0 {start|stop|restart}"
}
case "$1" in
	start)		start;;
	stop)		stop;;
	restart)	restart;;
	*)		usage;;
esac 
chmod 755 /etc/init.d/nrpe

NOTA: Mirar si el PID es el correcto en la cabecera del script (podría ser /usr/local/nagios/var/nrpe.pid, depende de lo que se tenga definido en la opción “pid_file” de /usr/local/nagios/etc/nrpe.cfg).

NRPE en el equipo que monitoriza (Donde está Nagios instalado)

Se deben seguir los pasos de compilación de NRPE vistos anteriormente pero sin necesidad de utilizar “make install”. Una vez compilado se debe copiar el programa al directorio libexec de Nagios.

cp src/check_nrpe /usr/local/nagios/libexec/
chown nagios:nagios /usr/local/nagios/libexec/check_nrpe
chmod 755 /usr/local/nagios/libexec/check_nrpe

Configuración de ejemplo para los checks (NRPE) mostrados anteriormente para el host a monitorizar.

   define host{  
   use                          linux-server
   host_name                    XXXXXX
   alias                        XXXXXX
   }  
 
   define service{
   use 				local-service
   host_name 			XXXXXX
   service_description 		CPU Load
   check_command                check_nrpe!check_load
   } 
 
   define service{
   use                           local-service,srv-pnp
   host_name                     XXXXXX
   service_description           Usuarios
   check_command                 check_nrpe!check_users
   }
 
   define service{
   use                           local-service
   host_name                     XXXXXX
   service_description           HD
   check_command                 check_nrpe!check_raiz
   }
 
   define service{
   use                           local-service
   host_name                     XXXXXX
   service_description           Zombies
   check_command                 check_nrpe!check_zombie_procs
   }
 
   define service{
   use                           local-service
   host_name                     XXXXXX
   service_description           Procesos
   check_command                 check_nrpe!check_total_procs
   }
 
   define service{
   use                           local-service
   host_name                     XXXXXX
   service_description           Usuarios
   check_command                 check_nrpe!check_users
   }
 
   define service{
   use                           local-service
   host_name                     XXXXXX
   service_description           Swap
   check_command                 check_nrpe!check_swap
   }

Fichero de logs para NRPE

Si se quiere tener un fichero de log para el servidio NRPE, por ejemplo /var/log/nrpe, se puede hacer fácilmente de la siguiente manera.

Editar el fichero /usr/local/nagios/etc/nrpe.cfg

log_facility=localnrpe
debug=0

Editar la configuracion de syslogd o la herramienta que se esté utilizando: /etc/rsyslog.conf, /etc/syslog.conf, etc.

localnrpe.*                                          /var/log/nrpe

Reiniciar los servicios NRPE y Syslog (o derivados).

/etc/init.d/rsyslog restart
/etc/init.d/nrpe restart

Aviso sobre check_apt

El plugin “check_apt” no utiliza aptitude para buscar actualizaciones de software, por lo que de utilizar aptitude para actualizar el sistema, podemos encontrar que check_apt muestra todavía un mensaje como el siguiente.

APT CRITICAL: 3 packages available for upgrade (3 critical updates).
Performance Data: available_upgrades=3;;;0 critical_updates=3;;;0

Se debe actualizar el sistema con apt-get.

apt-get update
apt-get upgrade