Nagios: Monitorización de servicios de windows

Configuración en windows

Instalación de NSCLient++.

En la instalación, necesitamos especificar desde qué equipos se va a hacer la monitorización (puede ser una subred) y qué clave concertada van a usar tanto cliente como servidor.

Toda la configuración se guarda en un archivo nsclient.ini

[/settings/default]
; ALLOWED HOSTS - A comaseparated list of allowed hosts. You can use netmasks (/ syntax) or * to create ranges.
allowed hosts = 192.168.2.2/25
; PASSWORD - Password used to authenticate against server
password = concerted

Para poder hacer checks sobre servicios, necesitamos además que nsclient acepte argumentos. Para ello, añadimos la sección de nrpe server:

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

Configuración en Nagios

En nuestro caso, hemos optado por el uso del comando check_nrpe.

El nuevo servicio en services.cfg, quedará algo como esto:

 check_nrpe!checkServiceState -a ShowAll 'My Servicio de Windows'

Nagios: Crear un nuevo check en powershell invocado desde nsclient

NAgios – NSCA check

Desarrollo del nuevo check

Es importante respetar los códigos de salida y la sintáxis de nagios par que nuesrto nuevo chequeo pueda ser visualizado correctamente desde nagios.

En el caso de estar usando también pnp4nagios, o cualquier otro addon capaz de hacer una gráfica , hay que respetar también la sintáxis de performance data.

Para definir los argumentos de entrada a un powershell, en el comienzo del script se define su nombre, posición y si es necesario:

[CmdletBinding()]
Param(
  [Parameter(Mandatory=$True,Position=1)]
   [string]$ApplicationPool
   )

Para definir el código de salida, se ha usado definición de variables:

Set-Variable OK 0 -option Constant
Set-Variable WARNING 1 -option Constant
Set-Variable CRITICAL 2 -option Constant
Set-Variable UNKNOWN 3 -option Constant

(...)
exit $CRITICAL

En mi caso, he desarrollado un plugin para poder conocer el estado de un pool de aplicaciones en un servidor IIS. El código completo está aquí.

Publicarlo a través de NSClient++

Con nuestro nuevo script escrito y funcionando, es momento de configurar nsclient++ para poder acceder desde nuestro nagios.

En primer lugar, en la carpeta de scripts C:\Program Files\NSClient++\scripts copiamos nuestro nuevo check con extensión ps1.

El funcionamiento de NSClient++ para los external scripts, hace que todos ellos se invoquen a través del cmd de windows. Por lo tanto, debemos especificar en la linea, que es powershell quien debe ejecutar nuestro nuevo check.

[/settings/external scripts/scripts]

check_default_app_pool = powershell.exe scripts\check_iis8_app_pool_state.ps1 DefaultAppPool

 

Instalación de NSCLient++.

 

 

Configurando NSClient++ para monitorizar Windows 2012

Para monitorizar un SQL Server 2012 desde nagios, vamos a poner en los servidores de SQL Server NSClient++.

Instalación

Descarga la aplicación

Instalación del msi. Aconsejo hacer la instalación completa, el espacio que usa de disco es mínimo y se reducen los problemas después. Se especificando qué servidores de monitorización (nagios) va a lanzar los comandos.

El archivo boot, especifica donde se va a guardar la configuración de NSClient++. En nuestro caso, estará en nsclient.ini.

[settings]
1=ini://${exe-path}/nsclient.ini
[main]
write=ini://${exe-path}/nsclient.ini

Configuración NSCclient.ini

Servidores que podrán hacer consultas por nrpe:

[/settings/default]
allowed hosts = 192.168.25.0/24

Para aceptar argumentos en las invocaciones por nrpe

; Section for NRPE (NRPEServer.dll) (check_nrpe) protocol options.
[/settings/NRPE/server]

; COMMAND ARGUMENT PROCESSING – This option determines whether or not the we will allow clients to specify arguments to commands that are executed.
allow arguments = true

Powershell para iniciar y parar el servicio

restart-service nscp
stop-service nscp
start-service nscp