jueves, 8 de septiembre de 2011

Monitoreando servicios con Monit

Que onda gente!, dandole a linux de nuevo, trabjando con el server me doy cuenta de la necesidad de tener tus servicios monitoreados, aunque he configurado logwatch con nivel medio de output para que me envie todos los logs diariamente a mi correo siento que no es suficiente información, que tal que apache se haya caido y yo no sabia? o el otro dia que mientras hacía pruebas apage syslogd, aunque ahy soluciones muy robustas a estos problemas como Nagios el cual pienso probar en el futuro, queria algo mas fácil y rápido para monitorear mis servicios críticos, me encontre con Monit



Monit es un programa open source que se encarga de monitorear el estado de nuestros servicios, ya sean apache, mysql, ssh, etc tu configura Monit para moniorear el servicio y el lo hace, ademas puede monitorear folders y archivos por ejemplo viendo que su checksum no cambie (para saber si alteraron el archivo) tambiéen puede monitorear los permisos de un folder o archivo y otras cosas (vease  Monit doc) ademas puedes ver el estado de lo que monitorees (servicios, archivos, etc) desde tu navegador. La interfaz no es la mas bonita pero es suficiente para lo que necesitamos, monit incluye un pequeño servidor embebido para poder ver lo que se enceuntra monitoreado y manejar algunos aspectos, aunque es mejor configurar el monitoreo desde su(s) archivos de configuración, les dejo una pantalla de como se ve.
 Una vez instalado y configurado se ve algo así, podemos hacer click en las instancias que monitorea para ver mas información, pero no les enseñare esas mejor les digo como poner Monit ;).

Instalación

  1. Bajar Monit http://mmonit.com/monit/download/
    Yo baje la versión precompilada para correrlo drectamente pero si gustas puedes compilarlo tu mismo haciendo:

     $ tar zxvf monit-x.y.z.tar.gz (were x.y.z denotes version numbers)
     $ cd monit-x.y.z
     $ ./configure (use ./configure --help to view available options)
     $ make && make install
  2. Si bajaste la versión precompilada haz esto:
     $ tar zxvf monit-x.y.z.tar.gz (were x.y.z denotes version numbers)
     $ cd monit-x.y.z
    
    
  3. Puedes mover el ejecutable a donde estan tus binarios yo lo moví a /usr/local/sbin y copia los archivos de configuracion a /etc
     $ mv bin /usr/local/sbin
     $ cp conf/monitrc /etc/
     
Configuración
Ahora tenemos que configurar monit, esto se hace desde su archivo de configuración que movimos a /etc/monitrc les dije que copiaramos el archivo en vez de moverlo para que tenan el otro de referencia puesto que trae ejemplos y muchos comentarios utiles.

Vamos a hacernos root para trabajar con los archivos de Monit, tecnicamente no es necesario siempre y cuando tu seas owner del archivo pero yo hice a root owner de monit y monitrc entonces root tiene que correr monit .
NOTA: En el archivo de configuración de Monit se puede ver información sensible como los usres y pass de Monit, por eso recomiendo hace un # chmod 700 /etc/monitrc y # chown -R root:root /etc/monitrc


Todo el archivo viene comentado y les recomiendo que lo lean, vamos a configurar Monit para que haga alguans cosas que quermos

  1. Quiere que monitoree Apache, MySQL y SSH
  2. Quiero que en caso de que fallen los levante y me informe de ello
  3. Quiero que me pueda mandar correos de los eventos que haya
  4. Quiero que Monit "reviva" (haga respawn) en caso de que falle (Usaremos init)
NOTA: La configuración que se muestra a continuación es solo explicativa, puede cambiar lo que gustes, este es olo un ejemplo, para mas información http://mmonit.com/monit/documentation/monit.html

La configuración que mostraré nos provee de los puntos anteriores, entre mos al archivo:
 
# vim /etc/monitrc


Si quieres puedes borrar lo que tenga el archivo y poner solo esto, pero puedes ponerlo entre los ejemplo que ya vienen con el archivo de configuración, abajo aparece la configuración que escribi con comentarios para que este mas claro :P


Grabemos nuestro archivo y salgamos de vim
Init

Hemos configurado Monit, pero necesitamos que init lo levante al bootear el sistema así que modificaremos nuestro inittab hagamos

 # vim /etc/inittab 
 
Y agregamos la siguiente linea al final

 mo:2345:respawn:/usr/local/sbin/monit -Ic /etc/monitrc -d 120

Esta línea le dice en que runlevels se debe cargar monit, donde se encuentra y le pasamos ademas algunos parametros al correrlo, ve el man de monit para mas información.

Ahora tenemos que hacer que init vuelva a leer /etc/inittab

 # telinit q
 
Listo! init debera estar corriendo verifica tus logs para ver si todo esta bien, si no cambiaste la directiva de log, puedes verlo en /var/log/messages

Man pages

Por último ya que pusimos Monit desde la versión precompilada no se han instalado las Man pages, entra al directorio donde descomprimiste monit


 $ cd /homo/me/monit-x.y
 $ cp man/monit.1 /usr/local/shara/man/man1/
 
Puedes ponerlas en otro lado pero yo las deje aquí porque man buscara por ellas aquí, el directorio puede cambiar según la distro que uses, esto lo hiec en RedHat Enterprise 5

Listo abre tu navegador y navega a http://ip_de_tu_server:2812 (u otro puerto si lo cambiaste) y si todo salio bien podras ver a monit corriendo y ver lo que esta monitoreado, ahora puedes estar tranquilo que tus servicios ctríticos estan seguros y si algo pasa te enteraras de ello, nos vemos despues!.

1 comentario:

Deja tu comentario aquí, cuenta que te parecio el artículo o simplemente saluda!