Monit y mmonit

6 June, 2019 - Reading time: 6 minutes

Monit:

Sistema de monitorización con todas las características de control y recuperación.

M/Monit (Multiple Monit)

Monitorización pro-activa. M/Monit puede monitorizar y administrar sistemas informáticos, automatizar el mantenimiento, reparar y ejecutar acciones cuando se producen errores.

Imagen M/Monit

Instalación y configuración monit

Instalarlo en debian es tan fácil como lanzar:

$ apt update
$ apt install monit

Tras la instalación tendremos que modificar el archivo monitrc que se encuentra en /etc/monit/

set daemon 120            # check services at 2-minute intervals

Configuración servicio web monit (monitorizar el propio host)

 set httpd port 2812 and
     use address 192.168.1.10  # Solo acepta conexiones del host local, comentar si se va a utilizar m/monit )
     allow 192.168.1.0/24        # Damos acceso desde nuestra red, se puede poner una ip única para acceder desde una sola máquina
     allow admin:contraseña      # Usuario y contraseña
     with ssl {            # Habilitar SSL/TLS y ruta al certificado
         pemfile /ruta/al/certificado/cert.pem
         SELFSIGNED: ALLOW
     }

Configuración de correo para alertar

 set mailserver mail.servidor.eu 587      # primary mailserver
        username "usuario" password "contraseña"
        using tlsv12 # TLS o SSL
        with timeout 30 seconds

 set mail-format {
        from: [email protected]
        subject: $SERVICE $EVENT at $DATE
        message: Monit $ACTION $SERVICE at $DATE on $HOST: $DESCRIPTION.
}

Los archivos de configuración para elegir que servicios utilizamos se introducen en /etc/monit/conf.d se puede tener un único archivo o múltiples.

Ejemplo de un archivo

# SSHD
check process sshd with pidfile /var/run/sshd.pid
        group Anubis
        start program  "/etc/init.d/ssh start"
        stop program  "/etc/init.d/ssh stop"
        if failed port 22 protocol ssh then restart

# SMB
check process samba with pidfile "/var/run/samba/smbd.pid"
        group Anubis
        start program = "/etc/init.d/smbd start"
        stop program  = "/etc/init.d/smbd stop"
        if failed host 127.0.0.1 port 139 type tcp for 2 cycles then restart
        if 2 restarts within 3 cycles then unmonitor

# NGINX
check process nginx with pidfile /var/run/nginx.pid
        group Anubis
        start program = "/etc/init.d/nginx start"
        stop program = "/etc/init.d/nginx stop"

# MYSQL
check process mysql with pidfile /run/mysqld/mysqld.pid
        group Anubis
        start program =  "/etc/init.d/mysql start" with timeout 60 seconds
        stop program  = "/etc/init.d/mysql stop"
        if cpu usage > 80% for 5 cycles then alert
                if failed host 127.0.0.1 port 3306 then restart
                if 5 restarts within 5 cycles then timeout
        if failed unixsocket /var/run/mysqld/mysqld.sock then restart

# FILESYSTEM
check filesystem "root" with path /dev/root
        if space usage > 95% for 10 cycles then alert

Descargar e instalar M/Monit

Elegimos la versión disponible para nuestro sistema en: https://www.mmonit.com/download/

Por ejemplo:

$ wget https://www.mmonit.com/dist/mmonit-3.7.3-linux-arm32.tar.gz

Descomprimimos el archivo y ejecutamos el archivo mmonit dentro de la carpeta /mmonit/bin/

$ ./mmonit/bin/mmonit

Ahora ya podemos acceder desde http://ip.servidor:8080 con el usuario admin y la contraseña swordfish

Editamos /etc/monit/monitrc para que envie datos al collector de M/Monit

  set eventqueue basedir /var/lib/monit/events slots 1000 # optionally limit the queue size
  set mmonit http://usuario:contraseñ[email protected]:8080/collector
      set httpd port 2812
        SSL enable # comentar para deshabilitar
        pemfile /ruta/al/certificado/cert.pem # No incluir esta línea si deshabilitamos SSL
        allowselfcertification # No incluir si deshabilitamos SSL
        allow localhost
        allow 192.168.1.10 # IP primer host que se conecta al collector de m/monit
        allow 192.168.1.11 # IP segundo host
        allow administrador:contraseña # Nombre usuario y contraseña

Añadimos el daemon a systemd para poder utilizar systemctl start/stop/restart, para ello creamos el archivo mmonit.service

$ vim /etc/systemd/system/mmonit.service

Copiamos lo siguiente dentro:

 [Unit]
 Description = Easy, proactive monitoring of Unix systems, network and cloud services
 After = network.target
 Documentation= https://mmonit.com/documentation/

 [Service]
 Type=simple
 KillMode=process
 ExecStart = /opt/mmonit/bin/mmonit -i
 ExecStop = /opt/mmonit/bin/mmonit stop
 PIDFile = /opt/mmonit/logs/mmonit.pid
 Restart = on-abnormal

 [Install]
 WantedBy = multi-user.target

Habilitamos y reiniciamos mmonit

$ systemctl enable mmonit.service
$ systemctl restart monit
$ systemctl start mmonit

Y en principio ya debería aparecer el host en el dashboard de mmonit https://ip.servidor.mmonit:8080

Documentación (en Inglés)

  • monit, Archivos de configuración, ejemplos monitorización de servicios
  • mmonit pdf, Instalación y configuraciónn mmonit

About



Soy administrador de sistemas, documento mis proyectos aquí y a veces escribo sobre otras cosas