Contents

Plugin de Nagios con PowerShell (Parte 2): Instalación de NSClient++

En esta segunda parte de la serie veremos cómo instalar y configurar NSClient++ para ejecutar nuestro plugin de Nagios con PowerShell creado en la entrada anterior.

Para esta entrada asumo que tenemos un servidor de Nagios (Core o XI) ya instalado y funcionando sobre el que crearemos el check.

Instalación y configuración de NSClient++

Para empezar con la instalación de NSClient++ nos dirigiremos al apartado de descargas de su página web y descargaremos la versión correspondiente a la arquitectura de nuestro SO.

  • Ejecutamos el instalador.
  • En Select Monitoring Tool marcamos Generic.
  • En Choose Setup Type seleccionamos Typical.
  • En NSClient++ Configuration:
    • Allowed hosts: Introducimos la IP de nuestro servidor Nagios.
    • Password: Establecemos un password (no requerido para checks con nrpe).
    • Modules to load: Marcamos “Enable common check plugins” (si queremos poder utilizar los checks típicos), “Enable NRPE server” y, o bien “Insecure legacy mode” para no usar cifrado o “Safe mode” para usarlo (tiene que estar habilitado en el servidor Nagios).

/wp-content/uploads/2018/05/Nsclient_configuration.png
NSClient para Powershell

Una vez finalizada la instalación copiaremos nuestro script (en este ejemplo check_spooler.ps1) a la carpeta scripts de nuestra instalación de NSClient++ (por defecto “C:\Program Files\NSClient++\scripts”).

Hecho esto sólo nos quedará hacer unos pequeños ajustes en el archivo de configuración de NSClient++ (por defecto ubicado en C:\Program Files\NSClient++\nsclient.ini) para que éste reconozca nuestro flamante script. Para ello abrimos el archivo con nuestro editor de texto favorito y añadimos lo siguiente:

En la categoría [/settings/NRPE/server] añadimos la siguiente línea:

1
allow arguments = true

En la que permitimos los argumentos en los checks. En la categoría [/modules] permitimos el uso de scripts externos:

1
CheckExternalScripts = enabled

Y al final del archivo añadimos una nueva categoría [/settings/external scripts/scripts] con el siguiente contenido:

1
check_spooler=cmd /c echo scripts\check_spooler.ps1; exit $LastExitCode | powershell.exe -command -
  • check_spooler: Es el nombre que le daremos al check y con el que invocaremos el script desde Nagios.
  • check_spooler.ps1: Es el nombre del script a invocar (en nuestro caso el plugin de Nagios con PowerShell).

Y por último reiniciamos el servicio de NSClient++ para que apliquen los cambios (como no, con PowerShell):

1
Restart-Service nscp

Creación del servicio en Nagios

En este punto, si lo hemos hecho todo bien, nuestra máquina Windows a monitorizar ya debería estar lista para ejecutar nuestro plugin de Nagios con PowerShell, por lo que lo último que nos queda es configurar el check desde el lado de Nagios.

Atención: Asumo que la instalación de Nagios ya dispone de check_nrpe instalado.

Para ello definiremos un nuevo servicio para el host en cuestión con un contenido parecido al siguiente:

1
2
3
4
5
6
define service{
	use                     generic-service
	host_name               winserver
	service_description     Estado Spooler
	check_command           check_nrpe!check_spooler
	}

Guardamos el archivo, reiniciamos el servicio de Nagios y si vemos algo parecido a lo siguiente desde la consola web quiere decir que hemos triunfado:

/wp-content/uploads/2018/05/check_ok.png
Plugin de Nagios con Powershell OK

Si probamos a parar el servicio deberíamos ver algo como esto:

/wp-content/uploads/2018/05/check_critical.png
Plugin de Nagios con Powershell Critical

Conclusión

Y hasta aquí la mini serie “Plugin de Nagios con PowerShell”. Reutilizando los pasos descritos podremos crear cualquier check que requiramos y que no encontremos en Nagios Exchange con la ayuda de PowerShell y de nuestra destreza. De hacerlo os invito a que lo subáis a su web para que el resto de la comunidad pueda beneficiarse de los mismos, en su FAQ explican el proceso para hacerlo, no tiene ningún misterio.