Contents

Plugin de Nagios con PowerShell (Parte 1): Creación del script

Si bien Nagios dispone de un extenso catálogo público de plugins creados por la comunidad, es posible que tengamos necesidades específicas que no estén cubiertas en dicho catálogo. Es por eso que en esta mini serie de entradas vamos a ver cómo crear nuestro propio plugin de Nagios con Powershell y cómo configurarlo posteriormente en la máquina destino con la ayuda del cliente NSClient++.

Códigos de retorno de un plugin de Nagios

Si nos dirigimos a la guía de desarrollo de plugins de Nagios nos encontramos con que los posibles códigos de retorno de un plugin de Nagios son los siguientes:

  • OK (0): Se ha podido realizar el check y el servicio funciona correctamente.
  • Warning (1): Se ha podido realizar el check pero el servicio está por encima de un valor de alarma o no está funcionando correctamente.
  • Critical (2): El plugin ha detectado que o el servicio no estaba corriendo o estaba por encima de un valor crítico.
  • Unknown (3): Se han proporcionado argumentos inválidos al plugin o hay fallos a bajo nivel en el mismo.

Sabiendo los tipos de retorno disponibles para nuestro plugin y su correspondiente valor numérico a devolver (entre paréntesis en la lista anterior) ya podemos empezar a darle forma al script con el que crearemos nuestro primer plugin de Nagios con PowerShell.

Diseño del plugin de Nagios con PowerShell

Para la realización de nuestro plugin de prueba crearemos un script que monitorizará el servicio de “Cola de impresión” de Windows (spooler).

Lo primero que necesitaremos saber será qué campo del servicio queremos consultar:

/wp-content/uploads/2018/05/Servicios.png
Plugin de Nagios con PowerShell

Como podemos ver en la captura anterior la propiedad “Status” nos indica que el servicio está corriendo (estado “Running”).

Para este plugin de ejemplo podemos determinar los siguientes dos estados: · OK (0): El servicio está corriendo (running). · Critical (2): El servicio está en cualquier otro estado (parado, arrancando, parando…).

Creación del script

Ahora que sabemos lo que tenemos que devolverle a Nagios podemos ponernos a picar código. El resultado final debería ser algo así:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# Extraemos la propiedad "Status" del servicio Spooler.
$service_status = Get-Service 'Spooler' | Select -ExpandProperty Status

# Según el contenido de "Status" devolveremos un estado u otro
If ($service_status -eq "Running") {
    # Si el servicio está en running devolvemos el texto correspondiente y estado 0
    Write-Host "OK! El servicio se encuentra en estado $service_status"
    Exit 0
}
Else {
    # Si el servicio no está en running devolvemos el texto correspondiente y estado 2
    Write-Host "CRITICAL! El servicio se encuentra en estado $service_status"
    Exit 2
}

Es importante devolver siempre, a parte del estado mencionado anteriormente, el texto que mostrará Nagios en su panel de control (En este caso mediante Write-Host en las líneas 7 y 12 del script).

Conclusión

Y hasta aquí esta primera parte de la mini serie de entradas sobre la creación de un plugin de Nagios con PowerShell. En la próxima entrada veremos cómo instalar y configurar Nagios y NSClient++ para ejecutar nuestro plugin de prueba.