Monit
Instalación de monit
Veremos el proceso de instalación en un Sistema Debian 9 (Stretch)
Monit solo requiere de la instalación de un paquete
apt update apt install monit
Configuración de Monit
Activación de la interfaz http
Monit dispone de un servidor http integrado. A través de esta interfaz http puede accederse al estado de los servicios monitorizados por Monit, aunque también se utiliza esta interfaz para el envío de comandos Monit desde la línea de comandos.
Para activar la interfaz http editamos el archivo /etc/monit/monitrc
vi /etc/monit/monitrc
Localizamos la sección comentada
# 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'
Y la editamos para que quede
set httpd port 2812 and use address 0.0.0.0 allow 0.0.0.0/0 # permitir todos allow admin:monit # require user 'admin' with password 'monit'
Con esta configuración podremos acceder al servicio http utilizando la URL
Para acceder a la información de monitorización usaremos (como se define en la configuración anterior)
user: admin password: monit
Pinchando en el enlace el host accedemos al estado del mismo
Definición de directivas genéricas
Algunas directivas interesantes que pueden ser establecidas en el archivo monitrc
Período de ejecución de chequeos
set daemon
set daemon 120
Indica que se hará un chequeo de los servicios a monitorizar cada 2 minutos, puede ser modificado si necesitamos una periodicidad mayor
Credenciales smtp para envío de alertas al mail
set mailserver
Permite definir un servidor SMTP para el envío de alertas por correo. Por ejemplo podemos establecer la siguiente definición de esa directiva
# Configuracion de servidor de correo para alertas de Monit set mailserver smtp.gmail.com port 587 username "monitortest" password "abc123." using tlsv1 # Configuracion del buzón al que se enviarán las alertas set alert monitortest@gmail.com
NOTA: Hay que efectuar un par de pasos adicionales en la cuenta de gmail para poder habilitar el envío utilizando este sistema.
ATENCIÓN A LAS URLs
Formato del mail enviado
set mail-format
Esta directiva permite establecer el formato del correo de alerta que se enviará cuando se produzca alguno de los eventos notificados por monit. Por defecto utiliza un formato de plantilla de mail genérico que puede ser modificado con esta directiva
Podemos acceder a los parámetros del runtime desde el enlace Monit is running on base and monitoring de la página principal:
Definición de componentes a monitorizar
Es posible definir las directivas de monitorización directamente en el archivo monitrc. Sin embargo, a efectos organizativos y aclaratorios es más recomendable definir las directivas en archivos dentro del directorio /etc/monit/conf.d
A continuación vamos a crear varios archivos de texto en los que se incorporán directivas de monitorización específicas para distintos casos de uso.
Monitorización de parámetros generales del sistema
Crearemos un archivo /etc/monit/conf.d/system.monit
vi /etc/monit/conf.d/system.monit
Dentro del archivo incorporaremos las directivas siguientes
check system $HOST if loadavg (1min) > 4 then alert if loadavg (5min) > 2 then alert if cpu usage > 95% for 10 cycles then alert if memory usage > 75% then alert if swap usage > 25% then alert
El lenguaje de definición de directivas de monitorización es bastante claro e intuitivo, utilizando prolijamente la estructura condicional if. Ante cualquier duda de sintaxis o semántica acerca de las mismas se recomienda consultar el Monit Manual de la sección Referencias
Tras editar el fichero reiniciamos el servicio
service monit restart
Monitorización de un servicio
Vamos a ver un conjunto de directivas de monitorización para el servicio apache2. Si este servicio no está instalado en la máquina lo instalamos previamente
apt install -y apache2
A continuación crearemos un archivo /etc/monit/conf.d/apache2.monit
vi /etc/monit/conf.d/apache2.monit
Dentro de ese archivo incorporaremos las siguientes directivas de monitorización
check process apache with pidfile /var/run/apache2/apache2.pid start program = "/etc/init.d/apache2 start" with timeout 60 seconds stop program = "/etc/init.d/apache2 stop" if cpu > 60% for 2 cycles then alert if cpu > 80% for 5 cycles then restart if totalmem > 200.0 MB for 5 cycles then restart if children > 250 then restart if loadavg(5min) greater than 10 for 8 cycles then stop if failed host localhost port 80 protocol http and request "/index.html" then restart # if failed port 443 protocol https with timeout 15 seconds then restart # if 3 restarts within 5 cycles then unmonitor group server
En este bloque de definición se hace uso de las directivas start program y stop program las cuales se utilizan en caso de ser necesario ejecutar el reinicio (restart) del servicio. Por ejemplo en la línea
if totalmem > 200.0 MB for 5 cycles then restart
... en caso de que la memoria total del proceso monitorizado excediera los 200MB durante 5 períodos de monitorización consecutivos se ejecutaría un reinicio del servicio, para ello se invocaría primero al comando de la directiva stop program y a continuación al comando de start program
Tras editar el fichero reiniciamos el servicio
service monit restart
Página de monitorización de Apache;
Monitorización del sistema de archivos
A continuación crearemos un archivo /etc/monit/conf.d/filesystem.monit
vi /etc/monit/conf.d/filesystem.monit
check filesystem root with path /dev/sda1 if space usage > 80% for 5 times within 15 cycles then alert if space usage > 99% then stop if inode usage > 30000 then alert if inode usage > 99% then stop group server
Tras editar el fichero reiniciamos el servicio
service monit restart
Monitorización de host
A continuación crearemos un archivo /etc/monit/conf.d/host.monit
vi /etc/monit/conf.d/host.monit
check host localhost with address 127.0.0.1 if failed ping then alert if failed port 3306 protocol mysql with timeout 15 seconds then alert if failed port 80 protocol http then alert
En este caso hacemos un chequeo del host local consistente en varias acciones
- ejecución de un ping
- chequeo del puerto 3306 local (mysql)
- chequeo del puerto 80 local (http)
En caso de fallo de cualquiera de los chequeos se envía una alerta
Tras editar el fichero reiniciamos el servicio
service monit restart
Monitorización de un enlace de red
A continuación crearemos un archivo /etc/monit/conf.d/network.monit
vi /etc/monit/conf.d/network.monit
check network public with interface enp0s3 if failed link then alert if changed link then alert if saturation > 90% then alert if download > 10 MB/s then alert if total uploaded > 1 GB in last hour then alert
Tras editar el fichero reiniciamos el servicio
service monit restart
Referencias
https://mmonit.com/monit/documentation/monit.html
JavierFP 18:42 09 jue 2018 (CET)