viernes, 22 de julio de 2011

Monitorizar en Nagios con un script propio a través de NSCLIENt++

Debido a que no hay mucha documentación sobre esto, o mejor dicho, que para mi gusto no está bien explicada, voy a exponer los pasos a seguir para hacer funcionar un script personal a través de check_nrpe.

Hay que tener en cuenta, que yo utilizo NSCLIENT++, pero creo que no hay mucha diferencia con NRPE para Windows.

Lo primero que haremos será crear nuestro script, yo lo que quiero monitorizar, es la descarga de ficheros, para ello, y con una comprobación rutinaria, si se descargan se generará un fichero con un texto, si no, se generara este fichero con otro texto diferente;

Para explicarlo, si se descarga bien en el texto pondrá 0 o si se descarga mal, se pondrá 1.
El script es el siguiente:

@echo off
C:\UnxUpdates\grep 0 [ruta fichero]
if errorlevel 1 goto final
if errorlevel 0 exit 0

:final
echo No se han descargado los archivos
exit 2

Para realizar este fichero, necesitamos el comando “grep”, para ello nos lo descargaremos de la siguiente página:

http://unxutils.sourceforge.net/

Aparte de “grep”, nos descargaremos muchos más comandos, pero actualmente solo nos interesa este.

Para ejecutar el comando, tendremos que poner la ruta completa donde está el “grep”, después el texto a buscar y finalmente la ruta del fichero donde buscar.
Si no encuentra el 0, la descarga ha fallado y el “errorlevel” será igual a 1, por lo que a través de un “goto” indicamos que no se ha realizado la descarga y provocamos un “exit 2”, el exit 2 es por que Nagios identifica cada número a un estado, quedando así:

Exit 0 == OK
Exit 1 == Warning
Exit 2 == Critical

Si el texto es encontrado, el “errorlevel” será igual a 0 y para Nagios todo estará OK.
Una vez generado el script, copiaremos el fichero en rutansclient++/scripts y modificaremos o descomentaremos las siguientes líneas del NSC.ini:

; Script to check external scripts and/or internal aliases.
CheckExternalScripts.dll;
[NRPE]
allow_arguments=1
allow_nasty_meta_chars=1
use_ssl=1
-> Si utilizáis SSL.
[External Script]
;# COMMAND TIMEOUT
command_timeout=60
allow_arguments=1
allow_nasty_meta_chars=1
;# SCRIPT DIRECTORY
; All files in this directory will become check commands.
; *WARNING* This is undoubtedly dangerous so use with care!
script_dir="rutaNSCLIENT++\scripts\*.bat"
bat=scripts\%SCRIPT% %ARGS%
[External Scripts]
check_downloads=scripts\buscar.bat
-> El nombre con el que llamaremos a nuestro script y la ruta donde se encuentra.

Si tenemos ya, todo esto configurado, reiniciaremos el NSCLIENT++ y desde Nagios, ejecutaremos el siguiente comando:

./check_nrpe -H 192.168.17.183 -u -c check_downloads

Si se ha ejecutado correctamente, nos responderá con la línea completa donde esté el texto, si no, nos dirá el texto que hemos añadido para comentar que no se han descargado los ficheros.
En la GUI aparecerá verde con el texto que hayamos buscado y Critical con el texto que hayamos añadido.

Espero que sirva, y si tenéis alguna pregunta, no dudéis en avisarme.

Un saludo.