Monitoreo Servidor · 7 min read · Jan 06, 2026
Monitoreo de Servidores con Munin y Monit en Ubuntu 16.04 LTS (Xenial Xerus) - Página 2
6 Instalar y Configurar Monit
Para instalar Monit, hacemos esto:
apt-get -y install monitAhora debemos editar /etc/monit/monitrc. El /etc/monit/monitrc por defecto tiene muchos ejemplos, y puedes encontrar más ejemplos de configuración en http://mmonit.com/monit/documentation/. Sin embargo, en mi caso quiero monitorear proftpd, sshd, mysql, apache y postfix, quiero habilitar la interfaz web de Monit en el puerto 2812, quiero una interfaz web https, quiero iniciar sesión en la interfaz web con el nombre de usuario admin y la contraseña howtoforge, y quiero que Monit envíe alertas por correo electrónico a root@localhost, así que mi archivo se ve así (he añadido ejemplos para otros demonios a la configuración para que puedas ajustar el archivo a tus necesidades):
cp /etc/monit/monitrc /etc/monit/monitrc_orig
cat /dev/null > /etc/monit/monitrc
nano /etc/monit/monitrcset daemon 60
set logfile syslog facility log_daemon
set mailserver localhost
set mail-format { from: [email protected] }
set alert root@localhost
set httpd port 2812 and
SSL ENABLE
PEMFILE /var/certs/monit.pem
allow admin:howtoforge
check process sshd with pidfile /var/run/sshd.pid
start program "/usr/sbin/service ssh start"
stop program "/usr/sbin/service ssh stop"
if failed port 22 protocol ssh then restart
if 5 restarts within 5 cycles then timeout
check process apache with pidfile /var/run/apache2/apache2.pid
group www
start program = "/usr/sbin/service apache2 start"
stop program = "/usr/sbin/service apache2 stop"
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
#check process mysql with pidfile /var/run/mysqld/mysqld.pid
# group database
# start program = "/usr/sbin/service mysql start"
# stop program = "/usr/sbin/service mysql stop"
# if failed host 127.0.0.1 port 3306 then restart
# if 5 restarts within 5 cycles then timeout
#check process proftpd with pidfile /var/run/proftpd.pid
# start program = "/usr/sbin/service proftpd start"
# stop program = "/usr/sbin/service proftpd stop"
# if failed port 21 protocol ftp then restart
# if 5 restarts within 5 cycles then timeout
#
#check process postfix with pidfile /var/spool/postfix/pid/master.pid
# group mail
# start program = "/usr/sbin/service postfix start"
# stop program = "/usr/sbin/service postfix stop"
# if failed port 25 protocol smtp then restart
# if 5 restarts within 5 cycles then timeout
#
#check process nginx with pidfile /var/run/nginx.pid
# start program = "/usr/sbin/service nginx start"
# stop program = "/usr/sbin/service nginx stop"
# if failed host 127.0.0.1 port 80 then restart
#
#check process memcached with pidfile /var/run/memcached.pid
# start program = "/usr/sbin/service memcached start"
# stop program = "/usr/sbin/service memcached stop"
# if failed host 127.0.0.1 port 11211 then restart
#
#check process pureftpd with pidfile /var/run/pure-ftpd/pure-ftpd.pid
# start program = "/usr/sbin/service pure-ftpd-mysql start"
# stop program = "/usr/sbin/service pure-ftpd-mysql stop"
# if failed port 21 protocol ftp then restart
# if 5 restarts within 5 cycles then timeout
#
#check process named with pidfile /var/run/named/named.pid
# start program = "/usr/sbin/service bind9 start"
# stop program = "/usr/sbin/service bind9 stop"
# if failed host 127.0.0.1 port 53 type tcp protocol dns then restart
# if failed host 127.0.0.1 port 53 type udp protocol dns then restart
# if 5 restarts within 5 cycles then timeout
#
#check process ntpd with pidfile /var/run/ntpd.pid
# start program = "/usr/sbin/service ntp start"
# stop program = "/usr/sbin/service ntp stop"
# if failed host 127.0.0.1 port 123 type udp then restart
# if 5 restarts within 5 cycles then timeout
#
#check process mailman with pidfile /var/run/mailman/mailman.pid
# group mail
# start program = "/usr/sbin/service mailman start"
# stop program = "/usr/sbin/service mailman stop"
#
#check process amavisd with pidfile /var/run/amavis/amavisd.pid
# group mail
# start program = "/usr/sbin/service amavis start"
# stop program = "/usr/sbin/service amavis stop"
# if failed port 10024 protocol smtp then restart
# if 5 restarts within 5 cycles then timeout
#
#check process courier-imap with pidfile /var/run/courier/imapd.pid
# group mail
# start program = "/usr/sbin/service courier-imap start"
# stop program = "/usr/sbin/service courier-imap stop"
# if failed host localhost port 143 type tcp protocol imap then restart
# if 5 restarts within 5 cycles then timeout
#
#check process courier-imap-ssl with pidfile /var/run/courier/imapd-ssl.pid
# group mail
# start program = "/usr/sbin/service courier-imap-ssl start"
# stop program = "/usr/sbin/service courier-imap-ssl stop"
# if failed host localhost port 993 type tcpssl sslauto protocol imap then restart
# if 5 restarts within 5 cycles then timeout
#
#check process courier-pop3 with pidfile /var/run/courier/pop3d.pid
# group mail
# start program = "/usr/sbin/service courier-pop start"
# stop program = "/usr/sbin/service courier-pop stop"
# if failed host localhost port 110 type tcp protocol pop then restart
# if 5 restarts within 5 cycles then timeout
#
#check process courier-pop3-ssl with pidfile /var/run/courier/pop3d-ssl.pid
# group mail
# start program = "/usr/sbin/service courier-pop-ssl start"
# stop program = "/usr/sbin/service courier-pop-ssl stop"
# if failed host localhost port 995 type tcpssl sslauto protocol pop then restart
# if 5 restarts within 5 cycles then timeout
#
#check process dovecot with pidfile /var/run/dovecot/master.pid
# group mail
# start program = "/usr/sbin/service dovecot start"
# stop program = "/usr/sbin/service dovecot stop"
# if failed host localhost port 143 type tcp protocol imap then restart
# if 5 restarts within 5 cycles then timeoutEl 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:
mkdir /var/www/html/monit
echo "hello" > /var/www/html/monit/tokenA 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/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 = 2048
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 = serverAhora creamos el certificado de esta manera:
openssl req -new -x509 -days 365 -nodes -config ./monit.cnf -out /var/certs/monit.pem -keyout /var/certs/monit.pemopenssl gendh 1024 >> /var/certs/monit.pemopenssl x509 -subject -dates -fingerprint -noout -in /var/certs/monit.pemchmod 600 /var/certs/monit.pemFinalmente, podemos iniciar Monit:
service monit restartAhora 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 howtoforge, y deberías ver la interfaz web de Monit. Debería verse así:

(Pantalla Principal)

(Página de Estado del Sistema)
Dependiendo de tu configuración en /etc/monit/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.
Para obtener el estado de Monit en la terminal, ejecuta el comando “monit status”:
monit statusEl comando mostrará el estado de todos los servicios monitoreados.

7 Configurar Monit en ISPConfig
El Panel de Control del Servidor ISPConfig puede mostrar datos de Monit dentro de su módulo Monitor. Para habilitar esa función en ISPConfig, inicia sesión en ISPConfig como usuario Administrador (admin), ve a Sistema > Configuración del servidor, completa la URL, el nombre de usuario y la contraseña para Monit como se muestra a continuación.

8 Enlaces
- munin: http://munin-monitoring.org/
- monit: http://mmonit.com/monit/
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.