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.