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.
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.
#!/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).
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 }
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
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