Monitoreo Servidores · 5 min read · Oct 17, 2025
Monitoreo de servidores con Munin y Monit en CentOS 7.2 - Página 2

5 Instalar y Configurar Monit
A continuación, instalaremos Monit:
yum -y install monitLuego creamos los enlaces de inicio del sistema para Monit:
systemctl enable monit
systemctl start monitEl 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 dice a Monit que también busque en el directorio /etc/monit.d archivos de configuración.
En este caso, monitorearé:
- proftpd
- sshd
- MariaDB
- 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/monitrc
nano /etc/monitrcY 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 en modo solo lecturaReemplá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:testLa 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 se pueda adivinar fácilmente.
Ahora añadimos 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/monitrcset logfile syslog facility log_daemon
# Enviar correos a través de este servidor de correo
set mailserver localhost
# Establecer la dirección From de los correos 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 MariaDB
check process mysql with pidfile /var/run/mariadb/mariadb.pid
group database
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 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 revise 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 acerca de 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 restartlo 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_tokenA continuación, creamos el certificado SSL (pem) (/var/certs/monit.pem) que necesitamos para la interfaz web de Monit cifrada con SSL:
mkdir /var/certs
cd /var/certsNecesitamos 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 = Departamento 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 = serverAhora creamos el certificado así:
openssl req -new -x509 -days 365 -nodes -config ./monit.cnf -out /var/certs/monit.pem -keyout /var/certs/monit.pemopenssl gendh 512 >> /var/certs/monit.pemopenssl x509 -subject -dates -fingerprint -noout -in /var/certs/monit.pemchmod 700 /var/certs/monit.pemFinalmente, podemos iniciar Monit:
systemctl restart monitAhora 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)

(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
- munin: http://munin.projects.linpro.no
- monit: http://mmonit.com/monit
- CentOS: http://www.centos.org
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.