jueves, 22 de marzo de 2012

Addon NRPE para ejecutar plugins de Nagios

1. INTRODUCCION

El addon NRPE permite ejecutar plugins de Nagios en Linux/Unix remotos.

Nota: Es posible ejecutar los plugins de nagios en máquinas remotas a travéz de SSH. Haciendolo con plugin check_by_ssh.
Hacerlo con SSH es más seguro que con el addon NRPE, pero también produce un overhead tanto en la máquina de monitoreo como en la máquina remota.

Muchos administradores de nagios optan por NRPE, ya que genera una carga menor que utilizando SSH.


El NRPE consiste de 2 piezas:

1) El check_nrpe plugin, el cual reside en la máquina de monitoreo.

2) El demonio NRPE, el cuál corre en el Linux/Windows remoto que estamos monitoreando.

- Nagios ejecuta el check_nrpe y le dice que servicio debe chequear.

- El check_nrpe contacta al demonio NRPE en el host remoto.

- El demonio NRPE ejecuta el plugin de nagios en el host remoto para chequear el servicio.

- El resultado desde el servicio chequeado se pasa al demonio NRPE el cual lo devuelve al plugin check_nrpe y este último a su vez lo devuelve al nagios.

NOTA: El demonio NRPE requiere que el plugin de nagios sea instalado en el Linux/Unix remoto. Sin este el demonio no estaría habilitado para monitorear nada.


2. EJEMPLOS

a) Chequeos Directos:
El más simple es el complemento NRPE para monitorear el recurso “local” ó “privado” en un host remoto (Linux/Unix). Incluye chequeos como CPU, memoria usada, swap, usuarios logueados, disco usado, estado de procesos, etc.



b) Chequeos Indirectos:
Puede usar el addon NRPE indirectamente para chequeos de servicios “públicos”. Son recursos de servidores remotos que no son directamente chequeados por el host de monitoreo. El demonio NRPE actúa como un proxy intermediario que permite la comunicación entre el host de monitoreo y el servicio del servidor remoto.




3. INSTALACIÓN

Prerrequisitos:
- Acceso de root en el Linux/Unix remoto.
- Acceso a la cuenta de nagios ó el host de monitoreo.

Instalamos el demonio NRPE en el host remoto a monitorear:
Creamos la cuenta de usuario de nagios y le asignamos un password:

# useradd nagios
# passwd nagios


Instalamos el plugin de nagios:

# cd /tmp
# wget http://downloads.sourceforge.net/project/nagiosplug/nagiosplug/1.4.15/nagios-plugins-1.4.15.tar.gz?r=http%3A%2F%2Fwww.nagios.org%2Fdownload%2Fplugins%2F&ts=1330392020&use_mirror=ufpr
# tar xzvf nagios-plugins-1.4.15.tar.gz
# cd nagios-plugins-1.4.15
# ./configure
# make
# make install
# chown nagios.nagios /usr/local/nagios
# chown –R nagios.nagios /usr/local/nagios/libexec


Instalamos el demonio NRPE:

# cd /tmp
# wget http://downloads.sourceforge.net/project/nagios/nrpe-2.x/nrpe-2.13/nrpe-2.13.tar.gz?r=http%3A%2F%2Fexchange.nagios.org%2Fdirectory%2FAddons%2FMonitoring-Agents%2FNRPE--2D-Nagios-Remote-Plugin-Executor%2Fdetails&ts=1330392397&use_mirror=ufpr
# tar xzvf nrpe-2.13.tar.gz
# cd nrpe-2.13
# ./configure
# make all

NOTA: Puede ser que cuando ejecutamos el ./configure nos aparezca el siguiente error:

checking for SSL headers... configure: error: Cannot find ssl headers

Si sucede esto, simplemente instalamos libssl-dev con apt-get



Instalo los plugins NRPE para testing, el demonio y el ejemplo del archivo de configuración del demonio:

# make install-plugin
# make install-daemon
# make install-daemon-config


Podemos configurar el demonio del NRPE que corra bajo el superdemonio xinetd, pero yo quiero que corra como demonio independiente.

Lo corremos como demonio:

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

Testeamos el demonio NRPE localmente:

# netstat –at | grep nrpe
Tcp 0 0 *:nrpe *:* LISTEN

Si aparece esto es que está ok el nrpe. Si no funciona, asegurese de lo siguiente:

- Que haya agregado el nrpe al /etc/services (5666/tcp).
- Que esté corriendo el xinetd si lo coonfiguró bajo este servicio.
- Xinetd esté configurado e iniciado.
- Chequee los archivos de logs del xinetd ó el nrpe y resuelva cualquier problema que reporte.

Chequeamos para verificar que el demonio NRPE esté funcionando correctamente. Para hacerlo ejecutar el check_nrpe de la siguiente forma:

# /usr/local/nagios/libexec/check_nrpe –H localhost
NRPE v2.13 <-- Si aparecer su versión es que está correctamente configurado.

Tener en cuenta que hasta aquí sólo está escuchando peticiones sólo del localhost, si queremos habilitarlo para que desde el nagios(192.168.1.20) haga consultas, debemos editar el archivo de configuración siguiente:

