También en Inglés.
Ganglia es útil para monitorear computadores, y es especialmente útil para clusters. Esta no es una guía paso a paso, por lo que se requiere experiencia con administración de servidores. Por favor adicione notas o enlaces al documento si lo puede mejorar. Si no lo quiere editar directamente, puede dejar comentarios en la página de discusión.
En la siguiente imagen se muestra la utilidad de Ganglia. Puede notar que los nodos gastan mucho tiempo en tareas del sistema (en rojo). Se están monitoreando 10 nodos (40 procesadores).
Introducción
gmond
Ganglia usa gmond en cada computador monitoreado. Cada proceso gmond debe informarle a otros procesos similares las estadísticas mediante una de dos formas:
- Enviando mensajes UDP a un computador central (o a un grupo de computadores) que ejecutan gmond
- Enviando mensajes multicast UDP
Un proceso gmond puede escuchar mensajes UDP multicast en la red. También puede escuchar mensajes unicast que le sean enviados directamente.
gmetad
gmetad es el programa que guarda la información en disco, usando rrdtool. Este programa lee la información de uno de un procesos gmond. Usualmente, de un proceso que está recibiendo la información de otros computadores.
gmetad puede tener configurada más de una fuente de información, y en este caso, usará la primera que sea alcanzable.
Interfaz Web
La interfaz web lee la información de gmetad, usando TCP.
Configuración
Hay tres parámetros en gmond.conf que son muy importantes:
- udp_send_channel
- udp_recv_channel
- tcp_accept_channel
Se recomienda revisar la documentación de ganglia. El archivo README que se distribuye con el programa es una buena fuente de documentación.
En la instalación se usó Debian, pero las instrucciones de este documento deben ser independientes de la distribución usada. Lo invitamos a adicionar notas a este documento. Se usaron las últimas fuentes descargadas de http://ganglia.sourceforge.net, correspondientes a la versión 3.0.5.
gmond
Instalación
En cada nodo a monitorear se debe instalar gmond.
tar xzvf ../ganglia-3.0.X.tar.gz && cd ganglia-3.0.X ./configure make make install
Hay un script de inicialización que viene con la distribución. Usamos uno simple, que se encuentra al final de este documento. Asegúrese de copiarlo a /etc/init.d/gmond. El servicio debe cargarse al arrancar, corriendo:
update-rc.d gmond defaults
Configuración
Puede obtener una configuración por defecto que es útil como punto de partida. Probablemente necesite cambiar algunos de estos valores. Note que en este ejemplo se ejecuta gmond en una red confiable y no muy grande, así que no se pondrá especial cuidado a la seguridad, y se usarán los valores por defecto.
gmond --default_config > /etc/gmond.conf
La configuración generada automáticamente para gmond usa multicast. En este documento se entrega la documentación para unicast, lo que no debe ser un problema ya que la configuración multicast se genera automáticamente. Se describe parcialmente el archivo de configuración, indicando lo que se ha cambiado después de ejecutar gmond --default_config > /etc/gmond.conf.
Para los nodos monitoreados:
globals {
daemonize = yes
setuid = yes
user = ganglia
debug_level = 0
max_udp_msg_len = 1472
mute = no
deaf = no
host_dmax = 0 /*secs */
cleanup_threshold = 300 /*secs */
gexec = no
}
cluster {
name = "My Cluster"
owner = "My Institution"
}
host {
location = "Cluster Room"
}
udp_send_channel {
host = server1
port = 8650
ttl = 1
}
udp_send_channel {
host = server2
port = 8650
ttl = 1
}
tcp_accept_channel {
port = 8649
}
/* sigue .... */
Para las máquinas que centralizan la información (no monitoreadas en este caso):
globals {
daemonize = yes
setuid = yes
user = ganglia
debug_level = 0
max_udp_msg_len = 9600
mute = no
deaf = no
host_dmax = 3600 /*secs */
cleanup_threshold = 300 /*secs */
gexec = no
}
cluster {
name = "My Cluster"
owner = "My Institution"
}
host {
location = "Cluster Room"
}
/*
* No estamos enviando la información a otros nodos.
*
* udp_send_channel {
* }
*
*/
/* Puede especificar los udp_recv_channels que necesite */
udp_recv_channel {
port = 8650
family = inet4
}
/* Puede especificar los tcp_accept_channels que quiera
con una descripción xml del estado del cluster */
tcp_accept_channel {
port = 8649
}
... sigue ...
Pruebas
Para probar inicie el servicio y trate de obtener un XML que indica si el servicio se está ejecutando.
telnet localhost 8649
Si no ve un contenido XML, algo salió mal. En adelante asumiremos que funcionó.
gmetad
Gmetad agrupa la información de todos los nodos. Antes de instalar este programa, se instalaron los programas y librerías que vienen con rrdtool. En Debian:
aptitude install librrd2-dev rrdtool
Ahora la compilación y configuración de gmetad.
tar xzvf ../ganglia-3.0.X.tar.gz && cd ganglia-3.0.X ./configure --with-gmetad make make install
Se necesita un archivo de configuración /etc/gmetad.conf. Este lo usamos en la prueba:
data_source "My Cluster" node1 node2 setuid_username "ganglia"
node1 y node2 significa que si node1 no puede ser alcanzado por red, gmetad usará node2 para obtener información. Este es un or lógico y no un and.
En la instalación fue creado un usuario del sistema ganglia, así que no ejecutaremos el servicio como nobody. El servicio no arrancará a menos que exista un directorio /var/lib/ganglia/rrds/ propiedad del uid que corresponde al usuario ganglia.
Busque un script de inicio para gmond al final de este documento, justo después del script están las instrucciones para modificarlo para que sirva para gmetad. Copie el script a /etc/init.d/gmetad y luego ejecute:
update-rc.d gmond defaults
Interfaz web
Se necesita instalar un servidor web y un entorno PHP. Estos son los comandos para Debian:
aptitude install php5-gd apache2 libapache2-mod-php5 a2enmod php5 /etc/init.d/apache2 restart
Copie el directorio web que viene con los archivos de instalación a /var/www/ganglia.
Ahora cargue http://yourserver/ganglia/ y esperemos que funcione.
Uso de unicast
Lea esta página para obtener detalles. Como Ganglia puede ser usado en muchos escenarios, le corresponde a usted decidir el método a usar. Es probable que necesite usar unicast si no tiene muchos nodos para monitorear o si no puede usar multicast. Por favor revise la configuración de ejemplo para unicast.
Ejemplo de configuración
Scripts de inicio
Estos son los scripts de inicio, tomados de Debian. Mostramos sólo el script gmond. El script gmetad es muy parecido, y sólo falta cambiar DAEMON, NAME y DESC como se especifica más adelante.
#! /bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/sbin/gmond
NAME=gmond
DESC="Ganglia Monitor Daemon"
test -x $DAEMON || exit 0
set -e
case "$1" in
start)
echo -n "Starting $DESC: "
start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \
--exec $DAEMON
echo "$NAME."
;;
stop)
echo -n "Stopping $DESC: "
start-stop-daemon --stop --quiet --oknodo \
--exec $DAEMON 2>&1 > /dev/null
echo "$NAME."
;;
reload)
;;
restart|force-reload)
$0 stop
$0 start
;;
*)
N=/etc/init.d/$NAME
# echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
echo "Usage: $N {start|stop|restart|force-reload}" >&2
exit 1
;;
esac
exit 0
Para gmetad, use las siguientes líneas.
DAEMON=/usr/sbin/gmetad NAME=gmetad DESC="Ganglia Monitor Meta-Daemon"
Licencia
Este documento tiene licencia Licencia de documentación libre GNU.
Autores:
- Tu nombre acá
- Recibimos ayuda.
- Nelson Castillo
- Inicio del documento.
Last update: 2007-12-18 (Rev 13361)