Nagios – Monitorizando con NRPE

Bueno, bueno… Vamos a meterle un poco más de txitxa a nuestro Nagios, Centreon o lo que tengamos, seguiremos con algo muy interesante para el que quiera monitorizar ítems más avanzados! Usaremos un pequeño agente que se instalará en los equipos Windows o Linux remotos, para qué? Pues entre otras cosas para ejecutar scripts en dichos equipos. Podremos ejecutar cualquier script de PowerShell, Batch, VBScript, Perl… y luego leer el resultado del comando y tratarlo con Nagios!

 

Nagios Remote Plugin Executor (NRPE) se ejecutará como servicio o demonio en las máquinas a monitorizar y estará escuchando para que desde Nagios, con el comando ‘check_nrpe’, le hagamos peticiones. En otros documentos futuros ya veremos otro tipo de agentes, hoy toca hablar (para mí) del mejor!

 

Instalación de check_nrpe,

 

Comenzamos descargando y compilando ‘check_nrpe’, previamente instalamos los requisitos, os dejo aquí los pasos seguidos, al finalizar movemos el binario al path de los plugins y lo probamos!

yum install -y gcc glibc glibc-common openssl-devel perl wget git
cd /usr/src/
git clone https://github.com/NagiosEnterprises/nrpe
cd nrpe/
./configure
make all
cp src/check_nrpe /usr/lib/nagios/plugins/
cd /usr/lib/nagios/plugins/
./check_nrpe

 

Instalación del Agente,

 

Bien, para ello utilizaremos NSClient++, lo descargamos de su web, y en principio utilizaremos la última versión, en este ejemplo utilizaremos el binario x64 de Windows.

 

Comenzamos la instalación de NSClient, «Next»,

 

Seleccionamos ‘Generic’, «Next»,

 

Veamos la opción «Custom»,

 

Y seleccionamos los plugins que nos interesen, yo marcaré todos, por que los usaré en otros ejemplos, en este caso con marcar NRPE Support nos valdría.

 

Nos indica el fichero INI que usaremos para aplicar la configuración, «Next»,

 

Deberemos agregar la dirección IP de la máquina Nagios o Centreon que ejecutará las consultas, así como habilitar check_nt si nos interesase, que seguro que sí, ya veréis =), además seleccionamos el modo de seguridad de NRPE, en este caso no usare contraseña al usar el modo Inseguro, en un entorno corporativo, al menos seleccionaremos un modo seguro. «Next»,

 

Bien, pulsamos «Install» para instalar este pequeño agentito…

 

… esperamos unos segundos…

 

Y listo, «Finish».

 

No quedaría más que ejecutar desde nuestro equipo Nagios un comando para testear si hay conectividad, un ejemplo muy sencillo sería el siguiente:

./check_nrpe -H IP_EQUIPO_REMOTO -c check_uptime

 

Si vemos que conecta y nos dice el tiempo que lleva encendida esa máquina, ya podremos empezar!! Ahora ya sólo queda alimentar con scripts las máquinas Windows o Linux y ejecutar lo que queramos de forma remota, en próximos documentos iré poniendo ejemplos interesantes, pero necesitaremos seguir este documento primero.

 

Crear el Comando en Centreon,

 

Quedaría por tanto dar de alta el Comando que usaremos cuando creemos los Servicios que nos interesen que monitoricen equipos remotos. Vamos a «Configuration» > «Commands» > «Add» y creamos el siguiente comando:

  • Command Name: Indicamos un nombre al comando, para asociarlo lo mejor será ponerle igual que se llame el script que ejecuta, en este caso ‘check_nrpe’.
  • Command Type: Seleccionamos ‘Check’.
  • Command Line: Como siempre, indicamos lo que realmente ejecutará Centreon o Nagios cuando llame a este comando, quedaría algo como: ‘/usr/lib/nagios/plugins/check_nrpe -H IP_EQUIPO_REMOTO -c $ARG1$ -t 30’.

 

En este caso, si nos fijamos, le añado al final un timeout al comando de 30 segundos, ya que quizás algunos comandos que ejecutemos en remoto tardarán algo ¿no? Bueno, cada uno como quiera, pulsamos en «Describe Arguments» y definimos el argumeto que pusimos para cuando creemos el Servicio nos acordemos de lo que hay que rellenar; que será el check/comando que definamos en el nsclient.ini. Veremos ejemplos en futuros documentos.

 

Ejemplo de script en nsclient.ini

 

El funcionamiento sería el siguiente, en la máquina remota donde instalamos el NSClient, dispondremos del fichero de configuración ‘nsclient.ini’, que habrá que ir (i) añadiendo los scripts que ejecutará y (ii) añadiendo los alias que hagan referencia al script. Ejemplo:

 

[/settings/external scripts/scripts]
comando_bat = scripts\\archivo.bat

[/settings/external scripts/alias]
alias_bat = comando_bat

 

Por último, deberemos copiar el script de PowerShell, vbScript, Java, batch… que tengamos a la carpeta ‘scripts’ de NSClient. Cada vez que modifiquemos el fichero de configuración ‘nsclient.ini’ deberemos reiniciar el servicio de Windows «NSClient++» para que recargue la config y ya podremos desde el Nagios remoto llamar a este script, en el ejemplo anterior con:

./check_nrpe -H IP_EQUIPO_REMOTO -c alias_bat

 

Uso de argumentos,

Imaginemos pues, que lo que vayamos a ejecutar, el script en el lado Windows/Linux, requiere de argumentos, y se los queremos pasar desde la máquina Nagios. Como ejemplo fácil de entender, pensamos en un script que monitoriza copias de seguridad, vale? Bien por PowerShell o como fuere. Y a este script yo como argumento le pasare el nombre de la tarea de backup, si? Si quiero, evitar definirlo 5 veces en el INI (ya que tengo 5 tareas de backup), le pasare desde Nagios/Centreon el argumento directamente del Job. Os dejo aquí un ejemplo de la configuración necesaria en el ‘nsclient.ini’, primero habilitaremos que se le puedan pasar argumentos locales y externos y luego ya definimos el comando que ejecutará seguido de los argumentos que espera (en el ejemplo un script de PowerShell):

[/settings/NRPE/server]
allow arguments=true

[/settings/external scripts]
allow arguments=true

[/settings/external scripts/scripts]
check_copias = cmd /c echo scripts\\check_copias_seguridad.ps1  $ARG1$ $ARG2$; exit($lastexitcode) | powershell.exe -command –

[/settings/external scripts/alias]
alias_copias = check_copias

 

Y luego ya podremos desde la máquina Nagios ejecutar un comando pasándole argumentos, que a posteriori los definiremos desde Centreon con GUI de una forma más cómoda:

./check_nrpe -H IP_EQUIPO_REMOTO -c alias_copias -a "primer argumento" "segundo argumento"

 

Lo dicho, iremos viendo en futuros documentos ejemplos prácticos del uso de NRPE, cómo con unos scripts podemos sacar el jugo de toda la información que nos interese. Muchas veces tendremos que hacernos nuestros propios scripts, ¿y por qué no? Si trasladamos todas nuestras necesidades a Nagios, las controlaremos y podremos descansar mucho más tranquilos con nuestra organización totalmente monitorizada!

 

Héctor Herrero