# vim /usr/local/nagios/etc/nrpe.cfg
allowed_hosts=127.0.0.1,192.168.1.20

 Verificamos que el servicio esté corriendo, lo matamos y volvemos a levantarlo como demonio:


# ps -efa |grep nrpe
nagios   31360     1  0 10:49 ?        00:00:00 /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
# kill -15 31360
# /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d

Recuerde agregarlo para cuando se reinicie el equipo, podemos crear un script para que levante ó agregarlo en el /etc/rc.local

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


Habilitando NRPE en el Firewall:

# iptables –A INPUT –p tcp –m tcp –dport 5666 –j ACCEPT



Customizando Comandos NRPE:

El archivo de configuración de NRPE es el siguiente:
# vim /usr/local/nagios/etc/nrpe.cfg


Puede testear los siguientes comandos ejecutándolos:
# /usr/local/nagios/libexec/check_nrpe –H localhost –c check_users
# /usr/local/nagios/libexec/check_nrpe –H localhost –c check_load
# /usr/local/nagios/libexec/check_nrpe –H localhost –c check_hda1
# /usr/local/nagios/libexec/check_nrpe –H localhost –c check_total_procs
# /usr/local/nagios/libexec/check_nrpe –H localhost –c check_zombie_procs


Hasta este punto, ya tenemos instalado y configurado NRPE en el host remoto. Ahora hay que instalar un componente para configurar las entradas en el server de monitoreo.


Instalamos el NRPE en el host de monitoreo:

Lo instalamos en el servidor de monitoreo, donde tenemos instalado y corriendo nagios. Debemos:

- Instalar el plugin check_nrpe
- Crear un comando en Nagios para usar el plugin check_nrpe
- Crear un host y servicio en nagios para monitorear en el host remoto

Está asumido que nagios está instalado y configurado en este server.

Instalamos el plugin check_nrpe:

# cd /tmp
# wget http://downloads.sourceforge.net/project/nagios/nrpe-2.x/nrpe-2.13/nrpe-2.13.tar.gz?r=http%3A%2F%2Fexchange.nagios.org%2Fdirectory%2FAddons%2FMonitoring-Agents%2FNRPE--2D-Nagios-Remote-Plugin-Executor%2Fdetails&ts=1330392397&use_mirror=ufpr
# tar xzvf nrpe-2.13.tar.gz3
# cd nrpe-2.13
# ./configure
# make all
# make install-plugin


Testeamos la configuración desde el Servidor de Monitoreo (Nagios) al Demonio NRPE remoto:

# /usr/local/nagios/libexec/check_nrpe –H 192.168.0.1
NRPE v2.13 <-- Si aparece esto es que está instalado y configurado correctamente NRPE en el host remoto.


Si el plugin devuelve error, hay que chequear lo siguiente:

- El firewall en ambos equipos esté habilitando la comunicación.
- Asegurarse que el demonio NRPE está instalado y ejecutando correctamente bajo xinetd.
- Asegurarse que el host remoto no tenga reglas de iptables locales que previenen el monitoreo.

Crear la definición de un comando, agregar al final del siguiente archivo:

# vim /usr/local/nagios/etc/commands.cfg
Lo siguiente:
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe –H $HOSTADDRESS$ -c $ARG1$
}


Crear definición de host y servicios:

Creamos un template para los Unix/Linux:
define host{
name nombre-del-template-linux
use generic-host #Herencia de un host genérico
check_period 24x7
check_interval 5
retry_interval 1
max_check_attempts 10
check_command check-host-alive
notification_period 24x7
notification_interval 30
notification_options d,r
contact_groups admins
register 0 # NO REGISTRAR, ES UN TEMPLATE
}


Note que este es un template definido y está heredando valores por default desde un template generic-host, el cuál se define en localhost.cfg

Ahora definimos un nuevo host Linux/Unix el cual será referenciado por el template previo.

define host{
use nombre-del-template-linux #Hereda el default del template previo
host_name nombreHostRemoto #El nombre que le daremos al server
alias loQueSeMeCante #Un alias larg
address 192.168.0.1 #La ip del server remoto a monitorear
}


Ahora definiremos un servicio para el host creado recientemente. Vemos que usa el comando definido en el nrpe.cfg en el host remoto. El check_load es pasado como argumento al check_nrpe definido en el demonio NRPE:

define service {
use generic-service
host_name nombreHostRemoto
service_description Carga de CPU
check_command check_nrpe!check_load
}


El siguiente monitorea la cantidad de usuarios logueados en el host remoto:

define service{
use generic-service
host_name remotehost
service_description Current Users
check_command check_nrpe!check_users
}


En cambio este otro muestra el espacio libre en disco del hda1 en el host remoto:

define service{
use generic-service
host_name remotehost
service_description /dev/hda1 Free Space
check_command check_nrpe!check_hda1
}


Reiniciamos nagios:

# /usr/local/nagios/bin/nagios –v /usr/local/nagios/etc/nagios.cfg
# /etc/init.d/nagios restart



FUENTES:

http://nagios.sourceforge.net/docs/nrpe/NRPE.pdfhttp://www.crucialwebhost.com/blog/using-nrpe-to-monitor-remote-services/http://nagioses.blogspot.com/2009/03/nrpe.html

1 comentario:

Anónimo dijo...

Excelente el post. Me ha gustado y bien explicado.
Enhorabuena.