Controla tu servidor con Monit

El artículo de hoy va sobre Monit, una herramienta muy importante para la monitorización de sistemas, que incluye acciones para solventar ciertos problemas de manera automática. Se trata de un producto clave para asegurar nuestros servidores GNU Linux.

monit-logo

Sobre Monit

Se trata de una herramienta para la gestión y seguimiento de procesos, programas, archivos, directorios y sistemas de archivos en sistemas similares a UNIX. Lleva a cabo el mantenimiento y reparación automática y puede ejecutar acciones significativas para solventar la situación de error. Por ejemplo, puede iniciar un proceso si no se está ejecutando, reiniciarlo e incluso detenerlo si utiliza demasiados recursos. También se pueden controlar los cambios en ficheros, también los del sistema, y directorios, tales como marcas de tiempo, cambios de suma de verificación o cambios en sus tamaños.

Se configura desde la línea de comandos, también incorpora una interfaz gráfica vía http. Los logs se pueden controlar desde el fichero syslog o bien desde su propio archivo de registro. Notifica las incidencias de manera personalizada. Monit, puede realizar diversas comprobaciones en redes, protocolos y puede trabajar con SSL para realizar los controles.

Es un producto de software libre, utiliza una licencia AGPL 3.0

¿Qué podemos hacer con Monit?

Se pueden monitorizar los procesos demonio o programas similares que se ejecuten en el servidor local. Respecto a los procesos demonio es muy útil con los que se iniciar en el arranque del sistema, por ejemplo sendmail, sshd, Apache o MySQL. Si se diese el caso que no se está ejecutando sendmail, se pude configurar para que lo encienda de manera automática; si el servidor web Apache está utilizando demasiados recursos, al ser víctima de un ataque de denegación de servicio (DDoS), se puede detener o reiniciar y nos enviará un mensaje de alerta. Incluso puede llegar a controlar los ciclos de CPU o de memoria utilizados por un proceso en concreto.

Ya he comentado antes que puede controlar las conexiones de red, puede trabajar con los principales protocolos ya sea HTTP, SMTP e incluso añadir adicionales, si fuese necesario.

Por último y no menos importante, monitoriza perfectamente el estado del servidor, tanto el uso de memoria, CPU o la carga del sistema.

¿Cómo funciona?

Su comportamiento se controla desde la línea de comandos, como he dicho antes, mediante parámetros o bien modificando el fichero monitrc, con una serie de declaraciones concretas. El fichero generalmente está ubicado ~/.monitrc, si no existe se crea entonces en /etc/monitrc o en otros sitios, según el sistema operativo.

Para interactuar con el programa utilizaremos el parámetro -c, así:

  1. monit -c /var/monit/monitrc

Pero vaya, creo que me estoy adelantando, primero tenemos que instalar el programa, es bastante fácil, por cierto,  viene en la mayoría de las distribuciones:

  1. #En Debian, Devuan, Ubuntu, ElementaryOS
  2. apt update
  3. apt install monit
  4. #En CentOS
  5. yum update
  6. yum install monit -y
  7. #En Fedora
  8. dnf update
  9. dnf install monit
  10. #En Arch y derivadas
  11. pacman -S monit 
  12. #En OpenSUSE
  13. yast2 -i monit 
  14. #En FreeBSD
  15. cd /usr/ports/sysutils/monit
  16. make
  17. make install

Vale, ya lo tenemos instalado. Para iniciarlo por primera vez debemos escribir:

  1. monit -t

Si nos muestra el mensaje «Control file syntax OK«, es que de momento todo va bien :), seguimos. Vamos a echar un vistazo al fichero monitrc, que en mi caso está ubicado en /etc/monit/ , ya que utilizo para pruebas un sistema Debian Jessie :

Muestra monitrc

Muestra monitrc

En dicho fichero reside toda la configuración, la monitorización de servicios, etcétera. Por norma general se configura el programa modificando dicho fichero. Su sintaxis es muy sencilla, por lo que simplemente al leer el fichero, podemos saber el cometido de cada parte. Se divide en tres apartados:

  • Opciones globales, que están precedidas por la palabra reservada set.
  • Las entradas include, que indican la configuración adicional de otros ficheros. Por defecto tenemos una entrada de este tipo para los ficheros ubicados en /etc/monit/conf.d
  • Configuraciones de servicios, que están precedidas por la palabra check.

Otro ficheros importantes son /usr/sbin/monit, que es el binario en sí, y /etc/default/monit, que incluye un fichero de configuración básico. Es necesario establecer el parámetro statup como 1 para que el programa funcione.

Laboratorio de pruebas

Para testear el producto he instalado un servidor LAMP, ya que quiero probar de trabajar con el servidor Apache.

Configuraremos el programa para que compruebe el proceso de Apache, para que responda a las solicitudes HTTP y HTTPS, y comprobar tanto el uso de la memoria y de la CPU. Debemos añadir las siguientes líneas, dentro del apartado «Services«, justo antes de «Includes«

  1. #Se reinicia el servicio Apache si tiene mucha carga
  2. check process apache with pidfile /var/run/apache2/apache2.pid
  3.      start program = "/etc/init.d/apache2 start"
  4.      stop program = "/etc/init.d/apache2 stop"
  5.      if cpu > 40% for 2 cycles then alert
  6.      if cpu > 60% for 5 cycles then restart

De esta manera si el servidor web tiene sobrecarga se reiniciará.

Esto es un ejemplo, os recomiendo consultar la documentación oficial o su página web.

Ya he comentado antes que se puede acceder vía web a su panel, utilizando el puerto 2812, para ello debemos descomentar la línea al respecto en el fichero de configuración /etc/monit/monirtc, que comienza con «set httpd port 2812…» y reiniciar el servicio con:

  1. /etc/init.d/monit restart

Y así podemos acceder desde ‘localhost:2812‘ , el usuario para acceder es ‘admin’ y la contraseña ‘monit’, que se pueden cambiar desde el fichero de configuración.

Aspecto web panel monit

Aspecto web panel monit

Lo dejamos aquí, espero que os haya parecido interesante. Sólo hemos tocado el programa por encima, quizás, de aquí a un tiempo, volvamos con él. No olvides compartir el artículo en tus redes sociales. Nos leemos en la próxima ^.^

Los derechos de la imagen de la portada aquí.