Instalación y primeros pasos con Munin en Debian 7

herramientas Munin es un sistema de monitorización muy similar a cacti (que ya hemos tratado hace poco por aquí) pero que en lugar de usar snmp usa su propio programa recolector de información (llamado munin-node). La instalación básica sobre un único servidor (que es la que vamos a ver) es muy sencilla y proporciona más de 60 gráficas y cerca de 100 indicadores del estado y rendimiento de nuestro servidor sin que apenas tengamos que despeinarnos. Está escrito en perl, viene con una amplia colección de plugins (a la que se le añaden las múltiples contribuciones de los usuarios) y también admite monitorización de servidores windows.

La versión actual en los repositorios estables de Debian wheezy es 2.0.6-4 (de aproximadamente un año de antiguedad) que será la que instalaremos aquí. Si usas los repositorios de la versión inestable (sid) tienes disponible la versión 2.0.14. La máquina donde queremos instalarlo es un servidor LAMP típico con Apache2 y MySQL. Los paquetes necesarios son estos. Y sus dependencias, claro:

apt-get install munin munin-node munin-plugins-extra
NOTA: La versión de munin en una debian estable es la 2.06 mientras que en backports tienes disponible la 2.0.19. Si quieres instalar esta última basta con que sigas las instrucciones que se te indican aquí.

La instalación por defecto en Debian configura Munin para que sólo pueda accederse a la instancia web de monitorización desde la misma máquina en la que hemos realizada la instalación. Para solucionar esto y poder acceder en remoto a través de un navegador tenemos que editar el fichero /etc/apache2/conf.d/munin en el que se encuentra la configuración de la instancia web. Buscamos la directiva <Directory /var/cache/munin/www> y en su interior comentamos las líneas siguientes:

# Order allow,deny
# Allow from localhost 127.0.0.0/8 ::1

Y añadimos esta otra:

Order deny,allow

Luego repetimos la misma operación en las directivas <Location /munin-cgi/munin-cgi-graph> y <Location /munin-cgi/munin-cgi-html>. Con esto el acceso será libre para cualquiera que conozca la URL de acceso. Si queremos proteger la entrada mediante usuario y contraseña podemos, por ejemplo, usar htdigest como contábamos por aquí en su día.

Y listo. Ahora recargamos la configuración de apache:

service apache2 reload

Y ya podemos acceder a través de la URL http://ip-del-servidor/munin/. La pantalla inicial, una vez introducida la identificación, es así de sosa minimalista:

Primera ejecución de munin. Pantalla inicial.

ACTUALIZACIÓN: Si realizas la instalación en Debian 8 (esta entrada se escribió aún con la versión 7) o actualizas a ella existen ciertas diferencias introducidas por la nueva versión de Apache, la 2.4. En el directorio de configuración de munin (/etc/munin/) te encontras un fichero llamado apache24.conf. Asegurate que es a este al que apunta el enlace que se encuentra en el directorio /etc/apache2/conf.d con el nombre de munin. Luego edítalo y modifica las dos veces en las que aparece la línea Require local sustituyéndola por Require all granted. Recarga la configuración de apache y listo.

Vamos a pararnos un poco a ver donde ubica sus diferentes elementos. Como ya hemos comentado, munin usa una estructura cliente servidor con nodos recolectores en cada uno de los equipos que queremos monitorizar y un elemento que centraliza la información de todos ellos. El daemon del primer elemento se llama munin-node y el del segundo munin. Ambos son servicios que residen, como es habitual, en el directorio /etc/init.d y responden a los argumentos habituales (start y stop). munin-node responde, además, a restart (necesario cuando añadimos un nuevo plugin o modificamos la configuración de uno ya existente) y alguno mas.

Los archivos de configuración se encuentran en /etc/munin/. Existen, entre otros, un archivo por cada uno de los servicios (munin.conf y munin-node.conf) y un directorio donde se encuentran los plugins en uso de este nodo. El procedimiento para activar los plugins es crear un enlace en este directorio al archivo que contiene el código del plugin. Los que vienen por defecto con la instalación se encuentran en /usr/share/munin/plugins/.

Por último, los datos de la instancia web de monitorización se encuentran en /var/cache/munin/www/, la base de datos en bruto en /var/lib/munin/ (no, no usa mysql como hace cacti), y los logs en /var/log/munin.

Volvemos al pantallazo anterior. En la parte central tenemos acceso a las diferentes máquinas monitorizadas ordenadas por grupos (en nuestro caso sólo una) Mientras que en la barra de la izquierda, abajo, tenemos un menú organizado por categorías con acceso directo a las gráficas diarias, semanales, mensuales o anuales de cada una de ellas. De cualquiera de las formas accedemos a una colección de gráficas pero con una pequeña diferencia. Si accedemos a través del menú superior llegamos a una página donde se encuentran todas las gráficas almacenadas en dos versiones, diaria y semanal (semanas, en realidad, de ocho días 🙂 , muy bien pensado para detectar mejor las secuencias):

Munin - Gráficas del sistema diarias y semanal

Mientras que si pulsamos en el lateral sólo se nos muestra la lista de las gráficas de la categoría elegida y exclusivamente en la modalidad de vista elegida según la letra que pulsemos: diaria (d), semanal (w), mensual (m, 33 días aproximadamente) o anual (y, 13 meses):

