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.
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: usuario@mail
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
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