Pages

Subscribe:

Ads 468x60px

Labels

miércoles, 16 de mayo de 2012

Reporte de actividades


  • Esta semana se implemento el sistema del  monitoreo se encuentra montado en el nodo maestro que es el servidor que se encuentra en mi casa.
  • Se probo ejemplos de MPICH2, Python y se piensa instalar Jhon the ripper para decifrar contraseñas ya que podria servir para el proximo semestre de criptografia.
  • Se cambio el protocolo de TCP a UDP se comprobo que al ejecutar un codigo se tardo 1.5 segundos en TCP y en UDP fue en 0.65 segundos en arrojar los resultados 
  • Se comprobó que cuando un nodo se desconecta no pasa nada el cluster sigue funcionando
  • Se trabajo en conjunto con juan Carlos para realizar la automatización de tareas

Nominaciones:

Juan Carlos
Alex Villarreal Gaytan

Configurando los Nodos Ganglia



Configuración  si estas en la VPN
Archivos de configuración y manual


Configuración fuera de la VPN
Archivos de configuración y manual 

Contiene todo lo necesario para instalar ganglia en los nodos del cluster

Ganglia


Para el monitoreo del cluster se ha elegido Ganglia por sus ventajas y porque está ampliamente testeado en muchos cluster que están en la actualidad funcionando.
Los componentes principales de Ganglia son:
  • gmond: demonio que se encarga de recoger y distribuir el estado del nodo. Debe correr en TODOS los nodos
  • gmetad: sirve de parser, obtiene los datos de los gmond y los procesa. Sólo corre en el nodo front-end, es decir, en el nodo con el que nos comunicamos
  • web front-end: es una interfaz web en php que nos muestra el estado del cluster de manera gráfica. Se instala en el nodo que tenga el gmetad. Está escrito en php4 y no se visualiza bien si utilizamos php5. Se puede obtener las últimas versiones de php4 para openSuSE en esta dirección http://download.opensuse.org/repositories/home:/michal-m:/php4/openSUSE_10.2/ (se puede añadir como canal RPM-MetaData de Smart)
INSTALACIÓN
sudo apt-get install rrdtool librrds-perl librrd2-dev php5-gd
 wget http://downloads.sourceforge.net/ganglia/ganglia-3.0.7.tar.gz
 cd ganglia*
./configure --with-gmetad
make
 
