vServers con alta disponibilidad con Monit

Monit

Monit es una herramienta Linux para monitorizar diferentes componentes de un servidor tales como demonios, archivos, directorios, servicios de red ,etc. pero con una gran diferencia Monit puede tomar acciones por ejemplo cuando el servicio cae y ademas avisarte de lo acontecido, asi que vamos a utilizar esta herramienta para monitorizar un vserver, levantarlo en caso de caida y que nos avise por mail cuando suceda y vamos a hacerlo en un Ubuntu 12.04 LTS.

Primero lo primero installemos Monit:

sudo apt-get install monit

Ahora para monitorizar un proceso Monit necesita que indiquemos un pidfile, pero la instrucciones de arranque de los vServer no tiene la opción “–pidfile”, asi como ejecutamos un Velneo vServer  pudiendo identificar su PID ?, tiempo atras tome unas lineas de codigo de un hilo del foro para crear un script de auto inicio y terminación de un vServer de tal forma que se inicie al igual que los servicios mas comunes para Linux y lo unico que hice fue añadir el codigo para asociarle un pidfile:

#/etc/init.d/vserver_init.sh
#!/bin/bash
 export PIDFILE=/ruta_donde_esta_vserver/vserver.pid
 case "$1" in
 start)
 /ruta_donde_esta_vserver/vServer.sh -s
 ps -e | grep vServer | cut -d" " -f 2 > ${PIDFILE}
 ;;
 stop)
 /ruta_donde_esta_vserver/vServer.sh -t
 rm ${PIDFILE}
 ;;
 restart)
 /ruta_donde_esta_vserver/vServer.sh -t
 rm ${PIDFILE}
 /ruta_donde_esta_vserver/vServer.sh -s
 ps -e | grep vServer | cut -d" " -f 2 > ${PIDFILE}
 ;;
 esac
 exit $?
<strong>

Ok ahora si tenemos un script que podemos usar para iniciar y parar nuestro vServer usando el comando:  “sudo ./vserver_init.sh start”, básicamente lo que este script hace es iniciar el vserver y despues de iniciado lo busca en la lista de procesos activos y guarda su numero de proceso en el archivo .pid especificado en la ruta (PATH), yo personalmente escogí que el pidfile estuviera en la misma carpeta del vserver pero esto es opcional.

Procedamos a configurar Monit, para hacer esto vamos a ir a /etc/monit/monitrc lo abrimos con un editor (vim por ejemplo) y buscamos la siguientes lineas y las editamos:

set daemon 30 #revisa los servicios en intervalos de 30 segundos

#asignemos un servidor de mail via SMTP, intentalo con tu cuenta de Gmail

set mailserver smtp.gmail.com port 587

username “MYUSER” password “MYPASSWORD”

using tlsv1

set alert pedro_perez@mail.com #asignemos a quien enviar los correos

#Monitorizar tu vserver

check process vServer with pidfile /ruta_donde_esta_vserver/vserver.pid

start program = “/etc/init.d/vserver_init.sh start”

stop program = “/etc/init.d/vserver_init.sh stop”

if failed host 127.0.0.1 port 690 type tcp then alert

if 5 restarts within 5 cycles then timeout

Basicamente lo que hicimos fue decirle a monit: revisa mi vserver cada 30 segundos, estos son los comandos para inciarlo y detenerlo, en caso de caida levántalo y  notifícame a mi correo usando el servidor de correo de Gmail, si se cae mas 5 veces durante 2 minutos y medio terminalo.

no es Genial …

por supuesto Monit tiene mas para dar: un servidor web embebido para que puedas acceder via http y revisar el estado de los servicios, monitorizar carpetas (muy util para los vServers Express así obtendríamos notificaciones cuando se este acabando el espacio en disco), monitorizar archivos, comunicaciones TCP, etc.

pdta: en vClouden cada Sandbox tiene su propio Monit para cuidar el server.

About these ads

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s