Un servidor de monitoreo con Munin

Tenía ganas de hablar de Munin, una herramienta de monitoreo de sistemas, la red y la infraestructura. Este producto se encarga de registrar diferentes actividades de los componentes del servidor y clientes, y refleja esta información en gráficas. Es similar a la herramienta Cacti, de la que ya hablamos en su día.

Con Munin se pueden monitorear fácilmente el rendimiento de computadoras, redes, SAN, aplicaciones, mediciones meteorológicas y lo que se nos ocurra. Permite tener un historial de actividad de todos estos componentes, durante el tiempo.

Munin está escrito en Perl y usa RRDtool para crear gráficos, que son accesibles vía web. Una de sus ventajas es el gran número de complementos de monitoreo disponibles, hasta 500.  Estos son utilizados por los nodos de Munin para recopilar información del estado actual de diferentes objetos.

En multitud de páginas web existen guías sobre su instalación en diferentes distribuciones de GNU/Linux. Yo voy a explicar su instalación sobre un servidor VPS, en mi proveedor de confianza Clouding.io, sobre una distribución Debian 10

Logo del Munin

Instalar y configurar Munin en Debian 10

Antes de nada, debemos instalar el servidor web, en este caso Apache, de la siguiente manera:

sudo apt install apache2 apache2-utils

Añadimos los módulos necesarios para su funcionamiento:

sudo apt install libcgi-fast-perl libapache2-mod-fcgid
sudo a2enmod fcgid

Los paquetes necesarios para la instalación ya se encuentran disponibles en los repositorios de la distribución, por lo que esto nos facilita mucho las cosas.

sudo apt update
sudo apt install munin munin-node munin-plugins-extra

Configuración de Munin

Con Munin podemos monitorizar el propio servidor donde esta instalado, aunque su función principal es controlar otros dispositivos remotos. Debemos tener en cuenta que el fichero principal de configuración en Debian está ubicado en /etc/munin/munin.conf y lo usaremos más adelante para añadir los nodos que queremos controlar.

Como no queremos que cualquiera pueda acceder al panel web del producto, vamos a indicarle un usuario y contraseña, utilizando el comando htpasswd, ya que el producto funciona sobre un servidor web con Apache, como sigue:

htpasswd -c /etc/munin/munin-htpasswd admin

De esta manera definimos el usuario y la contraseña para acceder vía web.

El siguiente paso es copiar el fichero de configuración web a la carpeta correspondiente de Apache y añadir el nuevo virtual host:

sudo copy -p /etc/munin/apache24.conf /etc/apache2/sites-available/munin.conf
sudo a2ensite munin
sudo systemctl reload apache2

Una vez hecho debemos hacer un paso adicional, que es habilitar el acceso remoto a la interfaz. Para ello modificamos el fichero /etc/apache2/sites-available/munin.conf, quedando de la siguiente forma:

# ***** COMMON SETTINGS FOR ALL STRATEGIES *****

ScriptAlias /munin-cgi/munin-cgi-graph /usr/lib/munin/cgi/munin-cgi-graph
Alias /munin/static/ /var/cache/munin/www/static/
 
<Directory /var/cache/munin/www>
    #Require local
    #Require all granted
    AuthUserFile /etc/munin/munin-htpasswd
    Authtype Basic
    AuthName "Munin"
    Require valid-user
    Options FollowSymLinks SymLinksIfOwnerMatch
    Options None
</Directory>
 
<Directory /usr/lib/munin/cgi>
    #Require local
    #Require all granted
    AuthUserFile /etc/munin/munin-htpasswd
    Authtype Basic
    AuthName "Munin"
    Require valid-user
    Options FollowSymLinks SymLinksIfOwnerMatch
    <IfModule mod_fcgid.c>
        SetHandler fcgid-script
    </IfModule>
    <IfModule !mod_fcgid.c>
        SetHandler cgi-script
    </IfModule>
</Directory>

Una vez hecho simplemente hemos de recargar el servicio de Apache:

sudo systemctl restart apache2.service

Para reiniciar el servicio de Munin:

sudo systemctl restart munin-node.service

Ya podemos acceder vía web:

Aspecto de la interfaz web de Munin

Habilitar módulos adicionales en Munin

Con el comando munin-node-configure --suggest podemos habilitar los módulos adicionales recomendados:

munin-node-configure --suggest

Con un resultado similar a este:

Listado de módulos

La columna «Used» muestra si un módulo está habilitado, la columna «Suggestions» muestra si el servidor ejecuta un servicio que puede ser monitoreado por este módulo. Debemos crear un enlace simbólico, si lo queremos habilitar, para el módulo en /etc/munin/plugins.

Por ejemplo si queremos habilitar los modulos de Apache:

cd /etc/munin/plugins
ln -s /usr/share/munin/plugins/apache_accesses
ln -s /usr/share/munin/plugins/apache_processes
ln -s /usr/share/munin/plugins/apache_volume

Y reiniciamos el servicio:

sudo systemctl restart munin-node.service

Con el resultado:

Gráficas de estado de Apache en Munin

La gracia de estos productos es controlar otros clientes, ya sean servidores o dispositivos de red, como switches, firewalls o routers. En la siguiente entrada veremos como se hace:

Cómo añadir un cliente remoto a Munin

Para más información podéis consultar la web oficial del proyecto:

Web oficial Munin