Munin - Gráficas de postfix diarias

Pulsando sobre cualquier gráfica accedemos a la vista en mosaico de las cuatro vistas disponibles antes mencionadas y si de nuevo pulsamos sobre cualquiera de ellas llegamos a una vista ampliada de la misma con un panel de control desde el que podemos, analítica o gráficamente, hacer la ampliación o reducción de cualquier zona de la misma:

Munin - Gráfica de Load Average

NOTA: Lógicamente, los gráficos de una instalación recién concluida no presentan este aspecto. Tendrás que esperar al menos 24 horas para ello 😉

Lo normal tras la instalación inicial es que, como nos ha pasado, no te instale los plugins correspondientes a apache y mysql debido a que falta algún prerequisito para ello. munin viene con un asistente llamado munin-node-configure que identifica cuales de los plugins que tienes en tu sistema están activos, cuales te podrían ser útiles… Incluso te asiste dándote el comando que necesitas para crear los enlaces necesarios al archivo y directorio adecuados. Échale un vistazo al enlace anterior de este párrafo para más detalles.

Para MySQL, en concreto, basta con que instaléis el siguiente paquete:

apt-get install libcache-cache-perl

Para apache2 necesitamos también instalar una librería extra de perl:

apt-get install libwww-perl

Además, debemos añadir la siguiente línea (o asegurarnos de que ya está) en el fichero /etc/apache2/mods-available/status.conf:

ExtendedStatus On

Y habilitar los módulos status e info de Apache:

a2enmod status info

Por último, reiniciamos el servidor web:

apache2ctl graceful

Creamos los enlaces a los plugins (fíjate en la forma diferente de hacerlo para mysql que se trata de un wildcard plugin) y reiniciamos el recolector de munin de esta máquina:

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
ln -s /usr/share/munin/plugins/mysql_ mysql_bin_relay_log
ln -s /usr/share/munin/plugins/mysql_ mysql_commands
ln -s /usr/share/munin/plugins/mysql_ mysql_connections
ln -s /usr/share/munin/plugins/mysql_ mysql_files_tables
ln -s /usr/share/munin/plugins/mysql_ mysql_innodb_bpool
ln -s /usr/share/munin/plugins/mysql_ mysql_innodb_bpool_act
ln -s /usr/share/munin/plugins/mysql_ mysql_innodb_insert_buf
ln -s /usr/share/munin/plugins/mysql_ mysql_innodb_io
ln -s /usr/share/munin/plugins/mysql_ mysql_innodb_io_pend
ln -s /usr/share/munin/plugins/mysql_ mysql_innodb_log
ln -s /usr/share/munin/plugins/mysql_ mysql_innodb_rows
ln -s /usr/share/munin/plugins/mysql_ mysql_innodb_semaphores
ln -s /usr/share/munin/plugins/mysql_ mysql_innodb_tnx
ln -s /usr/share/munin/plugins/mysql_ mysql_myisam_indexes
ln -s /usr/share/munin/plugins/mysql_ mysql_network_traffic
ln -s /usr/share/munin/plugins/mysql_ mysql_qcache
service munin-node restart

Y con esto (tal vez tengas que esperar unos minutos para ver los resultados) ya tenemos dos categorías nuevas (apache y mysql2) con las gráficas correspondientes. Un par de ejemplos de cada una de ellas:

Munin - Gráfica de threads de Apache

Munin - Gráfica de operaciones de MySQL

Existen muchos otros plugins de monitorización que os pueden ser útiles (asterisk, bind9, memcached, varnish…). En algunos casos puede ser necesario instalar algún otro requisito o realizar algún cambio en la configuración como nos ha ocurrido con Apache y MySQL. Como siempre, lo mejor en el caso de que simplemente creando el enlace al plugin este no funcione es buscar información (que es lo que yo he hecho con estos dos, no creáis que hay muchas otras formas de resolver estas cosas 😉 ). También es sencillo eliminar cualquier gráfico que no nos interese en absoluto simplemente borrando el enlace del plugin correspondiente y reiniciando munin-node. Si tenemos duda acerca del plugin que genera la gráfica, el nombre del archivo aparece en la pantalla de los datos que nos permite realizar zooms de los datos. Añadir otros nodos para centralizar la monitorización de los mismos en esta máquina es bien fácil, pero ya lo dejamos para otro día 😉

En definitiva, se trata de una herramienta mucho más potente que cacti que nos proporciona toda la información que podemos desear de una máquina y más sin apenas consumir recursos. Hecho en falta, tal vez, la facilidad de cacti para crear vistas personalizadas con ciertos gráficos que te interesa consultar de forma habitual. Y, por supuesto, no es tan cómoda como Cacti para monitorizar electrónica de red usando snmp. Pero bueno, no se puede tener todo ¿no?

5 opiniones en “Instalación y primeros pasos con Munin en Debian 7”

  1. Pingback: @josemaria
  2. Hola buenas Tardes,

    Tengo un problema al darle click en la imagen no me la muestra solo me sale el las opciones de los rangos pero la imagen no la muestra que error puedo tener??

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *