Descentralizando Nagios: NRPE y NSCA

En esta entrada, estaremos configurando dos de los plugins mas usados a la hora de descentralizar o sacarle carga a nuestro servidor con Nagios (previamente vimos como instalarlo), NRPE y NSCA, el primero para chequeos activos (Nagios ejecuta el chequeo) y el segundo pasivos (el cliente envía el resultado de un chequeo).

En ambos casos, contaremos con una aplicación cliente y otra servidor, en el caso de NRPE, el cliente estará en nuestro server y el servidor en el host que queremos monitorear, para NSCA, los roles se invierten y el servidor estará en nuestro monitor mientras que el cliente estará en el host.

Empecemos

Instalando NRPE

Para esta instalación, utilizaremos 3 maquinas, nuestro servidor linux con Debian 9 donde pondremos el cliente, una maquina también con Debian donde pondremos una versión server y una maquina con Windows donde colocaremos NSClient++ (la versión de NRPE server para este sistema operativo).

NRPE Server en Debian

Comencemos instalando el server para Debian. Utilizaremos los repositorios, que si bien no tienen la ultima versión, tiene todas las funcionalidades que utilizaremos para este tutorial (las versiones nuevas tienen entre otras mejoras, la capacidad de extender la respuesta que se le da al cliente).
Nos aseguraremos de estar trabajando con los mismos actualizados y con las ultimas versiones disponibles instaladas.

apt-get update && apt-get upgrade

E instalaremos el server

apt-get install nagios-nrpe-server

La instalación, también se encargara de instalar los plugins básicos del paquete «nagios-plugins-basic»

Activaremos ahora el autoarranque del server con el sistema

update-rc.d nagios-nrpe-server enable

y nos aseguraremos de tener el demonio corriendo

netstat -lpn4 | grep nrpe

Como veremos, el demonio se bindea a todas las interfaces disponibles, esto es modificable en caso de ser necesario en su archivo de configuración.

Editaremos ahora esta configuracion para ajustarla a nuestro caso.
Deberemos primero, agregar la dirección IP del cliente que enviara los pedidos para ejecutar los plugins, para esto, editaremos el archivo /etc/nagios/nrpe.cfg modificando el parámetro «allowed_hosts«, agregando la dirección o direcciones, separandolas con coma en caso de ser mas de una.
Cambiando la dirección de este snippet, haremos el trabajo mas sencillo

sed -i '/allowed_hosts/ s/$/\,10.181.0.208/' /etc/nagios/nrpe.cfg

Por defecto, la instalación del server trae 5 chequeos predefinidos con parámetros harcodeados.

  • check_users: Chequea la cantidad de usuarios loguados en el sistema.
  • check_load: Chequea la carga del sistema.
  • check_hda1: Chequea el estado de la partición hda1 (esto en general necesita una modificación antes de utilizarla).
  • check_zombie_procs: Chequea la cantidad de procesos en estado Zombie.
  • check_total_procs: chequea la cantidad de procesos ejecutandose en el sistema.

Como ejemplo, crearemos un nuevo monitor, que busque errores de autenticación por ssh, para ellos, agregaremos al archivo nrpe.cfg la siguiente linea utilizando nuestro editor de texto favorito.

command[check_ssh_auth]=/usr/lib/nagios/plugins/check_log -F /var/log/auth.log -O oldlog -q "authentication failure"

check_ssh_auth sera el nombre del comando que deberá llamar el cliente y utilizaremos el plugin check_log para buscar el string «authentication failure» en el log de autorizaciones.

Reiniciamos el demonio para que tome los cambios

 service nagios-nrpe-server restart

NRPE Client en Debian

Instalaremos ahora el cliente en nuestro servidor con Nagios y definiremos los comando para poder utilizarlo.

Como siempre, primero nos aseguraremos de estar al dia con los repositorios

>apt-get update && apt-get upgrade

E instalaremos la aplicación

apt-get install nagios-nrpe-plugin

El ejecutable, se instalara por defecto en la ruta /usr/lib/nagios/plugins, si vienen siguiendo la guía de instalación previa, moveremos el ejecutable con los demás plugins de nuestra configuración

mv /usr/lib/nagios/plugins/check_nrpe /etc/nagios/libexec/ && rm -r /usr/lib/nagios/plugins

Podremos ahora probar el servidor que instalamos en pasos anteriores, para esto ejecutaremos

/etc/nagios/libexec/check_nrpe -H IP_host -c command

Para nuestro ejemplo, ejecutaremos lo siguiente

/etc/nagios/libexec/check_nrpe -H 10.181.0.203 -c check_users
USERS OK - 1 users currently logged in |users=1;5;10;0

/etc/nagios/libexec/check_nrpe -H 10.181.0.203 -c check_load
OK - load average: 0.00, 0.01, 0.05|load1=0.000;15.000;30.000;0; load5=0.010;10.000;25.000;0; load15=0.050;5.000;20.000;0;

