martes, 31 de marzo de 2009

NRPE

Introducción



Este pequeño daemon te permite ejecutar plugins locales en equipos remotos de equipos Linux, como es esto, el plugin check_nrpe es llamado por Nagios y hace las peticiones de los plugins hacia el equipo remoto, requiere que NRPE este siendo ejecutado en ese equipo como un standalone daemon o como un servicio en inetd, tambien soporta encriptación nativa de SSL/TLS.
Hay una versión para Win2 pero la verdad opte por nsclient o nc_net.

NOTA - La última versión es la 2.0 y es incompatible con las versiones 1.x, tanto para clientes como servidores.

Aquí explicare de manera básica sus archivos y su funcionamiento.

En el paquete de NRPE pueden encontrar los siguientes archivos:

NRPE - Este es el programa que se ejecuta como proceso en el background en los equipos remotos y procesa las peticiones de ejecución de comandos del plugin check_nrpe del equipo donde esta Nagios. Recibe la petición del equipo autorizado, procesa la información del command line asociado con el comando que recibe y envia la información solicitada al plugin check_nrpe.

check_nrpe - Este es el plugin que se ejecuta en el equipo donde esta Nagios y es utilizado para contactar el proceso NRPE en los equipos remotos. Este plugin solicita al plugin remoto a ejecutarse en el equipo y espera que el proceso de NRPE se ejcuta y regrese la informacion solicitada.

Compilar



Sencillo, simplemente descompriman el paquete y ejecuten:

isuraeru@localhost$ ./configure
isuraeru@localhost$ make all


IMPORTANTE - El daemon NRPE debe ser compilado en el equipo remoto.

Instalación



Solo copiar el archivo check_nrpe en /usr/local/nagios/plugins o dependiendo donde tengan sus plugins.
En el caso del equipo remoto deben tener el daemon NRPE en donde tienen sus daemons i.e. /etc/rc.d/nrpe y tambien el archivo nrpe.cfg i.e. /etc/nrpe.cfg.

Ejecutando bajo inetd o xinetd



Asi es como lo tengo configurado y me funciona muy bien tenemos que ejecutar nrpe bajo inetd o xinetd y hacemos uso de los TCP wrappers, realizamos lo siguiente:

1.- Agregamos una linea en /etc/services como la siguiente:

nrpe 5666/tcp # NRPE

2.- Despues configuramos las entradas del daemon NRPE ya sea en inetd o xinetd, yo utilice inetd
NOTA - Si ejecutamos nrpe en inetd o xinetd, las variables server_port y allowed_hosts en el archivo de configuración del nrpe serán ignoradas.

Inetd



Si nuestro sistema utiliza inetd CON tcpwrappers agregamos la siguiente entrada en /etc/inetd.conf:

nrpe stream tcp nowait [user] /usr/sbin/tcpd [nrpebin] -c [nrpecfg] --inetd

Si nuestro sistema utiliza inetd SIN tcpwrappers agregamos la siguiente entrada en /etc/inetd.conf:

nrpe stream tcp nowait [user] [nrpebin] -c [nrpecfg] --inetd

Solamente reemplazamos user por el usuario que el servidor nrpe sera ejecutado. i.e. nagios.

nrpebin con el path del binario de nrpe i.e. /usr/local/nagios/nrpe

nrpecfg con el path del archivo de configuracion de nrpe i.e. /usr/local/nagios/nrpe.cfg o /etc/nrpe.cfg.

Xinetd



Si nuestro sistema utiliza xinetd en vez de inetd creamos un archivo llamado nrpe en /etc/xinetd.d conteniendo lo siguiente:


# default: on
# description: NRPE
service nrpe
{
flags = REUSE
socket_type = stream
wait = no
user = [user]
server = [nrpebin]
server_args = -c [nrpecfg] --inetd
log_on_failure += USERID
disable = no
only_from = [ipaddress1] [ipaddress2] ...
}


Reemplazamos user por el usuario que el servidor nrpe sera ejecutado. i.e. nagios.

nrpebin con el path del binario de nrpe i.e. /usr/local/nagios/nrpe

nrpecfg con el path del archivo de configuracion de nrpe i.e. /usr/local/nagios/nrpe.cfg o /etc/nrpe.cfg

ipaddress con las direcciones IP de los equipos qu deseamos sean aceptados para conectarse al daemon NRPE. Esto funciona solamente si xinetd fue compilado con soporte para tcpwrappers.

3.- Reiniciamos inetd o xinetd i.e.

isuraeru@localhost# /etc/rc.d/init.d/inet restart

isuraeru@localhost# /etc/rc.d/init.d/xinetd restart

4.- Agregamos entradas en nuestros archivos /etc/hosts.allow y /etc/hosts.deny para habilitar protección TCP wrapper para el servicio nrpe, es opcional pero altamente recomendado.

IMPORTANTE - Los plugins que se deseen ejecutar en el equipo remoto forzosamente deben estar en ese equipo por i.e. yo tengo un equipo que ejecuto check_procs, check_users y check_cpu los cuales los tengo en /usr/local/nagios/libexec y deben de ser propiedad de nagios.nagios.

OK, todo esto fue para los equipos remotos o clientes, ahora vamos a configurar el equipo donde esta Nagios.

Configuración equipo Nagios



Primeramente ya contamos con un archivo de configuracion nrpe.cfg de ejemplo incluido en el paquete de nrpe el cual va en los equipos remotos ahora definiremos el comando para nrpe ya sea en checkcommands.cfg o commands.cfg dependiendo d cual esten utilizando, el cual podemos declararlo así

define command{
command_name check_nrpe
command_line /usr/local/nagios/libexec/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

Ahora, para ejecutar este comando en los equipos remotos debemos de crear un servicio para tales equipos por ejemplo

define service{
host_name someremotehost
service_description someremoteservice
check_command check_nrpe!yourcommand
... etc ...
}

En donde yourcommand es el comando que deseamos ejecutar en el equipo remoto i.e. check_procs.

Y listo.
Dudas, ya saben a donde escribir. Saludos.

No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.