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.

martes, 12 de julio de 2011

Había que ponerlo!!

Esto es lo que pasa cuando veo a cierto peke peke!!


lunes, 4 de julio de 2011

Instalar Subversion y apache en Windows,

Buenas:

Os dejo al docu para la instalación de Subversion y Apache en Windows, sólo se instalarlo, por lo que el uso posterior desconozco como es.


La instalación de Subversion no conlleva ninguna complicación, simplemente descargar, hacer una instalación normal y si queremos, podemos modificar la ruta donde queremos que se instale, por defecto “C:\Archivos de Program\subversion\” .

Una vez instalado y para comprobar que funciona, abriremos una consola y ejecutaremos :

>svn
Si responde "type 'svn help' for usage"

Significará que está correctamente instalado.

Ahora crearemos una carpeta donde se guardarán los repositorios y crearemos un repositorio de prueba para comprobar que funciona.

En nuestro caso hemos creado el siguiente directorio D:\SVN\, abriremos una consola (Inicio -> Ejecutar -> cmd), y ejecutaremos el siguiente comando:


>svnadmin create D:\SVN\prueba

Una vez ejecutado este comando se nos creará un repositorio de prueba para SVN.

Por último y antes de continuar, tendremos que crear dentro del directorio de repositorios D:\SVN las siguientes carpetas: trunks, branches, tags y custom-config.



Instalación de Apache

Para la visualización de nuestro Subversion instalaremos Apache.

La instalación es igual de sencilla que Subversion, solo podemos modificar la ruta de instalación y en un apartado del asistente, nos pedirá Network Domain, Server Name y Administrator´s mail; en los 2 primeros, pondremos la IP del servidor, en el último caso y al no disponer de un servidor de correo, pondremos un mail inventado, por ejemplo admin.@admin.es, si se dispone de correo, poner un correo.

Finalizaremos la instalación e intentaremos levantar el servicio, nos puede dar unerror de que se está usando el puerto 80, por lo que simplemente cambiaremos el puerto del apache en el fichero de configuración, donde modificaremso el "listen":


“C:\Archivos de programa\Apache Software Foundation\Apache2.2\conf\httpd.conf”

Buscaremos la línea listen y haremos el siguiente cambio:

Listen 80
por

Listen IP:81


Aprovechando que tenemos abierto el httpd.conf modificaremos las siguientes líneas para conectar el apache con SVN.

En primer lugar descomentaremos (#) esta línea:

LoadModule dav_module modules/mod_dav.so

Y al final de los módulos añadiremos estas 2:

LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so


Ahora iremos a la sección que comienza como y lo modificaremos así:


Options FollowSymLinks
AllowOverride None
Order deny,allow
Allow from all


Por último añadiremos al final del fichero las siguientes líneas modificando la ruta del repositorio y añadiendo la ruta donde vamos a tener dichos repositorios:


DAV svn
SVNParentPath

AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /custom-config/svn-password.pass

AuthzSVNAccessFile /custom-config/svn-authz.conf
Require valid-user


Ahora que hemos modificado el archivo lo guardaremos y procederemos a pegar en apache los módulos de Subversion.

Tendremos que copiar los archivos mod_dav_svn.so y mod_authz_svn.so que se encuentran en \bin a la ruta \modules.

También copiaremos los archivos libdb44.dll y intl3_svn.dll que están en \bin a \bin.

Una vez copiados estos ficheros, crearemos usuarios y les daremos permisos de acceso a SVN; para ello abriremos una consola y ejecutaremos lo siguiente y crearemos un primer usuario:

"c:\Program Files\Apache Software Foundation\Apache2.2\bin\htpasswd" -cm D:\SVN\custom-config\svn-password.pass demo

Nos pedirá la password para este usuario 2 veces y las guardará en /custom-config/svn-password.pass

Para añadir nuevos usuarios tendremos que ejecutar el siguiente comando:

"c:\Program Files\Apache Software Foundation\Apache2.2\bin\htpasswd" -m D:\SVN\custom-config\svn-password.pass test

La diferencia es la opción “c”, esto no añade, crea y elimina todo lo anterior.

Una vez creados nuestros usuarios, en la ruta D:\SVN\custom-config\ crearemos el siguiente fichero, svn-authz.conf y lo editaremos con los siguientes datos:



[groups]
administrator = demo
prueba = test

[/]
@administrator = rw
@prueba = r

[/trunk]
@prueba = rw

[/branches]
@prueba = rw

[/tags]
@prueba = rw


Ya guardado el archivo, reiniciaremos el servicio de apache, al intentar iniciarse, es probable que nos dé el siguiente error en el visor de sucesos:

“The Apache service named reported the following error:
>>> httpd.exe: Syntax error on line 129 of C:/Archivos de programa/Apache Software Foundation/Apache2.2/conf/httpd.conf: Cannot load C:/Archivos de programa/Apache Software Foundation/Apache2.2/modules/mod_dav_svn.so into server: No se puede encontrar el m\xf .”

Para solucionarlo, simplemente tendremos que copiar todas las *.dll que están en \bin en \modules\ con esto se solucionará el problema.

Intentaremos reiniciar el apache nuevamente y ahora sí debería dejar el servicio levantado:

Para comprobar, introduciremos en un navegador lo siguiente (en nuestro caso):

http://IP:81/svn/prueba/

y nos mostrará esta página:

prueba - Revision 0: /