Monitorización del sistema con Monit

Monitorizar tu servidor linux es una de las tareas mas importantes, interesante y apasionantes que puedes hacer. Una vez consigurado tu sistema, ¿quién te dice que los servicios que has instalado estan funcionando en todo momento?. ¿Cómo puedes saber si un servicio está sobrecargando la memoria o la CPU?

Pues bien, existen programas muy buenos para esto, CACTI, Nagios y Monit, entre otros. He probado Nagios y Monit y me quedo con este ultimo por su sencillez aunque Nagios es extremadamente potente y por tanto tendrá mas posibilidades: seguro.

Mi filosofía hasta ahora ha sido la de cubrir la necesidad con un software sencillo y cuando dicha necesidad ya está cubierta se puede profundizar en un programa más potente.

La configuración de Monit es sencilla y su instalación más sencilla todavia. Para instalarlo en nuestro sistema Ubuntu:

# apt-get install monit

Por defecto, monit no se ejecuta al inicio como medida de seguridad y viene con sus opción comentadas de tal forma que hasta que no lo configuremos nada funcionará.

Para que arranque en el inicio debemos cambiar la propiedad startup=0 a startup=1 que se encuentra en el fichero /etc/default/monit.

Una vez hecho esto pasamos a la configuración del fichero /etc/monit/monitrc.

Para poder explicar cómodamente las principales opción del fichero voy a mostrar aquí mi configuración para que pueda servir de ejemplo y agregaré comentarios:

###############################################################################
## Monit control file
set daemon  120
set logfile syslog facility log_daemon
set eventqueue
basedir /var/monit  # set the base directory where events will be stored
slots 100           # optionaly limit the queue size
set mail-format { from: [email protected] }
set alert [email protected]                       # receive all alerts
set alert [email protected] only on { timeout }  # receive just service-
set httpd port 2812    ##Activo el acceso desde la web
allow localhost        # allow localhost to connect to the server and
allow monit:clave      # require user 'admin' with password 'monit'
allow 11.11.111.112    ##Si vas a acceder desde otra ip pública
allow 192.168.0.0/255.255.255.0  ##Permito el acceso desde mi red local
###############################################################################
## Services
###############################################################################
##Cheque del sistema en el que está instalado monit
check system obelix.digital21.info
if loadavg (1min) > 4 then alert
if loadavg (5min) > 2 then alert
if memory usage > 75% then alert
if cpu usage (user) > 70% then alert
if cpu usage (system) > 30% then alert
if cpu usage (wait) > 20% then alert
##Chequeo de sistemas remotos (otros equipos)
##asterix es el alias que le damos a asterix.homelinux.net que puede ser también
##una ip pública

check host asterix with address asterix.homelinux.net
if failed icmp type echo count 3 with timeout 3 seconds then alert
if failed port 22 protocol ssh with timeout 15 seconds then alert
if failed port 80 with timeout 15 seconds then alert
##Chequeo del mysql instalado en mi servidor
check process mysql with pidfile /var/run/mysqld/mysqld.pid
group database
start program = "/etc/init.d/mysql start"
stop program = "/etc/init.d/mysql stop"
if failed host localhost port 3306 protocol mysql then restart
if 5 restarts within 5 cycles then timeout
##Chequeo de mi Webmin

check process webmin with pidfile /var/webmin/miniserv.pid
group webmin
start program = "/etc/init.d/webmin start"
stop  program = "/etc/init.d/webmin stop"
if failed host localhost port 10000 then restart
if 5 restarts within 5 cycles then timeout
##Chequeo de mi servidor ftp
check process vsftpd with pidfile /var/run/vsftpd/vsftpd.pid
start program = "/etc/init.d/vsftpd start"
stop program  = "/etc/init.d/vsftpd stop"
if failed port 21 protocol ftp then restart
if 5 restarts within 5 cycles then timeout
##Chequeo de mi servidor ssh
check process sshd with pidfile /var/run/sshd.pid
start program  "/etc/init.d/ssh start"
stop program  "/etc/init.d/ssh stop"
if failed port 22 protocol ssh then restart
if 5 restarts within 5 cycles then timeout
##Chequeo de mi servidor samba
check process smbd with pidfile /var/run/samba/smbd.pid
group samba
start program = "/etc/init.d/samba start"
stop  program = "/etc/init.d/samba stop"
if failed host localhost port 139 type TCP  then restart
if 5 restarts within 5 cycles then timeout
depends on smbd_bin
check file smbd_bin with path /usr/sbin/smbd
group samba
if failed checksum then unmonitor
if failed permission 755 then unmonitor
if failed uid root then unmonitor
if failed gid root then unmonitor
check process nmbd with pidfile /var/run/samba/nmbd.pid
group samba
start program = "/etc/init.d/samba start"
stop  program = "/etc/init.d/samba stop"
if failed host localhost port 138 type UDP  then restart
if failed host localhost port 137 type UDP  then restart
if 5 restarts within 5 cycles then timeout
depends on nmbd_bin
check file nmbd_bin with path /usr/sbin/nmbd
group samba
if failed checksum then unmonitor
if failed permission 755 then unmonitor
if failed uid root then unmonitor
if failed gid root then unmonitor

Esta configuración no tiene por qué ser perfecta, pero es la que yo uso en el momento de escribir esto. Monit da mas posibilidades. Te sugiero que las busques en su documentación de esta página web.

Por último, una vez configurado nuestro fichero monitrc, podemos comprobar su sintaxis con:

/etc/monit/#:     /etc/init.d/monit syntax

y para ponerlo en marcha:

# /etc/init.d/monit start

Espero que te sirva.

Publicaciones Similares

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *