Monitorizar servidor con Monit, instalar y configurar

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

Monitorizar servidor con Monit, instalar y configurar 1

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

Monitorizar servidor con Monit, instalar y configurar 2

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.

 

Agregar comentario