Nagios -NRPE
Muchos de vosotros utilizareis Nagios, como herramienta para monitorizar vuestros sistemas. La verdad es que se trata de una herramienta muy potente que nos permite controlar el estado de nuestros sistemas, ahorrar mucho tiempo en el dia a día y evitar algún que otro disgustillo.
A través de una serie de artículos voy a ir reflejando todo aquello que pueda resultar interesante en torno a esta plataforma. No se trata de una guía básica, sino que supongo disponéis de conocimientos, al menos básicos, sobre una configuración standard de Nagios.
.
En este caso vamos a hablar de NRPE. Se trata de un complemento para Nagios. Pero, ¿ Que nos va a permitir este complemento ?. Ejecutar Scripts en la maquina remota que queremos monitorizar. Un caso muy sencillo puede ser que estemos monitorizando un servicio y queremos ejecutar una determinada acción en función del estado en el que se encuentre ese servicio.
La idea es muy sencilla. Se trata de instalar un demonio (NRPE) en la maquina que queramos monitorizar, y desde nuestros servidor Nagios, aprovechándonos del plugin check_nrpe lanzar peticiones de estado. Esas peticiones se ejecutaran en la maquina remota, que al final devolverán el estado, que mostraremos en la consola del nagios. Me imagino que se ve clara la potencia de NRPE. No solo nos permite conocer el estado, sino que podemos ejecutar acciones para alterar el mismo.
Tampoco me quiero enrollar mas con el tema, porque si preguntáis al que todo lo sabe Google obtendréis multitud de referencias. La cosilla es aportar la idea, y luego cada uno que la aplique como le venga en gana.
En la pagina de nagios existe un muy buen documento NRPE.pdf en el que se detalla como realizar la instalación. Yo lo voy a esquematizar un poco, a modo de chuleta que me permita recordar de una manera rápida.
Puedo decir que es un proceso que he probado en maquinas con RedHat/Fedora, Suse y debian y funciona perfectamente.
Vamos a detalla todos los pasos a seguir :
Generamos el usuario nagios
useradd nagios
passwd nagios (introducimos la contraseña)
Si no nos genera el grupo lo generamos con el comando
groupadd nagios
Generamos un directorio en el que descargar todos los programas necesarios
mkdir /usr/src/programas/nagios
cd /usr/src/programas/nagios
Descargamos la ultima versión de los plugins de nagios de (www.nagios.org/download)
A día de hoy: nagios-plugins-1.4.13.tar.gz
Descomprimimos los archivos
tar -xvzf nagios-plugins-1.4.13.tar.gz
cd nagios-plugins-1.4.13
Y compilamos
./configure
make
make install.
Aplicamos permisos para que el usuario nagios tenga acceso y pueda ejecutar los scripts
chown nagios.nagios /usr/lib/nagios
chown -R nagios.nagios /usr/lib/nagios/libexec
Instalamos el servicio xinetd en caso de no disponer de el
apt-get install xinetd
Ahora procedemos a instalar el demonio NRPE
cd /usr/src/programas/nagios
nrpe-2.12.tar.gz
tar -xvzf nrpe-2.12.tar.gz
cd nrpe-2.12
Y ahora compilamos
./configure –enable-ssl (deberemos tener las librerías instaladas openssl-devel)
make all
Instalamos el plugin NRPE
make install-plugin
make install-daemon
make install-daemon-config
Instalamos el demonio NRPE como servicio
make install-xinetd
Si tenemos la suerte de estar frente a un sistema debian, lo anterior lo podemos resumir un poco 🙂
apt-get install nagios-plugins nagios-nrpe-plugin
Editamos el fichero que genera /etc/xinetd.d/nrpe y modificamos la directiva only_from
only_from = IP_Servidor_Nagios
# default: on
# description: NRPE (Nagios Remote Plugin Executor)
service nrpe
{
flags = REUSE
socket_type = stream
port = 5666
wait = no
user = nagios
group = nagios
server = /usr/local/nagios/bin/nrpe
server_args = -c /usr/local/nagios/etc/nrpe.cfg –inetd
log_on_failure += USERID
disable = no
only_from = 127.0.0.1 IP_Nagios_Server
}
Añadimos el servicio NRPE en /etc/services. Como por defecto lo instala en el puerto 5666.
nrpe 5666/tcp #NRPE
Reiniciamos el servicio xinetd
/etc/init.d/xinetd restart
Añadimos en el fichero hosts.allow
nrpe : IP_Nagios_Server, 127.0.0.1 : ALL
Comprobamos que todo funciona correctamente
netstat -at | grep nrpe
tcp 0 0 *:nrpe *:* LISTEN
telnet localhost 5666
Trying 127.0.0.1…
Connected to localhost.localdomain (127.0.0.1).
Escape character is ‘^]’.
/usr/loca/nagios/libexec/check_nrpe -H localhost
NRPE v2.8
Tambien lo podemos lanzar desde el servidor de nagios
/usr/loca/nagios/libexec/check_nrpe -H IP_Maquina_NRPE
NRPE v2.8
Si recibimos un error del tipo CHECK_NRPE: Error – Could not complete SSL handshake, tenemos un problema. Tenemos que revisar todos los ficheros generados. Comprobar los permisos de los ficheros, soporte SSL, versiones NRPE (demonio/cliente), ficheros hosts.allow y hosts.deny TCP_Wrapper, rutas que le hemos marcado al binario nrpe en /etc/xinet.d/nrpe, revisar los logs que nos pueden aportar información (/var/log/messages)… y sobre todo tener paciencia y no desesperarse.
Una vez el servicio este levantado, pasamos a configurar el plugin NRPE definiendo todos los comandos que nos interesen. Como ya hemos comentado, aquí nosotros podemos aprovecharnos de los que ya trae el nagios, o podemos generar nosotros mismos alguno que nos pueda interesar.
vi /usr/local/nagios/etc/nrpe.cfg
command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10
command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20
command[check_disk]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/mapper/VolGroup00-LogVol00
command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z
command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200
command[check_portal]=/usr/local/nagios/libexec/check_jboss.sh
Ya solo nos falta la configuracion en el servidor nagios. Pero esto lo hacemos como hemos estado trabajando hasta ahora.
En el archivo commands.cfg añadimos
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $ARG1$ -c $ARG2$
}
Si vemos que el script tarda mas de 10 segundos en responder podemos añadir el parámetro -t Seg con el tiempo que estimemos para no obtener el error “CHECK_NRPE:Socket timeout after 10 seconds” o “Connection refused or time out”
Y generamos un servicio
define service{
use generic-service
host_name X.X.X.X
service_description Check_WEB
check_command check_nrpe!X.X.X.X!check_portal
}
Ahora solo tenemos que reiniciar nuestro servidor nagios
/etc/init.d/nagios2 restart
Bueno compañero nos vemos en la próxima.
Hola, muy interesante el articulo, saludos desde Chile!