mkdir /var/www/ganglia
sudo cp -r web/* /var/www/ganglia
 
 gmond se ha de instalar en TODAS las máquinas a monitorizar.
En la máquina front-end del cluster instalamos gmetad y el web-front-end. Para compilar el gmetad hay que añadir a la orden de configuración: ./configure –with-gmetad. El fichero de configuración de gmetad, gmetad.conf se puede encontrar en el directorio correspondiente dentro de las fuentes y se puede copiar a /etc. La instalación de este último es solo descomprimir las fuentes dentro del DocumentRoot del servidor web.
Opcionalmente, podemos instalar gexec, para correr la misma orden en varias o todas las máquinas del cluster simultáneamente.
CONFIGURACIÓN
gmond: el archivo de configuración de gmond es /etc/gmond.conf Para crearlo se puede usar gmond -t > /etc/gmond.conf que crea un archivo de configuración por defecto. Lo más importante de este archivo es:
Dentro de globals:
daemonize = yes # para que corra como demonio del sistema
gexec = yes # si tenemos instalado gexec
Dentro de cluster:
name = “nombre” # nombre del cluster, es mejor especificar alguno
udp_send_channel: para enviar la información del host. Todos los nodos de un mismo cluster han de tener la misma configuración aquí. Se puede enviar por multicast o unicast y se pueden poner todos los canales de envío que se deseen (varios unicast, varios multicast,…)
  • Multicast: utilizar una dirección IP multicast. Deberemos variarla y poner cada cluster con una IP multicast diferente. Ejemplo: 239.2.11.72, 239.2.11.73,… La que asignemos aquí también la tenemos que cambiar en udp_recv_channel. El puerto no es necesario modificarlo y es mejor dejarlo así. Ejemplo
    • udp_send_channel {
      
          mcast_join = 239.2.11.71
      
          port       = 8649
      
        }
  • Unicast: se manda la información al nodo principal directamente. Puede ser más útil en algunos casos que el multicast dé problemas.
    • udp_send_channel {
      
          host = 192.168.3.4
      
          port = 8649
    }

udp_recv_channel: para el nodo encargado de recibir toda la información y crear el fichero XML. Pueden tenerlo todos los nodos o sólo algunos. Generalmente, irá en el nodo cabecera (con gmetad y la interfaz web).
  • Multicast
  udp_recv_channel {

      mcast_join = 239.2.11.71

      bind       = 239.2.11.71

      port       = 8649

    }
  • Unicast
    • udp_recv_channel {
      
          port = 8666
      
          family = inet4 # o inet6
      
        }
Posteriormente, viene una lista con las métricas que serán recolectadas por gmond. Su configuración por defecto es correcta, aunque se puede modificar la frecuencia con la que se recolectan y añadir o borrar algunos.
Más información en: http://ganglia.sourceforge.net/docs/gmond.conf.html
gmetad: El principal aspecto a configurar son las fuentes de donde recopila la información. Es de la forma
data_source “nombre” [intervalo de sondeo] dirección1:puerto dirección2:puerto…
Puede haber tantas fuentes como se desee. Para ello, se añade una línea como la de arriba por fuente. Por ejemplo
data_source “Proteus” 192.168.2.4, 192.168.2.5
data_source “Servidor” 127.0.0.1
en la primera fuente, hay 2 ips redundantes, por si alguna de las máquinas se cae.
Hay que crear el directorio donde gmetad almacenará los datos de los distintos nodos, en formato de base de datos round-robin. Este directorio viene dado por el atributo rrd_rootdir del fichero de configuración gmetad.conf. Por defecto, es el directorio /var/lib/ganglia/rrds y a de pertenecer al usuario nobody.nobody
web front-end
Se puede elegir entre los templates disponibles.

Monitorización de la temperatura

Por defecto, Ganglia no monitoriza la temperatura pero podemos añadir esta opción utilizando la herramienta gmetric que incorpora. Esta herramienta permite añadir las métricas que se deseen desde la línea de comandos. Más información: http://ganglia.sourceforge.net/docs/ganglia.html#gmetric
Para medir la temperatura, usaremos el programa sensors. Lo primero de todo es configurarlo con sensors-detect. Este programa busca el tipo de sensores de temperatura, revoluciones de ventiladores, voltaje,… que tiene nuestro equipo y crea el fichero /etc/sysconfig/lm_sensors donde se indica que módulos cargar para manejarlos. Si los sensores no estuvieran soportados por el kernel, tendríamos que buscar las correspondientes fuentes y recompilar el kernel. También se crea el fichero /etc/init.d/lm_sensors para cargar estos módulos automáticamente al inicio del sistema.
Sólo nos falta enviar periódicamente la información de los sensores. Para ello, añadimos una entrada a cron del tipo:
*/5 * * * *     root  /admin/ganglia/temp.sh
donde temp.sh es un fichero que coge la información de sensors y utiliza gmetric para enviarla:
#!/bin/bash
GMETRIC=/usr/bin/gmetric
SENSORS=/usr/bin/sensors
# send cpu temps if gmond is running
`/sbin/service gmond status > /dev/null`
if [ $? -eq 0 ]; then
# send cpu temperatures
let count=0
for temp in `${SENSORS} | grep “CPU Temp” | cut -b 12-16`; do
$GMETRIC -t float -n “cpu${count}_temp” -u “C” -v $temp
let count+=1
done
# send cpu fan speed
let count=0
for fan in `${SENSORS} | grep CPU_Fan | cut -b 12-15`; do
$GMETRIC -t uint32 -n “cpu${count}_fan” -u “RPM” -v $fan
let count+=1
done
fi