Instalación y configuración de Munin en OpenBSD
Por el 2 de Abril de 2022
Munin es una herramienta de monitorización de red que facilita la detección de problemas mediante la elaboración de gráficas de forma periódica, analizando el uso de memoria, espacio libre en disco, uso de las interfaces de red y otros datos interesantes. Es un programa modular y permite el uso de plugins personalizados.
Estas indicaciones son válidas para Munin 2.0.69 en OpenBSD 7.1, por lo que si usas una versión posterior es posible que cambie algo.
Instalación
Esta primera instalación la haré en el servidor que hará tanto de nodo como de generador de los datos presentados en HTML. Instalaré estos tres programas:
- munin-node corre en segundo plano recogiendo datos sobre la propia máquina
- munin-server recoge los datos de los distintos nodos y genera las gráficas en HTML
- rrdcached funciona como servidor de caché para reducir el uso de entrada/salida del disco
# pkg_add munin-node munin-server rrdtool
Una vez instalados los tres programas conviene leer las notas de uso de estos paquetes, las cuales se encuentran en el directorio /usr/local/share/doc/pkg-readmes/
Configuración
Los archivos de configuración de munin se encuentran en el directorio /etc/munin/.
munin-node.conf
Para indicar a munin que datos tiene que generar hay que activar los plugins. Ejecutando como usuario munin-node-configure --shell
listará los comandos a ejecutar como root para enlazar los plugins por defecto.
munin.conf
Este archivo no es necesario cambiarlo, aunque yo he especificado el nombre de la máquina editando esta parte del archivo:
# a simple host tree
[mail.example.com]
address 127.0.0.1
use_node_name yes
También hay que especificar el archivo sock de rrdcached:
# RRD updates are per default, performed directly on the rrd files.
# To reduce IO and enable the use of the rrdcached, uncomment it and set it to
# the location of the socket that rrdcached uses.
#
rrdcached_socket /var/run/rrd/rrdcached.sock
crontab
Añado esta linea de crontab (# crontab -e
) al usuario root para que genere las gráficas cada 5 minutos:
*/5 * * * * su -s /bin/sh _munin /usr/local/bin/munin-cron
newsyslog
Es conveniente añadir esto al archivo /etc/newsyslog.conf para rotar los logs de munin:
/var/log/munin/munin-graph.log _munin:_munin 644 7 250 * Z
/var/log/munin/munin-html.log _munin:_munin 644 7 250 * Z
/var/log/munin/munin-limits.log _munin:_munin 644 7 250 * Z
/var/log/munin/munin-update.log _munin:_munin 644 7 250 * Z
rrdtool
Como en OpenBSD el servidor web funciona con chroot en /var/www hay que copiar rrdtool y algunas librerías a este directorio. Esto se puede realizar automáticamente tal y como indica el pkg-readme con este comando:
# /usr/local/share/examples/rrdtool/rrdtool-chroot enable
Esto se debe de hacer cada vez que el paquete rrdtool sea actualizado en el sistema.
Arrancando los programas
# rcctl enable munin_node rrdcached
# rcctl start munin_node rrdcached
Como añadir un nuevo nodo
Si quieres monitorizar otro servidor basta con instalarle munin-node y editar estos campos de la configuración, suponiendo que el servidor principal que genera las gráficas tiene la IP 203.0.113.1:
allow ^203\.0\.113\.1$
[...]
# Which address to bind to
host *
De nuevo se hacen los enlaces que indica la salida del comando munin-node-configure --shell
y se activa y arranca munin_node:
# rcctl enable munin_node
# rcctl start munin_node
Y en el archivo munin.conf del servidor se añade el nuevo nodo:
# a simple host tree
[mx-backup.example.com]
address 203.0.113.1
use_node_name yes
Recuerda que el servidor que genera las gráficas debe poder acceder al nodo munin a través de TCP puerto 4949. También debes añadir los logs de munin a newsyslog como anteriormente.
Configuración de httpd para que muestre los datos
Si todo ha ido bien, munin generará archivos HTML periódicamente en el directorio /var/www/htdocs/munin/. Ahora toca configurar httpd(8) para que cargando https://munin.example.com en el navegador aparezca la página de munin protegida por usuario y contraseña.
Lo primero es crear una entrada de tipo A (y AAAA para IPv6) en el DNS para el nombre de host munin.example.com apunte al servidor.
Una vez hecho esto voy a crear el archivo htpasswd. Primero genero la contraseña ejecutando htpasswd usuario
; tras introducir la contraseña nos indicará la línea de texto que va al archivo htpasswd, que en este ejemplo será /var/www/htpasswd/munin.example.com.htpasswd, que sería algo así:
foo:$2b$10$oJSLq4vh6Z4.EFGLIa142eSnH8vbIEvHFPxe9Kyoe8KlfWMLLrTLe
/etc/httpd.conf
Esta es la parte correspondiente de la configuración del servidor web, que no reproduzco al completo al ser un tema aparte. Puedes ver un ejemplo en el archivo /etc/examples/httpd.conf.
authenticate with "/htpasswd/munin.example.com.htpasswd"
location * {
root "/htdocs/munin"
}