Hola a todos de nuevo, buenos días foto de Eloy Mier Pérez

En este articulo vamos a echar un vistazo a munin (http://munin-monitoring.org/). Para aquellos que no lo conozcan munin es una aplicación que permite monitorizar máquinas en la red. Para ello munin se compone de 2 componentes completamente diferenciados, que son el nodo munin y el server. Para que una máquina pueda ser monitorizada por el server se requiere en esa máquina la instalación del software de nodo y además se requiere que el servidor la tenga agregada al fichero de configuración y que por supuesto el server pueda conectar con el nodo en el puerto definido (instalación por defecto 4949).

Como una imagen vale mas que mil palabras aquí tenéis un par de pantallazos para el server munin corriendo:

En esta imagen podéis apreciar la página de nivel superior generada por el servidor a partir de la información recopilada de los nodos:

Como podéis apreciar en la imagen superior, en mi red, y dentro de la plataforma de monitorización se encuentran 4 máquinas:

  • acerX3900 es un servidor vmware y antiguo servidor munin (64b)
  • odisea es la máquina de mi mujer un simple ordenador de escritorio (32b)
  • princesa es mi máquina personal, ordenador de escritorio (64b)
  • ubuntueeebox es el nuevo servidor munin (32b).

Si selecciono ubuntueeebox para ver los gráficos que obtiene el server podremos apreciar algo similar a:

Y si pincho en un gráfico para ver el detalle, lo que obtengo es el gráfico de días + semanas + meses + año:

Para obtener la información que se ha mostrado en los gráficos anteriores, munin-node, hace uso de una serie de scripts en el nodo. Si esos scripts (pluggins) están habilitados y son capaces de obtener la información que se supone que deben obtener entonces el server recibe dicha información y la pinta. Si por el contrario desactivamos el pluggin, el server simplemente no pinta el gráfico asociados. En el caso de que el pluggin este habilitado y no sea capaz de obtener la información necesaria, el servidor simplemente pinta el gráfico vacío. Un caso típico por ejemplo de esta última casuística es el siguiente: en el nodo tenemos habilitado el pluggin de monitorización de HD pero no tenemos instaladas las herramientas de bajo nivel necesarias (smartmoontools) y por lo tanto el nodo munin no es capaz de enviar al servidor información de monitorización de los discos.

Hoy vamos a tratar un tema cuanto menos curioso, que es la migración de un servidor munin de arquitectura 64b a arquitectura 32b. Inicialmente cuanto me plantee el cambio de servidor para munin, la verdad, es que no pensaba que requeriría ningún proceso especial para realizarla. Una vez montado munin server en la nueva máquina, con el servicio corriendo y los ficheros de datos(rrd) instalados resulta que viendo que no actualiza dichos ficheros me paso por el log (/var/log/munin) del server y veo un mensaje similar a:

El fichero no ha podido ser actualizado por que procede de otra arquitectura distinta a la actual. El mensaje exacto es

This RRD was created on another architecture

Bien, parece ser que los ficheros rrd que usa el servidor munin son dependientes de la arquitectura de la máquina, no tenia ni idea. Así que me puse a investigar un poco sobre cómo poder portar los ficheros existentes, mas que nada por no perder la información histórica de las máquinas.

Finalmente di con la solución, el proceso que debemos seguir es:

  1. Exportación en el servidor 64b de los ficheros rrd a xml usando la herramienta rrdtool dump.
  2. Copia de los ficheros exportados (xml) a la máquina con la nueva arquitectura, en mi caso ubuntueeebox, que es el nuevo servidor munin.
  3. Importación de los ficheros xml a ficheros rrd pero en arquitectura 32b. Uso de la herramienta rrdtool restore.
  4. Copia de los nuevos ficheros rrd en el directorio de datos munin (en mi caso /var/lib/munin/casamier)
  5. Ahora ya podemos arrancar de nuevo el servidor de munin, no deberíamos recibir mas errores de arquitectura.

Bien, puesto que en el servidor tengo bastantes ficheros rrd y la herramienta rrdtool no acepta un comodín, pues no queda mas remedio que hacer un par de scripts para la exportación e importación. Los scripts que he escrito son muuuuy simples, no reciben parámetros y deben ser ejecutados desde el directorio que contiene los rrd y los xml.

Script para el paso numero 1 (exportacion a xml) en el servidor origen:

eloy@ubuntueeebox:~/casamier$ cat exportarRRD
#!/bin/bash
for file in $( ls *.rrd ); #recorremos solo los ficheros rrd
do
orig=$file
dest=$(echo $file | sed -e «s/.rrd/.xml/»)
rrdtool dump $orig $dest
done
exit 0

Script para el paso número 3 (importación a rrd) en el servidor destino:

eloy@ubuntueeebox:~/casamier$ cat importarRRD
#!/bin/bash
for file in $( ls *.xml ); #recorremos solo los ficheros xml
do
orig=$file
dest=$(echo $file | sed -e «s/.xml/.rrd/»)
rrdtool restore -r -f $orig $dest
done
exit 0

Bueno, pues hasta aquí la historieta de hoy. Para un proximo articulo, a ver si puedo mostraros la configuración del server y de los nodos.  Espero que tengáis buen día todos. Saludos y hasta la próxima.

You must be logged in to post a comment.