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
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:
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):
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):
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:
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:
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?