Monitorizar mi servidor Centos con Monit

En este post os vamos a explicar como instalar y configurar Monit en un servidor Centos. 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

rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum install monit
systemctl start monit.service
systemctl enable monit.service

Activamos interfaz web Monit

Crearemos un fichero ejecutando: vi /etc/monit.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.d/stmp-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.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.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.d/apache contenido:
check process apache with pidfile /run/httpd/httpd.pid
start program = "/usr/bin/systemctl start httpd" with timeout 60 seconds
stop program = "/usr/bin/systemctl stop httpd"
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.d/ssh contenido:
check process sshd with pidfile /var/run/sshd.pid
start program "/usr/bin/systemctl start sshd"
stop program "/usr/bin/systemctl stop sshd"
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.d/mysql contenido:
check process mysqld with pidfile /var/run/mariadb/mariadb.pid
start program = "/usr/bin/systemctl start mariadb"
stop program = "/usr/bin/systemctl stop mariadb"
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.d/size-log contenido:
check file error.log with path /var/log/mariadb/mariadb.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.
Monit-Firewall

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:24812 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:

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.

To write a comment on this article, fill out the form below. Fields marked with an asterisk (*) are required.