===== 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.
* **Servidor Nagios**: Instalar solo check_nrpe.
* **Servidores monitorizados**: NRPE (demonio) + Nagios plugins.
==== 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) ====
#!/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