Monit es un monitor de procesos opensource, es ejecutable en todas las distros Linux así como en FreeBSD. Podemos visualizar el monitor desde el navegador web, lo podríamos automatizar para que realice trabajos de mantenimiento o reparación automáticamente en caso que detecte errores. También podemos administrar y monitorear programas, archivos, directorios y cualquier dispositivo conectado al servidor. Como ves no solo se limita a realizar verificaciones de la red TCP / IP, verificaciones de protocolo, etc…, es mucho más.
Cabe recordar que usa su propio sistema de logs y envía avisos mediante email que ademas son totalmente personalizables.
Vemos como instalar y configurar en:
- Debian, Ubuntu y sus derivados.
- Rhel, Centos y sus derivados.
- Fedora.
- Arch y sus derivados.
- OpenSuse, Suse.
- FreeBSD.
Instalamos:
Debian, Ubuntu y derivados:
apt update apt install monit
Rhel, Centos y derivados:
yum update yum install monit -y
Fedora:
dnf update dnf install monit
Arch y derivados:
pacman -S monit
Suse, OpenSuse:
yast2 -i monit # otra opción. zypper install monit
FreeBSD:
cd /usr/ports/sysutils/monit make make install
Configurar:
Iniciamos el servicio.
monit
Si se realizo la instalación correctamente veremos una respuesta similar a:
Starting Monit 5.14 daemon with http interface at [localhost]:2812
Comprobamos el estado del servicio:
monit status
Ejemplo de la respuesta en pantalla:
[root@host ~]# monit status The Monit daemon 5.14 uptime: 2m Process 'syslogd' status Running monitoring status Monitored pid 753 parent pid 1 uid 0 effective uid 0 gid 0 uptime 14h 23m children 0 memory 9.6 MB memory total 9.6 MB memory percent 0.1% memory percent total 0.1% cpu percent 0.0% cpu percent total 0.0% data collected Sun, 26 Mar 2017 15:07:58 Process 'sshd' status Running monitoring status Monitored pid 779 parent pid 1 uid 0 effective uid 0 gid 0 uptime 14h 23m children 2 memory 1.3 MB memory total 8.3 MB memory percent 0.0% memory percent total 0.1% cpu percent 0.0% cpu percent total 0.0% port response time 0.015s to [localhost]:232 type TCP/IP protocol SSH data collected Sun, 26 Mar 2017 15:07:58 System 'host.adminserver.es' status Running monitoring status Monitored load average [0.01] [0.06] [0.14] cpu 0.2%us 0.1%sy 0.1%wa memory usage 873.4 MB [15.4%] swap usage 0 B [0.0%] data collected Sun, 26 Mar 2017 15:07:58
Abrimos el archivo de configuración:
nano /etc/monitrc
Como ves en la imagen superior Monit está configurado por defecto para comprobar los servicios con un intervalo de 30segundos, la verdad es que me parece excesivo, mejor cada minuto.
Modificamos:
set daemon 60
Establecer el mail donde recibir los avisos, en:
set mailserver
La ruta de los logs la puedes personalizar en:
nano /etc/monit.d/logging
# Ruta logs to monit.log set logfile /var/log/monit.log
Interface web:
Desde la interfaz web podrás supervisar y administrar los servicios que tengamos configurados, por defecto monit escucha por el puerto 2812 pero debes configurado previamente.
nano /etc/monitrc
Donde nos aparece:
set httpd port 2812 and use address localhost # only accept connection from localhost allow localhost # allow localhost to connect to the server and allow admin:monit # require user 'admin' with password 'monit'
Otra variante según tu distro…
set httpd port 2812 and use address localhost # only accept connection from localhost allow localhost # allow localhost to connect to the server and allow admin:monit # require user 'admin' with password 'monit' allow @monit # allow users of group 'monit' to connect (rw) allow @users readonly # allow users of group 'users' to connect readonly
Debemos borrar esas lineas y pegas lo siguiente:
set httpd port 2812 allow 0.0.0.0/0.0.0.0 allow admin:monit
Puedes modificar:
allow admin:monit
Es el usuario y el pass de acceso a la interface web.
Reiniciamos el servicio.
systemctl restart monit.service
Habilitamos el inicio automático.
systemctl enable monit.service
Acceder a la interface desde tu navegador web:
- http://tu-ip-o-host:2812
Agregar servicios a supervisar:
Puedes agregar todos los servicios que quieras supervisar, para ello crearemos un archivo para cada servicio en la carpeta /etc/monit.d/. Todos los servicios que se supervisen, en caso de caída reiniciaran automáticamente.
Ejemplo 1: Supervisamos el servicio sshd.
nano /etc/monit.d/sshdmonitor
Copia y pega.
check process sshd with pidfile /var/run/sshd.pid start program "/usr/bin/systemctl start sshd.service" stop program "/usr/bin/systemctl stop sshd.service" if failed port 22 protocol ssh then restart
Ejemplo 2: Supervisamos el servicio syslog.
nano /etc/monit.d/syslogmonitor
check process syslogd with pidfile /var/run/syslogd.pid start program = "/usr/bin/systemctl start rsyslog.service" stop program = "/usr/bin/systemctl stop rsyslog.service"
Puedes comprobar que la sintaxis que has introducido sea correcta, con:
monit -t
La respuesta correcta es:
Control file syntax OK
Reiniciamos monit.
monit reload
Con todo esto ya puedes empezar a usar Monit, ademas consume muy pocos recursos.