Monitoreo Servidor · 5 min read · Oct 17, 2025

Monitoreo de servidores con Munin y Monit en CentOS 7 - Página 2

5 Instalar y Configurar Monit

A continuación, instalaremos Monit:

yum install monit

Luego creamos los enlaces de inicio del sistema para monit:

systemctl enable monit  
systemctl start monit

El archivo de configuración predeterminado de Monit es /etc/monitrc donde puedes encontrar algunos ejemplos de configuración (puedes encontrar más ejemplos de configuración en http://mmonit.com/wiki/Monit/ConfigurationExamples) que están todos comentados, pero le indica a monit que también busque en el directorio /etc/monit.d archivos de configuración.

En este caso, quiero monitorear:

  • proftpd
  • sshd
  • mysql
  • apache
  • postfix

Además, configuraré estos ajustes para Monit:

  • Habilitar la interfaz web de Monit en el puerto 2812.
  • Usar HTTPS para la interfaz web en lugar de HTTP.
  • Configurar un inicio de sesión protegido por contraseña para la interfaz web.
  • Monit enviará alertas por correo electrónico a root@localhost

Primero configuraré los ajustes de autenticación. Abre el archivo /etc/monit.d/monitrc

nano /etc/monit.d/monitrc

Y desplázate hacia abajo hasta que encuentres esta sección:

set httpd port 2812 and  
   use address localhost # solo aceptar conexión desde localhost  
   allow localhost # permitir que localhost se conecte al servidor y  
   allow admin:monit # requerir usuario 'admin' con contraseña 'monit'  
   allow @monit # permitir a los usuarios del grupo 'monit' conectarse (rw)  
   allow @users readonly # permitir a los usuarios del grupo 'users' conectarse solo lectura

Reemplázalo con los siguientes ajustes:

set httpd port 2812 and  
   use address 0.0.0.0  
   SSL ENABLE  
   PEMFILE /var/certs/monit.pem  
   allow admin:test

La palabra “test” es la contraseña, por favor reemplázala con una contraseña segura y también podrías querer cambiar el nombre de usuario “admin” por un nombre que no sea fácil de adivinar.

Ahora agregamos la configuración para los servicios monitoreados. En lugar de modificar /etc/monitrc, creamos un nuevo archivo de configuración /etc/monit.d/monitrc.

Mi archivo se ve así:

nano /etc/monit.d/monitrc
set logfile syslog facility log_daemon
  
# Enviar correos electrónicos a través de este servidor de correo  
set mailserver localhost
  
# Establecer la dirección From de los correos electrónicos de alerta  
set mail-format { from: [email protected] }
  
# Enviar alertas a esta dirección  
set alert root@localhost
  
# Monitorear el servicio Proftpd
check process proftpd with pidfile /var/run/proftpd/proftpd.pid
   start program = "/usr/bin/systemctl start proftpd"
   stop program  = "/usr/bin/systemctl stop proftpd"
   if failed port 21 protocol ftp then restart
   if 5 restarts within 5 cycles then timeout
  
# Monitorear el servicio SSH
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 5 restarts within 5 cycles then timeout
  
# Monitorear MySQL
check process mysql with pidfile /var/run/mysqld/mysqld.pid
   group database
   start program = "/usr/bin/systemctl start mysqld"
   stop program = "/usr/bin/systemctl stop mysqld"
   if failed host 127.0.0.1 port 3306 then restart
   if 5 restarts within 5 cycles then timeout
  
# Monitorear el servidor web apache
check process apache with pidfile /var/run/httpd/httpd.pid
   group www
   start program = "/usr/bin/systemctl start httpd"
   stop program  = "/usr/bin/systemctl stop httpd"
   if failed host localhost port 80 protocol http
      and request "/monit_token" then restart
   if cpu is greater than 60% for 2 cycles then alert
   if cpu > 80% for 5 cycles then restart
   if totalmem > 500 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
  
# Monitorear el servidor de correo postfix
check process postfix with pidfile /var/spool/postfix/pid/master.pid
   group mail
   start program = "/usr/bin/systemctl start postfix"
   stop  program = "/usr/bin/systemctl stop postfix"
   if failed port 25 protocol smtp then restart
   if 5 restarts within 5 cycles then timeout

(Por favor asegúrate de que solo revisas procesos que realmente existen en tu servidor; de lo contrario, monit no se iniciará. Es decir, si le dices a monit que verifique Postfix, pero Postfix no está instalado en el sistema, monit no se iniciará.)

El archivo de configuración es bastante autoexplicativo; si no estás seguro sobre una opción, echa un vistazo a la documentación de monit: http://mmonit.com/monit/documentation/monit.html

En la parte de apache de la configuración de Monit encuentras esto:

   if failed host localhost port 80 protocol http
      and request "/monit_token" then restart

lo que significa que monit intenta conectarse a localhost en el puerto 80 y trata de acceder al archivo /monit_token que es /var/www/html/monit_token porque la raíz del documento de nuestro sitio web es /var/www/html. Si Monit no tiene éxito, significa que Apache no está en funcionamiento, y Monit va a reiniciarlo. Ahora debemos crear el archivo /var/www/html/monit_token y escribir alguna cadena aleatoria en él:

touch /var/www/html/monit_token

A continuación, creamos el certificado pem ( /var/certs/monit.pem) que necesitamos para la interfaz web de Monit cifrada con SSL:

mkdir /var/certs  
cd /var/certs

Necesitamos un archivo de configuración de OpenSSL para crear nuestro certificado. Puede verse así:

nano /var/certs/monit.cnf
# crear certificados RSA - Servidor

RANDFILE = ./openssl.rnd

[ req ]
default_bits = 1024
encrypt_key = yes
distinguished_name = req_dn
x509_extensions = cert_type

[ req_dn ]
countryName = Nombre del país (código de 2 letras)
countryName_default = MO

stateOrProvinceName             = Nombre del estado o provincia (nombre completo)
stateOrProvinceName_default     = Monitoria

localityName                    = Nombre de la localidad (por ejemplo, ciudad)
localityName_default            = Monittown

organizationName                = Nombre de la organización (por ejemplo, empresa)
organizationName_default        = Monit Inc.

organizationalUnitName          = Nombre de la unidad organizativa (por ejemplo, sección)
organizationalUnitName_default  = Dept. de Tecnologías de Monitoreo

commonName                      = Nombre común (FQDN de tu servidor)
commonName_default              = server.monit.mo

emailAddress                    = Dirección de correo electrónico
emailAddress_default            = [email protected]

[ cert_type ]
nsCertType = server

Ahora creamos el certificado así:

openssl req -new -x509 -days 365 -nodes -config ./monit.cnf -out /var/certs/monit.pem -keyout /var/certs/monit.pem
openssl gendh 512 >> /var/certs/monit.pem
openssl x509 -subject -dates -fingerprint -noout -in /var/certs/monit.pem
chmod 700 /var/certs/monit.pem

Finalmente, podemos iniciar monit:

systemctl restart monit

Ahora apunta tu navegador a https://www.example.com:2812/ (asegúrate de que el puerto 2812 no esté bloqueado por tu firewall), inicia sesión con admin y test, y deberías ver la interfaz web de Monit. Debería verse así:

Pantalla principal de Monit.

(Pantalla Principal)

Detalles de apache de Monit.

(Página de Estado de Apache)

Dependiendo de tu configuración en /etc/monit.d/monitrc, Monit reiniciará tus servicios si fallan y enviará correos electrónicos de notificación si los ID de proceso de los servicios cambian, etc.

6 Enlaces

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.