Migración servidor munin de 64b a 32b, problemas con ficheros rrd

Hola a todos de nuevo, buenos díasfoto 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.

¿Como crear una imagen ISO en linux desde la línea de comandos?

Hola a todos

Resulta que hoy me pasa lo siguiente, introduzco en el lector de CD un disco del que quiero hacer una ISO y abro como siempre el K3B. Al ir a seleccionar la operación de copia de CD, no hay problema, la selecciono y le digo que solo quiero una imagen ISO, hasta aquí todo bien.

Veo que como unidad origen esta seleccionada la grabadora de CDs e intento cambiar al lector. Mi PC actualmente tiene dos unidades, una de ellas un simple lector y otra de L/E. Esto es debido a varios motivos:

  • Hace unos años la unidades de escritura eran lo suficientemente caras como para ser cauteloso en su uso e intentar que las operaciones que no eran de escritura las hiciese otra unidad, por lo menos en mi caso es lo que siempre he hecho, de esta forma creo que conseguia alargar la vida util de las grabadoras. Como a esto es a lo que estoy acostumbrado y nunca me ha ido mal, pues todos los PCs que monto tienen doble unidad.
  • La velocidad de lectura de una buena unidad de CD es siempre superior a la velocidad de lectura de una buena unidad CD de escritura en cualquiera de sus modalidades (dvd, cdr,cdrw,etc).
  • La mayor parte de las operaciones que los usuarios como yo realizamos en las unidades de CD son de lectura, ¿por que hacerlas a una velocidad menor?

Volviendo al asunto, ¿Como es posible que no pueda decirle a K3B que quiero que sea el lector quien haga la imagen del disco?….creo que es por la propia naturaleza del software, es una utilidad de grabación y entiende que la unidad origen siempre es la grabadora, no se, por decir algo, por que de momento no le he encontrado explicación.

Bien pues como siempre internet es nuestro amigo, por que seguro que alguno ya sabe como hacer esas ISOS con la linea de comandos. Efectivamente nada mas sencillo que usar el maravilloso comando dd:

dd if=<dispositivo> of=<imagen>.iso

y en mi caso la linea queda así

dd if=/dev/cdrom1 of=EEEPC_EP20.iso

Saludos a todos y hasta el próximo problemilla.

Simplificando las reinstalaciones

Eloy Mier 02Es muy habitual para mi hacer una reinstalación del sistema operativo cada 6 meses mas o menos (ahora estoy un poco zángano pero bueno). Los principales motivos son dos, la reinstalación limpia todo el sistema y requiere de mi únicamente 10 minutos delante del PC . Notad que he dicho “delante del PC”, la máquina hace todo el trabajo por mi mediante unos scripts “artesanales” especiales de bash.

Si alguna vez necesitases reinstalar tu sistema Linux, lo mejor que puedes hacer ahora mismo son unos cuantos deberes. Escribete tranquilamente unos scripts de bash que te automaticen la mayor parte del trabajo. Esta es la unica manera de que no tengas que perder demasiado tiempo delante del PC durante las reinstalaciones. A menudo comienzo el proceso de instalación, me voy a ver una película, después corro algunos guiones bash cuando el instalador ha acabado y me piro a comer mientras el script hace el trabajo por mi. Nunca hago loggin en xorg hasta que todos los scripts han terminado. Simplemente inicio sesión en el terminal1(tty1), ejecuto el script de sistema y me largo con la película.

Yo mantengo la mayor parte de los paquetes, documentos, etc., en un segundo disco duro pero estos elementos podrían almacenarse en una unidad de cd/dvd, simplemente debiéramos montar el volumen en el script de sistema y permitir que el propio script guarde los elementos seleccionados en ese punto de montaje.

Script de sistema

El script de sistema debe contener únicamente comandos que modifiquen las preferencias del mismo y los contenidos. Notaras que estos scripts no contienen ningún comando apt-get . La razón es que creo que el superusuario debe estar presente y echar un ojo en cualquier instalación/eliminación de software que se realiza en la máquina para poder solventar cualquier problema que pueda surgir. Por supuesto, que el lector puede hacer lo que le de la gana en sus máquinas.

unix
Ten presente que este script es solo un ejemplo para mostrar que parte del trabajo necesario puede ser automatizado y asi evitar estar sentados delante de la máquina demasiado tiempo. Mi script de sistema es algo mas detallado que el que a continuación se muestra, edítalo y aplialo a tu antojo.

#!/bin/bash

# verificación de los premisos necesarios para ejecución del script
if [ $UID != 0 ]
then
exit
fi

# hace copia de seguridad de los ficheros de sistema por si las moscas
mkdir /etc/master_copies
cp /boot/grub/menu.lst /etc/fstab /etc/apt/sources.list /etc/sudoers /etc/X11/xorg.conf /etc/master_copies

# creacion de directorios necesarios
mkdir /mnt/sdb1 /mnt/iso

