Monit es una herramienta de monitoreo de procesos de código abierto para el sistema operativo Linux que lo ayuda a monitorear el proceso del sistema. Cada vez que el servicio/proceso deja de funcionar, realiza automáticamente el mantenimiento y la reparación del proceso en particular y se asegura de que vuelva a estar en línea.
Monit también se puede usar para administrar y monitorear programas, archivos, directorios, sistemas de archivos, verificaciones de red TCP/IP, verificaciones de protocolo y puede utilizar SSL para tales verificaciones.
Se registra en su archivo de registro y notifica al usuario a través de mensajes personalizables.
Esta guía lo ayudará a configurar Monit en CentOS 8 / RHEL 8.
Instalar Monit
Instale las herramientas de compilación necesarias, ya que Monit aún no se ha empaquetado como rpm para CentOS 8/RHEL 8.
dnf install -y git gcc glibc make glibc-devel kernel-headers autoconf automake libtool bison flex libzip-devel pam-devel openssl openssl-devel
Clona el código fuente de Monit para compilarlo.
git clone https://bitbucket.org/tildeslash/monit.git
Compila Monit con una serie de los siguientes comandos.
cd monit ./bootstrap ./configure make make install
Configurar Monit
Funcionalidad
Copie el archivo monitrc de la fuente descargada al directorio /etc.
cp monitrc /etc/
Realizaremos algunos cambios en el archivo de configuración de Monit para satisfacer nuestros requisitos.
vi /etc/monitrc
De forma predeterminada, Monit está configurado para verificar los servicios en un intervalo de 30 segundos. Este intervalo se puede modificar cambiando la línea de abajo.
set daemon 30
Puede configurar un servidor de correo electrónico para recibir alertas en su bandeja de entrada.
set mailserver mx.itzgeek.local port 25Las alertas por correo electrónico se pueden personalizar utilizando plantillas integradas que se encuentran en el propio archivo de configuración. Consulte las alertas por correo con Monit al final de este artículo para obtener más información.
La configuración de registros se puede cambiar utilizando el siguiente archivo.
set log /var/log/monit.log
Asegúrese de descomentar la siguiente línea. Colocaremos archivos de monitoreo de servicio aquí.
include /etc/monit.d/*
Interfaz web
Monit también proporciona una interfaz web para monitorear y administrar los servicios configurados. De forma predeterminada, Monit escucha en el puerto 2812, pero debe configurarse.
Edite el archivo de configuración de Monit /etc/monitrc.
vi /etc/monitrc
Busque el puerto httpd 2812, modifique las siguientes entradas.
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' #with ssl { # enable SSL/TLS and set path to server certificate # pemfile: /etc/ssl/certs/monit.pem #}
PARA:
set httpd port 2812 and use address 0.0.0.0 # only accept connection from localhost (drop if you use M/Monit) allow 0.0.0.0/0 # allow localhost to connect to the server and allow admin:monit # require user 'admin' with password 'monit' #with ssl { # enable SSL/TLS and set path to server certificate # pemfile: /etc/ssl/certs/monit.pem #}
Desde la configuración anterior, Monit escuchará en el puerto 2812 en todas las interfaces. El usuario administrador podrá acceder a la interfaz web desde cualquier red.
Configuración del sistema
Ahora crearemos un archivo systemd para iniciar automáticamente Monit al iniciar el sistema.
vi /lib/systemd/system/monit.service
Utilice la siguiente configuración.
# This file is systemd template for monit service. To # register monit with systemd, place the monit.service file # to the /lib/systemd/system/ directory and then start it # using systemctl (see below). # # Enable monit to start on boot: # systemctl enable monit.service # # Start monit immediately: # systemctl start monit.service # # Stop monit: # systemctl stop monit.service # # Status: # systemctl status monit.service [Unit] Description=Pro-active monitoring utility for unix systems After=network.target Documentation=man:monit(1) https://mmonit.com/wiki/Monit/HowTo [Service] Type=simple KillMode=process ExecStart=/usr/local/bin/monit -I ExecStop=/usr/local/bin/monit quit ExecReload=/usr/local/bin/monit reload Restart = on-abnormal StandardOutput=null [Install] WantedBy=multi-user.target
Vuelva a cargar el demonio systemd.
systemctl daemon-reload
Inicie el servicio Monit.
systemctl start monit
Monit de inicio automático al inicio.
systemctl enable monit
Cortafuegos
Configure el firewall para permitir el acceso a la interfaz web de Monit, ejecutándose en el puerto 2812.
firewall-cmd --permanent --add-port=2812/tcp firewall-cmd --reload
Acceder a la interfaz web de Monit
Abra su navegador web y vaya a la siguiente URL.
http://su.ip.dirección.ess:2812O
http://su.fq.dn:2812Utilice el nombre de usuario y la contraseña mencionados en el paso anterior.
La página de inicio de Monit se verá así:
Configurar servicios para monitorear con Monit
Una vez que la interfaz web esté activa, podemos comenzar a configurar otros servicios que desee monitorear.
mkdir /etc/monit.d/
Puede colocar los archivos de configuración en el directorio /etc/monit.d/.
Configurar servicio para syslog.
vi /etc/monit.d/syslogmonitor
Utilice la siguiente información.
check process SysLog with pidfile /var/run/rsyslogd.pid start program = "/usr/bin/systemctl start rsyslog.service" stop program = "/usr/bin/systemctl stop rsyslog.service"
Servicio de configuración para HTTP.
vi /etc/monit.d/httpdmonitor
Utilice la siguiente información.
check process HTTPD with pidfile /var/run/httpd/httpd.pid start program "/usr/bin/systemctl start httpd.service" stop program "/usr/bin/systemctl stop httpd.service" if failed port 80 protocol http then restart
Una vez configurado, pruebe la sintaxis de Monit
monit -t
Salida:
Control file syntax OK
Vuelva a cargar Monit para aplicar los cambios.
systemctl reload monit
Acceda a la interfaz web. Debería ver los nuevos servicios que configuramos hace un momento.
Al hacer clic en un servicio, obtendrá más información sobre el servicio en particular. Aquí, puede realizar acciones como iniciar, detener y reiniciar el servicio, y también deshabilitar el monitoreo.
Pruebe el monitoreo
Ahora detenga el servicio HTTP para nuestras pruebas.
systemctl stop httpd
Espere 30 segundos, Monit iniciará el syslog automáticamente. Puede encontrarlo en el registro de Monit.
cat /var/log/monit.log
Salida:
[EST Jan 27 20:37:03] error : 'HTTPD' process is not running [EST Jan 27 20:37:03] info : 'HTTPD' trying to restart [EST Jan 27 20:37:03] info : 'HTTPD' start: '/usr/bin/systemctl start httpd.service' [EST Jan 27 20:37:38] info : 'HTTPD' process is running with pid 25270
Alerta por correo con Monit
Hay plantillas de alerta predefinidas disponibles en Monit para alertar a los administradores del sistema cuando falla un servicio en particular. Para esta demostración, utilizaremos el relé local (servidor de correo electrónico) para alertar al usuario root.
Edite el archivo de configuración.
vi /etc/monitrc
Puede actualizar la siguiente plantilla de alerta según sus requisitos.
set mail-format { from: Monit <monit@$HOST> subject: monit alert -- $EVENT $SERVICE message: $EVENT Service $SERVICE Date: $DATE Action: $ACTION Host: $HOST Description: $DESCRIPTION Your faithful employee, Monit }
Establezca aquí la dirección del destinatario para recibir alertas sobre todo tipo de acciones
set alert root@localhost
Establezca aquí la dirección del destinatario para no alertar sobre los reinicios del servicio iniciados por el usuario.
set alert root@localhost not on { instance, action }
Finalmente, establezca la configuración del servidor de correo para que pueda recibir correos.
set mailserver localhost
Aquí, estoy usando el relé local dnf install -y sendmail &&systemctl start sendmail para que podamos leer las alertas por correo electrónico en la terminal para confirmar el mecanismo de alerta.
Vuelva a cargar el servicio.
systemctl reload monit
Ver Alerta
Monit ha enviado correos electrónicos al usuario raíz sobre el proceso HTTP.
cat /var/spool/mail/root
Salida:
To: [email protected] Subject: monit alert -- Does not exist HTTPD Date: Tue, 28 Jan 2020 01:44:05 GMT X-Mailer: Monit 5.27.0 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Message-Id: <[email protected]> Does not exist Service HTTPD Date: Mon, 27 Jan 2020 20:44:05 Action: restart Host: centos8.itzgeek.local Description: process is not running Your faithful employee, Monit @ ITzGeek From [email protected] Mon Jan 27 20:44:47 2020 Return-Path: <[email protected]> Received: from centos8.itzgeek.local (localhost [127.0.0.1]) by centos8.itzgeek.local (8.15.2/8.15.2) with ESMTP id 00S1ilKL026285 for <root@localhost>; Mon, 27 Jan 2020 20:44:47 -0500 From: "Monit" <[email protected]> To: [email protected] Subject: monit alert -- Exists HTTPD Date: Tue, 28 Jan 2020 01:44:47 GMT X-Mailer: Monit 5.27.0 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Message-Id: <[email protected]> Exists Service HTTPD Date: Mon, 27 Jan 2020 20:44:47 Action: alert Host: centos8.itzgeek.local Description: process is running with pid 26069 Your faithful employee, Monit @ ITzGeek
O
Utilice mutt dnf install -y mutt, un cliente de correo electrónico para ver alertas.
Conclusión
Eso es todo. Hemos configurado correctamente Monit en CentOS 8/RHEL 8.