By

Munin

Últimamente en Yaco Sistemas estamos migrando servicios que se encuentran desplegados actualmente en servidores antiguos a máquinas virtuales. Cada vez que realizamos la migración de algún servicio, instalamos Munin y de hecho, hoy he tenido que hacerlo, asi que aprovecho para compartirlo con vosotros.

¿Qué es Munin?

Munin es una herramienta de monitorización software libre bajo licencia GNU GPL version 2. Permite monitorizar uno o varios equipos, permite mostrar los resultados via web mediante gráficas, está escrito en Perl y permite el uso de plugins, lo cual lo hace una herramienta bastante potente.

Instalación

Instalaremos Munin desde los repositorios del sistema. En este caso estoy en un sistema Debian Squeeze.

# apt-get install munin munin-common munin-plugins-extra

Una vez instalados los paquetes ya tendremos Munin casi funcionando. Munin puede actuar de dos formas: como servidor, el cual mostrará los datos recopilados de uno o más nodos, y como nodo, el cual se encarga de enviar datos al servidor. En este caso el propio Munin actuará como servidor y nodo al mismo tiempo.

Antes de configurarlo vamos a dar un repaso a los ficheros y directorios más importantes:

  • /etc/munin/munin.conf: es el fichero de configuración del servidor Munin.
  • /etc/munin/munin-node.conf: fichero de configuración del nodo Munin.
  • /etc/munin/plugin-conf.d/munin-node: hay ciertos plugins que necesitan parámetros para funcionar, configuraremos los plugins en este fichero.
  • /etc/munin/plugins/: directorio con los plugins activos en Munin. No son más que enlaces simbólicos hacia donde realmente se encuentran los plugins.
  • /usr/share/munin/plugins: es el directorio donde se encuentran fisicamente todos los plugins de Munin. La lista de plugins es extensa :-)
  • /etc/init.d/munin-node: script utilizado para recargar la configuración del nodo Munin.

Configuración

La configuración de Munin es bastante rápida y sencilla. Primero configuraremos el servidor por lo que tenemos que editar el fichero /etc/munin/munin.conf.

dbdir   /var/lib/munin
htmldir /var/cache/munin/www
logdir /var/log/munin
rundir  /var/run/munin

includedir /etc/munin/munin-conf.d

[host.mydomain.com]
address 192.168.1.116
use_node_name yes

Con esta sencilla configuración, le hemos especificado a Munin sus directorios de trabajo para la base de datos, los resultados en html, el directorio de logs y donde se guardará el pid de Munin. También le especificamos la dirección IP del nodo, que en este caso será él mismo.

Para configurar nuestro nodo, es decir, la parte de Munin que recoge los datos, editaremos el fichero /etc/munin/munin-node.conf.

log_level 4
log_file /var/log/munin/munin-node.log
pid_file /var/run/munin/munin-node.pid

background 1
setsid 1

user root
group root

ignore_file ~$
ignore_file DEADJOE$
ignore_file \.bak$
ignore_file %$
ignore_file \.dpkg-(tmp|new|old|dist)$
ignore_file \.rpm(save|new)$
ignore_file \.pod$

host_name host.mydomain.com

allow ^127\.0\.0\.1$
allow ^192\.168\.1\.116$

host *
host 192.168.1.116

port 4949

La linea host_name ayuda al servidor a identificar a este nodo, mientras que las directivas allow indican desde qué direcciones IP es posible conectarse, en este caso desde localhost y desde la IP de la propio máquina. Por último, se indica el puerto de escucha con la directiva port, en este caso el 4949.

Ya tenemos configurado nuestro Munin! Ahora queda que funcione ;-) Para comprobar que todo esté correcto podemos ejecutar el comando munin-check que comprobara si los permisos y propietarios de los ficheros son correctos o no. Si hubiera algo mal, te sugiere cómo debería ser. En mi caso tuve que corregir algunos permisos:

# chmod -R 755 /etc/munin/plugin-conf.d
# chown -R nobody:munin /var/lib/munin/plugin-state

Ya debería estar todo correcto, asi que podemos arrancar el nodo Munin:

# /etc/init.d/munin-node start

Perfecto! Pero… ¿Cómo recoge datos el nodo Munin?¿Cada cuánto tiempo?¿Dónde se configura eso?

Munin ofrece otro script llamado munin-cron el cual va actualizando los resultados en html que va generando. Yo lo que hago es configurar una tarea cron en el usuario munin, así que hacemos login como dicho usuario y configuramos la tarea cron con crontab -e:

# su - munin --shell=/bin/bash
# crontab -e

Normalmente actualizo las estadísticas cada 5 minutos, asi que la tarea cron debe quedar de la siguiente forma:

# crontab -l
# m h  dom mon dow   command
*/5 * * * * munin-cron</pre>

Publicación via web

Todo esto está muy bien, pero ¿dónde veo las gráficas? Para ello necesitaremos un servidor web. A mi personalmente me gusta mucho Nginx porque es muy rápido y liviano, asi que procedemos a instalarlo desde repositorios:

# apt-get install nginx

La versión de Nginx de los repositorios es bastante antigua, pero solamente lo queremos para mostrar contenido estático, asi que esta versión nos sirve.

Lo único que queda es configurar un location para mostrar los resultados generados por Munin en el directorio /var/cache/munin/www. Como no es una configuración muy extensa, la hago en el virtualhost por defecto que viene con Nginx en el fichero /etc/nginx/sites-enabled/default añadiendo lo siguiente dentro del bloque server:

[...]
server_name  host.mydomain.com;
[...]
location /munin {
    alias /var/cache/munin/www;
    index index.html index.htm;
    autoindex on;
    allow all;
}

Recargamos la configuración del servidor Nginx:

# /etc/init.d/nginx reload

Hecho esto, tendremos accesible nuestro Munin en http://host.mydomain.com/munin

Como decía Juan Tamariz… “Chiananananaaaa”.