/etc/nagios/libexec/check_nrpe -H 10.181.0.203 -c check_vda1
DISK OK - free space: / 100981 MB (91% inode=99%);| /=8991MB;92705;104293;0;115882

Si los chequeos manuales son satisfactorios, podremos ahora definir el comando check_nrpe en la configuración de Nagios y definir monitores de servicio que lo utilicen.

Agregaremos las siguientes lineas al archivo commands.cfg (en caso de utilizar Nagiosql, agregaremos un nuevo comando en el menú «Commands – Definitions«). Agregaremos a nuestro comando, el modificador -t para poder modificar el timeout (por defecto son 10 segundos)

# 'check_nrpe' command definition
define command{
        command_name    check_nrpe
        command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ -t $ARG2$
        }

Definiremos el host a monitorear, creando el archivo de configuración en /etc/nagios/etc/objects/$nombre.cfg (Versión NagiosQL)

define host {
        host_name                       Server001
        alias                           Server001 (Debian)
        address                         10.181.0.205
        check_command                   check_ping!3000,20%!5000,50%
        use                             generic-host,host-pnp
        register                        1
}

Y por ultimo le asociaremos el servicio utilizando NRPE (Versión NagiosQL). Al llamar el comando, separaremos los argumentos utilizando el signo de exclamación (!) y como veremos, el parametro $HOSTADDRESS$ del comando, sera llenado automaticamente por Nagios.

define service {
        host_name                       Server001
        service_description             Usuarios
        use                             local-service,srv-pnp
        check_command                   check_nrpe!check_users!10
        notifications_enabled           1
        register                        1
}

Y reiniciamos Nagios para que tome los cambios (para NagiosQL vamos a «Tools – Nagios Control», escribimos la configuración a disco, checkeamos que sea correcto y reiniciamos Nagios»

service nagios restart

nrpe nagios serviceAhora si vamos a la interfaz web de Nagios, deberíamos ver nuestro servicio definido y si esperamos un poco, podremos ver su estado traído por NRPE.

Aplicando este mismo esquema, podremos definir todos los servicios que queramos

 

Instalando NSCLient++

Para Windows, tenemos la aplicación NSClient que cumplirá la misma función que el servidor NRPE en Linux. La instalación es bastante sencilla y por defecto, tendremos varios plugins habilitados.

Descargaremos primero la versión adecuada para la arquitectura del host donde lo instalaremos, para esto, accederemos al siguiente link.

NSCLIENT Monitoring toolAl iniciar la instalación, la primero opción que se nos presentara, es elegir el tipo con protocolo de monitoreo que usaremos. Elegiremos la opción «Generic» la cual contempla a check_nrpe y check_nt (otro plugin de Nagios)

 

 

 

 

 

NSCLIENT configuration

En la siguiente pantalla, veremos la configuración mas básica de la aplicación, aquí, agregaremos la dirección de nuestro equipo con Nagios separandola con una coma de la dirección local.

Nos convendrá guardar la contraseña que se autogenera o cambiarla por una especifica ya que la usaremos en el siguiente paso de la configuracion.

Habilitaremos la instalación de los plugins estándar, el servidor NRPE (con la opción de «insecure» y también el Web Server que nos ayudara con la habilitación de los módulos necesarios.

Continuaremos con la instalacion hasta terminarla, presionando Next

A continuación, nos loguearemos en la interfaz web del NSClient, yendo a la dirección https://127.0.0.1:8443 y utilizando la contraseña configurada en el paso anterior.

 

 

 

 

Iremos luego al menú Modules y para nuestro ejemplo (y en general para la mayoria de las instalaciones), habilitaremos solo los módulos de CheckDisk y CheckSystem, los cuales contienen la gran mayoría de los checkeos para el sistema operativo.

Para ver el total de checkeos que contienen estos dos módulos, podemos podemos acceder a la página de referencia de cada uno (CheckDisk y CheckSystem)

Por último, recargaremos el servicio para que tome los cambios, accediendo al menu «Control» y luego «Reload»

 

Podremos luego volver a nuestro Server Nagios y comprobar que todo este funcionando como deberia

/etc/nagios/libexec/check_nrpe -H 10.181.16.254 -c check_memory
OK: committed = 346.355MB, physical = 460.668MB|'committed'=0.33823GB;3.0813;3.46646;0;3.85163 'committed %'=9%;80;90;0;100 'physical'=0.44987GB;1.59959;1.79953;0;1.99948 'physical %'=22%;80;90;0;100

La configuración de los servicios a nivel de Nagios, es idéntica a la que vimos con Linux por lo que no deberían tener problemas al darlos de alta.

En la próxima entrada, configuraremos NSCA y configuraremos algunos checkeos de servicios de forma pasiva.

Deja un comentario