Monit es una utilidad gratuita de código abierto para la gestión y control de procesos, archivos, directorios y sistemas de ficheros en un sistema UNIX. Monit lleva a cabo el mantenimiento y reparación automática y puede ejecutar acciones significativas en situaciones de error.

Monit puede iniciar un proceso si no se ejecuta, reiniciar un proceso si no responde y detener un proceso que utiliza una cantidad de recursos también. Usted puede utilizar Monit para supervisar los archivos, directorios y sistemas de archivos buscando cambios, tales como los cambios de marca de tiempo, los cambios de control o cambios de tamaño. También puede supervisar varios hosts; Monit puede hacer ping a un host remoto y puede comprobar las conexiones TCP / IP y puerto del servidor.

Monit registra los eventos en el syslog o en su propio archivo de registro y le informa sobre las condiciones de error y el estado de recuperación a través de alertas personalizables.

Monit es un software libre, puede redistribuirlo y / o modificarlo bajo los términos de la GNU General Public License. Monit es un proyecto de código abierto que consiste en voluntarios no remunerados que contribuyen con trabajo y código para el proyecto en su tiempo libre. El proyecto consta de un equipo central de desarrolladores y colaboradores de todas partes del mundo. Hay también una activa y numerosa comunidad de usuarios que discuten el uso de Monit, responden preguntas y comparten consejos y trucos en las listas de correo Monit.

Para instalarlo en ubuntu usamos

sudo apt-get install monit

Una vez instalado tenemos que editar el archivo /etc/monit/monitrc y colocarle los servicios que queremos monitoriear. Aqui les dejo un ejemplo del archivo que sirve para comenzar a aprender

set daemon  10
set logfile syslog facility log_daemon
set mailserver localhost
set alert administrator@domain.com                      # receive all alert
set alert anotheradmin@domain2.com
set httpd port 2812 and
use address localhost  # only accept connection from localhost
allow localhost        # allow localhost to connect to the server and
allow admin:monit      # require user 'admin' with password 'monit'

#
#
######################
## Services
######################
##
## Check general system resources such as load average, cpu and memory
## usage. Each test specifies a resource, conditions and the action to be
## performed should a test fail.
#

check system 127.0.0.1
if loadavg (1min) > 5 then alert
if loadavg (5min) > 10 then alert
if loadavg (1min) > 20 then exec "/bin/bash /root/handle_high_load.sh"
if memory usage > 75% 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

check process apache
with pidfile "/var/run/apache2.pid"
start program = "/etc/init.d/apache2 start" with timeout 60 seconds
stop program = "/etc/init.d/apache2 stop"
if 2 restarts within 3 cycles then timeout
if totalmem > 100 Mb then alert
if children > 255 for 5 cycles then stop
if cpu usage > 95% for 3 cycles then restart
if failed port 80 protocol http then restart
group server
depends on httpd.conf, httpd.bin

check file httpd.conf
with path /etc/apache2/httpd.conf
# Reload apache if the httpd.conf file was changed
if changed checksum
then exec "/usr/local/apache/bin/apachectl graceful"

check file httpd.bin
with path /usr/sbin/apache2
# Run /watch/dog in the case that the binary was changed
# and alert in the case that the checksum value recovered
# later
if failed checksum then exec "/watch/dog"
else if recovered then alert

Claro esta que cada vez que en el archivo se hace referencia a un archivo tendremos que reemplazarlo por el lugar donde ese archivo esta almacenado en cada sistema. Para mas datos de la configuracion podemos visitar http://mmonit.com/monit/documentation/monit.html

Una vez hecho esto podemos iniciar monit usando

sudo /etc/init.t/monit start

Ya podemos conectarnos la interfaz grafica haciendo http://127.0.0.1:2812 y veremos algo asi

Pagina web del proyecto aquí
Descarga Monit aquí