Instalar y configurar monit para linux
| en General | Publicado el 13-07-2010
0

No hace mucho puse en marcha en varios servidores un interesante monitor de servicios que es capaz de ejecutar comandos y lanzar alertas que nosotros programemos ante determinadas condiciones que fijemos.
Es capaz de monitorizar cualquier tipo de servicio o demonio, archivos de disco o sistema, vigilar espacios de discos, identificadores de proceso PID, realizar checksum y muchísimas cosas más, su forma de configurar es tan potente que configurarlo resulta en casi un lenguaje de programación.
Sin embargo no hay que asustarse, ya que es tremendamente intuitivo.
La maravilla de que les hablo se llama MONIT y es de licencia libre.
Advertencia: Este artículo es para profesionales que están plenamente familiarizados con servidores Linux. No me hago responsable de ningún daño en su sistema.
Lo primero es bajarnos una copia del programita, al momento de redactar este tutorial la versión estable es la 5.1.1. (no olvides que todo esto has de realizarlo como ROOT del sistema)
wget http://mmonit.com/monit/dist/monit-5.1.1.tar.gz tar zxvf monit-* cd monit* ./configure --without-ssl make && make install
Bien, ya lo hemos instalado… la opción –without-ssl es opcional pero yo la prefiero para evitar que el monitor web que veremos más adelante tenga que necesariamente usar un protocolo HTTPS.
Bien, ya está instalado pero debemos saber que aunque esté instalado faltan 2 cosas: el archivo de configuración y colocarlo como demonio (servicio que se auto-ejecuta cada vez que arranquemos nuestro servidor).
Primero, vamos a preparar a monit como un servicio activo:
cp contrib/rc.monit /etc/init.d/monit chmod 755 /etc/init.d/monit ln -s /usr/local/bin/monit /usr/bin/monit chkconfig --add monit chkconfig monit on
Y ahora nuestro archivo de configuración principal /etc/monitrc y la carpeta /etc/monit donde colocaremos de forma ordenada e independiente cada ‘monitor’ que deseamos establecer :
touch /etc/monitrc chmod 700 /etc/monitrc mkdir /etc/monit
Y nuestro archivo de configuración /etc/monitrc:
# Monit control file
# ==================
# Monit global settings:
# ----------------------
set daemon 60
set logfile syslog facility log_daemon
set mailserver localhost
set alert usuario@dominio.com # direccion a donde enviaremos las alertas del sistema
set mail-format {
from: monit@localhost
subject: $SERVICE $EVENT
message: $ACTION $SERVICE at $DATE on $HOST: $DESCRIPTION.
}
set httpd port 2812 and
allow xxx.xxx.xxx.xxx # La IP remota que tendrá permiso para poder ver el monitor web
allow usuario:clave #pues eso... los permisos que necesitas para poder entrar al monitor vía web
include /etc/monit/server.monit
include /etc/monit/httpd.monit
include /etc/monit/mysqld.monit
Como podrán ver este archivo de configuración permite establecer cada cuanto tiempo realizar la revisión, el formato de correo, remitente y destinatario, servicios que activaremos (con include), y acceso al puerto 2812 vía web con usuario y clave (no olvides abrir este puerto en tu firewall)
Listo, ahora vienen los archivos de configuración de cada servicio:
server.monit:
# Monit Server settings: # ---------------------- check system xxx.xxx.xxx.xxx #IP de tu host if loadavg (1min) > 5 then alert if loadavg (5min) > 10 for then alert if memory usage > 90% then alert if cpu usage (user) > 70% for 3 cycles then alert if cpu usage (system) > 30% for 3 cycles then alert if cpu usage (wait) > 20% for 3 cycles then alert
httpd.monit:
# # Monitor Apache (httpd) # check process httpd with pidfile /var/run/httpd.pid start program = "/etc/init.d/httpd start" with timeout 60 seconds stop program = "/etc/init.d/httpd stop" if totalcpu > 90% for 3 cycles then restart if totalmem > 95% for 3 cycles then restart if children > 250 for 3 cycles then restart if cpu > 70% for 3 cycles then restart if failed host xxx.xxx.xxx port 80 protocol http then restart #IP de tu host
mysqld.monit:
check process mysql with pidfile /var/run/mysqld/mysqld.pid group database start program = "/etc/init.d/mysqld start" stop program = "/etc/init.d/mysqld stop" if cpu > 95% for 2 cycles then restart if memory usage > 75% then restart if failed host xxx.xxx.xxx port 3306 protocol mysql then restart #IP de tu host
Listo, cada quien se puede ajustar sus monitores a su gusto, hay muy buena documentación y muchos ejemplos
Respecto a monit, sólo resta ponerlo a andar:
/etc/init.d/monit restart
Verificar las sintaxis de nuestros archivos de configuración:
monit -t
Y si queremos “recargar” nuestro monitor para releer los archivos de configuración sin necedad de parar el servicio, podemos hacer:
monit reload
Ce tout !, para ver nuestro monitor vía web: http://xxx.xxx.xxx.xxx:2812 (IP del servidor)
Lo demás es lectura, experimentación y curiosidad… las posibilidades son casi infinitas !


