En este post os vamos a explicar como instalar y configurar Monit en un servidor Ubuntu. Monit es un sistema de motorización para nuestros servidores que nos permite controlar el uso de recursos y servicios.
Monit está recomendado para monitorizar un servidor, si dispones de varios servidores hay otras alternativas como Zabbix o Nagios.
Al final de todo añadimos un enlace a la web Monit donde está toda la documentación sobre configuraciones.
Instalamos Monit en nuestro servidor
# apt install monit
Activamos interfaz web Monit
Crearemos un fichero ejecutando: vi /etc/monit/conf.d/web-interface contenido:
set httpd port 2812
use address 46.183.XXX.XXX #IP Pública de nuestro servidor Cloud
allow 0.0.0.0/0.0.0.0
allow 'admin':'monit' # usuario:contraseña cambiar estos datos por otros más seguros
Configuramos el Servidor SMTP para envío alertas
Omitir este paso si no queremos recibir avisos por email. Crearemos un fichero ejecutando: vi /etc/monit/conf.d/smtp-server contenido:
set mailserver mail.midominio.com port 587 # cambiar mail.midominio.com por tu servidor
username Usuario password "Contraseña" # cambiar Usuario y Contraseña
using TLSV1 with timeout 30 seconds
set alert alertas@midominio.com #email que recibirá alertas
Configuramos el formato de los emails de alerta
Omitir este paso si no queremos recibir avisos por email. Crearemos un fichero ejecutando: vi /etc/monit/conf.d/mail-format contenido:
set mail-format {
from: monit@midominio.com #indicar remitente válido para evitar que antispam
filtren alertas
subject: monit alert -- $EVENT $SERVICE
message: $EVENT Service $SERVICE
Date: $DATE
Action: $ACTION
Host: $HOST
Description: $DESCRIPTION
Monit Clouding
}
Monitorizamos nuestro disco
Crearemos un fichero ejecutando: vi /etc/monit/conf.d/disco contenido:
check filesystem "root" with path /dev/sda1
if space usage > 80% for 8 cycles then alert
if space usage > 99% then stop #para nuestro servidor para evitar que se llene
if inode usage > 80% for 8 cycles then alert
if inode usage > 99% then stop #para nuestro servidor para evitar que se llene
Monitorizamos Servidor Apache
Crearemos un fichero ejecutando: vi /etc/monit/conf.d/apache contenido:
check process apache with pidfile /run/apache2/apache2.pid
start program = "/etc/init.d/apache2 start" with timeout 60 seconds
stop program = "/etc/init.d/apache2 stop"
if cpu > 60% for 2 cycles then alert
if cpu > 80% for 5 cycles then restart
if totalmem > 200.0 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 unmonitor
Monitorizamos Servidor SSH
Crearemos un fichero ejecutando: vi /etc/monit/conf.d/ssh contenido:
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 3 restarts within 5 cycles then unmonitor
Monitorizamos Servidor MariaDB/MySQL
Crearemos un fichero ejecutando: vi /etc/monit/conf.d/mysql contenido:
check process mysqld with pidfile /run/mysqld/mysqld.pid
start program = "/etc/init.d/mariadb start"
stop program = "/etc/init.d/mariadb stop"
if failed host 127.0.0.1 port 3306 then restart
if 3 restarts within 5 cycles then unmonitor
Monitorizamos el tamaño de un fichero
Crearemos un fichero ejecutando: vi /etc/monit/conf.d/size-log contenido:
check file error.log with path /var/log/mysql/error.log
if size > 100 MB then alert
Abrir Firewall Clouding
Para acceder a Monit vía web deberemos abrir el puerto TCP 2812 en el firewall de Clouding.
Reniciar Monit
Una vez ya hemos configurado todos los servicios/recursos a monitorizar ya podemos reiniciar Monit:
# monit reload
Ya podemos visitar la web http://46.183.XXX.XXX:2812 nos pedirá usuario y contraseña, debemos usar los configurados en “Activamos interfaz web Monit”
Aquí puedes ver el aspecto de Monit, hemos simulado un fallo de apache irrecuperable para ver como deja de monitorizar:
Si usas VestaCP o HestiaCP
Si usas VestaCP o HestiaCP tendrás que acceder a él y abrir también el puerto en el apartado del Firewall:
Otras monitorizaciones
Basándote en los ejemplos anteriores se pueden monitorizar cualquier servicio solo tendremos que localizar el correspondiente pid, por ejemplo nos podemos basar en el ejemplo del SSH para CRON, el pid sería: /run/crond.pid
Puedes consultar la documentación de Monit en su web.