Munin


Cuando manejamos un servidor, tarde o temprano echaremos de menos una herramienta de monitorización del mismo. Hay muchas y de muchos estilos, pero en esta ocasión he elegido Munin.

Primero haré una pequeña revisión general a las herramientas de monitorización y luego me centraré en cómo utilizar Munin, tarea que me ha costado llegar a entender.

Este artículo no abordará la creación de plugins propios, sino sólo la gestión de máquinas. Eso lo dejo para otro artículo.

Monitorización

Si un servidor está funcionando contínuamente, todo va bien. ¿Por qué molestarse en monitorizar nada? Pero si, de pronto, el servidor se cae... ¿Qué es lo que ha pasado? ¿Qué ha cambiado?

Es justamente cuando las cosas van mal que echamos en falta tener datos de lo que es una situación "normal". De esta manera, se puede intentar ver qué ha cambiado: hemos ido consumiendo más y más memoria, el servidor se reinició sin avisarnos, se murió un servicio, comenzamos a swappear,...

Además, hay muchas situaciones que se pueden prever con alertas, de manera que sepamos con antelación que nos estamos quedando sin disco o que la máquina se está quedando sin RAM.

Alternativas

Hay otras herramientas semejantes o mejores:

  • Pandora: la gestión de alertas es muy detallada, pero las gráficas son bastante pobres. Además, la gestión hay que realizarla mediante una interfaz web que puede ser más compleja de automatizar y de crear copias de seguridad.
  • Zabbix: Una herramienta de monitorización mucho más completa que Munin, pero muy compleja de utilizar.

Munin es una herramienta bastante mediocre, pero es sencilla de utilizar y rápida de instalar. Puede solucionarnos la papeleta llegado el momento.

Funcionamiento

Internamente utiliza rdd, que es una base de datos Round Robin. Las ventajas son que siempre ocupa lo mismo y que es rápida; la desventaja, que requiere agrupación de datos y perdemos granularidad.

La visualización se puede realizar mediante una interfaz web que realiza un pre-renderizado de los gráficos para así mostrarlos más rápido (cuando están listos). Estos gráficos se vuelven a generar de nuevo cuando están obsoletos.

La arquitectura es un servidor que recibe los datos y los almacena, y nodos que le envían la información. Esta información se recoge mediante plugins, que son programas de línea de órdenes que escriben en un formato determinado por la salida estándar (por lo que son muy sencillos de implementar). Realmente, el servidor funciona con un "cron" y solicita los datos a los clientes, que están ejecutándose de forma contínua, agrupando los datos.

Configuración

La documentación es bastante mala, ya que es difícil encontrar información sobre cómo configurar los plugins de Munin de manera automática. Debería ser lo más fácil de encontrar, pero no es así.

Para configurar los plugins basta con ejecutar lo siguiente:

$ munin-node-configure --suggest --remove-also --shell | bash

¿Que es complicado? Pensad que Munin está hecho en Perl y entenderéis muchas cosas.

Si queremos ver qué plugins hay disponibles y por qué no se están activando, podemos ejecutar lo siguiente:

$ munin-node-configure --suggest

Una vez configurado, será necesario reiniciar el servicio munin-node.

Hay muchas cosas configurables: alertas, gráficos, etc. Pero eso no lo veremos aquí.

Configuración de Java

Algo con lo que me he tenido que pelear a brazo partido es la configuración de los módulos de Java (jmx_). No es trivial, pero es sencillo. El problema es que hay que activar esta monitorización en los propios procesos Java. Para ello, hay que añadir los siguientes parámetros en la línea de ejecución de Java, pero tened cuidado porque en mi ejemplo estoy usando seguridad mínima con el fin de que os funcione fácilmente:

-Dcom.sun.management.jmxremote.port=<PORT>
    -Dcom.sun.management.jmxremote.ssl=false
    -Dcom.sun.management.jmxremote.authenticate=false

Después de esto, basta con reconfigurar munin automáticamente de nuevo como se explica en el apartado de Configuración.

Algunos problemas

Hay algunos problemas con los que ya me he peleado y no me gustaría tener que volver a hacerlo, así que me los voy a apuntar:

Los gráficos me desaparecen

Seguramente estés usando el modo cgi de generación de gráficos. Basta con ir a la máquina donde está montado y reiniciar los servicios spawn-munin-fast-cgi-graph y spawn-munin-fast-cgi-html

Las alertas me llegan demasiado tarde

Ya os dije que Munin no era muy bueno en esto. No he sido capaz de arreglarlo aún.

Más documentación

Para más consultas, podéis dirigiros a la documentación de Munin


Comentarios

Comments powered by Disqus