Monit
De acuerdo con su propia definición, Monit es una utilidad gratuita y Open Source para administrar y monitorear procesos, archivos, directorios y filesystems en un sistema Unix. Realiza tareas automáticas de mantenimiento y reparación y puede ejecutar acciones significativas durante situaciones de error.
Sumario
Instalar
Podemos instalarlo desde los repositorios
apt-get install monit
Para descargar la ultima version Monit, podéis hacerlo desde la web oficial: http://mmonit.com/monit/#download
Configuración
Esto son los tres fichero que tenemos que editar para configurar monit.
- /etc/default/monit
- /etc/monit/monitrc
- /etc/monit.d/
El fichero /etc/default/monit sirve para activar/desactivar Monit en el arranque de la máquina y definir opciones para el demonio.
nano /etc/default/monit
Por defecto el demonio ya esta iniciado
El fichero /etc/monit/monitrc es el fichero de configuración principal de monit, donde realizaremos la configuración por defecto.
nano /etc/monit/monitrc
Descomentamos la siguiente linea:
include /etc/monit/conf.d/*
Podremos colocar ficheros de configuración para definir servicios a monitorizar en /etc/monit/conf.d/*:
Acceso al interfaz web de Monit
Para acceder a la interfaz web de Monit tenemos que configurar los siguientes parametros:
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' allow @monit # allow users of group 'monit' to connect (rw) allow @users readonly # allow users of group 'users' to connect readonly
Todas estos parametros estas desactivados, tendremos que activar y configurar los que nos parezcan mas apropiados.
Que escuche en el puerto 2812 (set httpd port 2812).
set httpd port 2812 and
El nombre del host por el que se debe acceder al interfaz es localhost (use address localhost). Si la máquina que estoy monitorizando se llama miservidor.com, podría definir un "use address miservidro.com" en el fichero de configuración para que hubiera que acceder al interfaz de la siguiente manera: http://miservidor:2812.
use address localhost # only accept connection from localhost use address miservidro.com
Que se permite el acceso a la máquina localhost (allow localhost). Podríamos definir otra línea con la IP de nuestro equipo para poder acceder desde él al interfaz web de monit. Por ejemplo: allow 192.168.1.14.
Pero si queremos acceder desde cualquie maquina dentro de nuestra red seria: 192.168.1.1/255.255.255.0 y la anterior no la usamos.
Pero si ademas queremos acceder desde fuera de nuestra res entonces tendriamos que añadir un allow 0.0.0.0
allow localhost # allow localhost to connect to the server and allow 192.168.1.1/255.255.255.0 allow 0.0.0.0
Es necesario introducir el usuario admin con la contraseña monit para lograr el acceso (allow admin:monit).
Que se permite el acceso completo a los usuarios del grupo "monit" (allow @monit).
allow admin:monit # require user 'admin' with password 'monit'
Que se permite acceso de sólo lectura a los usuarios del grupo "users" (allow @users).
allow @users readonly # allow users of group 'users' to connect readonly
Mi configuración quedaria asi:
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' allow 192.168.1.1/255.255.255.0 allow 0.0.0.0 # allow @monit # allow users of group 'monit' to connect (rw) # allow @users readonly # allow users of group 'users' to connect readonly
Enviar notificaciones de Monit usando Gmail
Podemos hacer que Monit nos envíe notificaciones mediante email cuando se produzca un determinado evento en los servicios, ficheros, directorios o dispositivos que estemos monitorizando.
nano /etc/monit/monitrc
set mailserver smtp.gmail.com port 587 username "usuario@gmail.com" password "password" using tlsv1 with timeout 30 seconds
Ahora definimos a quien le enviamos el mail de alerta
set alert usuario@proveedor.dominio
Reglas de monitoreo
Monitorear ssh
Creamos el archivo ssh.monitrc dentro de la carpeta /etc/monit/conf.d
nano /etc/monit/conf.d/ssh.monitrc
check process sshd with pidfile /var/run/sshd.pid group system group sshd start program = "/etc/init.d/ssh start" stop program = "/etc/init.d/ssh stop" if failed host localhost port 22 with proto ssh then restart if 5 restarts with 5 cycles then alert
Monitorear Apache
Creamos el archivo httpd.monitrc dentro de la carpeta /etc/monit/conf.d
nano /etc/monit/conf.d/httpd.monitrc
check process apache with pidfile /var/run/apache2.pid group www start program = "/etc/init.d/apache2 start" stop program = "/etc/init.d/apache2 stop" if failed host [IP_SERVER] port 80 protocol http request /monit/token then restart if cpu is greater than 60% for 3 cycles then alert if cpu > 80% for 5 cycles then restart if totalmem > 400 MB for 5 cycles then restart if children > 250 then restart if loadavg(5min) greater than 10 for 8 cycles then stop if 3 restarts within 5 cycles then timeout
Nota:Hay que crear un archivo en www//monit/token
Monitorear MySQL
Creamos el archivo httpd.monitrc dentro de la carpeta /etc/monit/conf.d
nano /etc/monit/conf.d/mysql.monitrc
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 127.0.0.1 port 3306 then restart if 5 restarts within 5 cycles then timeout
Monitorear Motion
Creamos el archivo motion.monitrc dentro de la carpeta /etc/monit/conf.d
nano /etc/monit/conf.d/motion.monitrc
check process motion with pidfile /run/motion/motion.pid group motion start program = "/etc/init.d/motion start" stop program = "/etc/init.d/motion stop"
Monitorear Host
Creamos el archivo httpd.monitrc dentro de la carpeta /etc/monit/conf.d
nano /etc/monit/conf.d/localhost.monitrc
# check the local system <<your hostname>> check system hp.home if loadavg (1min) > 5 then alert if loadavg (5min) > 3 then alert if memory usage > 75% then alert if swap usage > 25% then alert if cpu usage (user) > 70% then alert if cpu usage (system) > 30% then alert if cpu usage (wait) > 30% then alert # local fs system check check filesystem rootfs with path / if space > 90% then alert if inodes > 90% then alert # include config files for specific checks include /etc/monit/monitrc.d/dnsmasq