rss
twitter
  •  

Instalar y configurar monit para linux

| Posted in General |

0

Monit

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 !

Compartir:
  • Facebook
  • Twitter
  • Digg
  • Meneame
  • StumbleUpon
  • del.icio.us
  • Google Bookmarks
  • Technorati
  • Netvibes

Escriba un comentario