# Montar los sistemas de ficheros necesarios
mount /dev/sdb1 /mnt/sdb1

# Hacer modificaciones en los ficheros necesarias
cat /mnt/sdb1/system-files/fstab-entries >> /etc/fstab

# comentar el agente ssh agent en Xsession.options
sed 's/use-ssh-agent/# use-ssh-agent/g' /etc/X11/Xsession.options

# añadir lista de repositorios adicionales
cat /mnt/sdb1/system-files/sources.list >> /etc/apt/sources.list

# Instalacion de los temas para su uso global en el sistema
dpkg -i /mnt/sdb1/packages/my-theme.deb /mnt/sdb1/packages/my-icons.deb
cp /mnt/sdb1/graphics/wallpapers/* /usr/share/backgrounds

# Limpiar el sistema
apt-get clean
updatedb

#hecho
exit

Y esto es todo para el script de sistema. Cuando vuelvo de comer, el sistema debe estar listo para ejecutar los comandos apt-get necesarios. En este momento puedo verificar la lista de software a ser instalado, comenzando la instalación y dejando al sistema hacer su trabajo.

Hacer el backup de los ficheros importante es un paso FUNDAMENTAL. Seria incapaz de contar las veces que este paso me ha salvado el “trasero” después de editar incorrectamente el fichero xorg.conf. Todavía no entiendo como las instalaciones de Linux en sus distintas distribuciones no incluyen un paso tan importante como este en sus instalaciones, este tipo de procesos podrían ahorrar muchísimo tiempo y frustración al nuevo usuario de Linux. Recuperar el fichero perdido sources.list es tan sencillo como montar el sistema de ficheros con un LiveCD y copiar el fichero desde master_copies a su ubicación original.

Script de usuario

Este script solo debe contener comandos que modifican preferencias y contenidos en $HOME. De nuevo, este script es solo un ejemplo para mostrarte que parte del trabajo puede automatizarse para evitar que estes sentado delante del PC como un tonto durante horas. Mi script de usuario es mas detallado que el que aqui se muestra, edítalo y amplíalo como te interese a tu caso.

#!/bin/bash

# Asegurarnos de que estamos en $HOME
cd $HOME

# hacer copias de seguridad de los ficheros importantes. Tantas lineas como sean necesarias
mkdir .master_copies
cp algunos-ficheros .master_copies

# Copiar los ficheros necesarios a $HOME
mkdir -p Documents
cp -r /mnt/sdb1/office-files/* Documents
cp -r /mnt/sdb1/settings/GNUstep .

# Crear los enlaces simbolicos necesarios
ln -s /dev/null .adobe
ln -s /dev/null .macromedia

# instalar los temas
tar -xzf /mnt/sdb1/packages/infinity-theme.tar.gz .themes
tar -xzf /mnt/sdb1/packages/infinity-icons.tar.gz .icons
tar -xzf /mnt/sdb1/packages/myfonts.tar.gz .fonts

# hacer los ajustes de sistema que nos de la gana
gconftool-2 --type string --set /apps/metacity/general/theme "Infinity"
gconftool-2 --type string --set /desktop/gnome/interface/gtk_theme "Infinity"
gconftool-2 --type string --set /desktop/gnome/interface/font_name "MyFont 12"
gconftool-2 --type bool --set /apps/nautilus/desktop/home_icon_visible true
gconftool-2 --type bool --set /apps/nautilus/preferences/always_use_location_entry true
gconftool-2 --type integer --set /apps/panel/toplevels/bottom_panel_screen0/size 24
gconftool-2 --type integer --set /apps/panel/toplevels/top_panel_screen0/size 24

# hecho
exit

Y esto es todo para el script de usuario. La reinstalación del sistema esta completada y ajustada a mis gustos y puedo hacer un reinicio del mismo. Una vez realizado el reinicio, el sistema esta listo para usar por mi y he gastado un total de 10 minutos enfrente del PC gracias a los scripts.

El comando gconftool-2 es muy útil aquí y puede ayudar mucho a establecer las preferencias del sistema para ajustarlas a tus necesidades.

Saludos a tod@s y hasta la próxima.

Creación de backups en Ubuntu 9.04 con Back in Time

Hola a todosubuntu904

Este tutorial mostrará como instalar y usar Back in Time en Ubuntu 9.04 Desktop. Back in Time es una herramienta de copia de seguridad para Ubuntu basada en las herramientas “flyback proyect” y “TimeVault”. El backup se realiza tomando un “foto” de un conjunto de directorios.

  1. Instalar Back in Time.

  2. Back in Time no se encuentra en los repositorios oficiales de Ubuntu, por lo tanto lo que debemos hacer para comenzar es agregar la fuente a fichero /etc/apt/sources.list para que apt pueda bajar el binario.

    Abrimos una ventana de terminal (Aplicaciones -> accesorios -> Terminal)
    backontime01
    Abrimos para editar el fichero /etc/apt/sources.list y añadimos la siguiente linea:

    deb http://le-web.org/repository stable main

    Despues de esto añadiremos la clave del repositorio de Back in Time a nuestro sistema del siguiente modo:

    wget http://le-web.org/repository/le-web.key
    sudo apt-key add le-web.key

    Actualizaremos nuestra base de datos de paquetes:

    sudo aptitude update

    …..e instalaremos Back in Time de la siguiente forma:

    sudo aptitude install backintime-common backintime-gnome

    Bien, pues en este momento tenemos Back in Time instalado y listo para su uso.

  3. Usando Back in Time

  4. Con Back in Time puedes realizar backups/restauraciones solo de los directorios en los que tengas permisos de escritura (realmente puedes hacer backup también de los directorios en los que tengas permisos de lectura pero no los podrás restaurar). Por lo tanto puedes encontrar dos lanzadores para Back In Time, el primero para correrlo con privilegios de usuario estándar y el segundo para correr la aplicación con privilegios de root (Aplicaciones > Herramientas de sistema > Back In Time (root))

    backontime02

    Cuando arrancamos Back in Time por primera vez tendremos que establecer los parámetros de configuración. En la pestaña general especificaremos el directorio destino de los backups

    backontime03

    backontime04

    ….y cada cuanto tiempo queremos que se ejecute el backup. Seleccionaremos deshabilitado si queremos ser nosotros los que ejecutemos manualmente las operaciones de backup en vez de que sea Back in Time el que lo haga de forma automática.

    backontime05

    En la pestaña de inclusión podemos especificar los directorios de los que queremos hacer backup (asegurate de que el directorio destino de la copia de seguridad queda fuera de los directorios incluidos). Simplemente haciendo click en añadir, añadimos el directorio a la lista de directorios incluidos en la copia de seguridad.

    backontime06

    backontime07

    En la pestaña de exclusiones podemos definir que directorios no deben ser incluidos en la copia de seguridad. Por defecto la herramienta ya proporciona alguno:

    backontime08

    En la pestaña de eliminación automática se pueden especificar las condiciones para las cuales serán eliminados del sistema copias de seguridad antiguas u obsoletas con el objetivo de liberar espacio en disco:

    backontime09

    Las pestañas de opciones y modo experto contienen elementos que en condiciones normales no debemos alterar, a no ser que sepamos lo que estamos haciendo:

    backontime10

    backontime11

    Ahora pulsamos el boton OK para cerrar la ventana y podemos proceder a realizar nuestra primera copia de seguridad. Pinchamos en Backup Now:

    backontime12

    Después de la operación, el backup debe aparecer listado en la columna de snapshots (fotos):

    backontime13

    Si queremos restaurar una foto, simplemente pulsamos sobre la foto a restaurar y pinchamos el botón de Restauración:

    backontime14

    Y esto es todo amigos.

  5. Enlaces de interés

Pregunta a los lectores sobre cuestión relacionada con grabación cdrw o dvdr sin unidad

Hola a todos y buenas noches,Eloy Mier

esta vez, en lugar de escribir uno de los artículos a los que estáis acostumbrados, voy a hacerlo al contrario. Tengo un pequeño problema al que todavía no he encontrado solución y me gustaría saber si a alguno de los lectores del blog se le ocurre alguna cosa de interés.

Paso a comentar cual es el problema:

  1. Máquina recien comprada.
  2. La máquina en cuestión no dispone de unidad de CD, ni de lectura ni de escritura, solo dispone de conectores externos USB 2.0.
  3. Por supuesto yo tampoco dispongo de ninguna de estas unidades externas y la solución no pasa por la compra de una de ellas.
  4. La máquina tiene el SO preinstalado, pero no incluye los CDS de recuperación en formato físico.
  5. La máquina tiene instalado software que permite la creación de dichos discos, o bien usando CD o bien DVD. Cuando arranco este software de creación de los discos de recuperación me informa de que no existen unidades sobre las que poder hacer la copia (lógico pues realmente no existen).

Ahora paso a comentar el objetivo:

  1. Creacion de las imágenes de los discos de recuperacion.

Ideas propias:

  1. Al igual que existe software para crear unidades virtuales de CD, pues supuse que tambien existiria algo para simular una grabadora. Hasta el momento he probado varias posibilidades, pero de momento no he dado con la grabadora virtual
  2. Usad Linux Live, con el comando dd para crear imagenes completas del disco existente en la máquina para poder recuperarlo en un futuro. El tema es que este enfoque tiene varios problemas y me gustaria conseguir de forma directa los discos de recuperacion, pues ademas pienso que en una situacion de recupoeracion el uso de los mismos es mas sencillo y rápido.

Pues poco mas, este es el problema y espero algun comentario a ver….

Saludos a todos.