Ganglia es una herramienta de monitoreo distribuida y escalable para sistemas, clústeres y redes de computación de alto rendimiento. El software se utiliza para ver estadísticas en vivo o grabadas que cubren métricas como promedios de carga de CPU o utilización de red para muchos nodos.
El software de Ganglia se incluye en distribuciones Linux de nivel empresarial como Red Hat Enterprise Level (RHEL) o la versión reempaquetada de CentOS del mismo. Ganglia surgió a partir de los requisitos de los sistemas de monitoreo de Berkeley (Universidad de California), pero ahora lo utilizan organizaciones comerciales y educativas como Cray, MIT, NASA y Twitter.
Se basa en un diseño jerárquico orientado a federaciones de clústeres. Se apoya en un protocolo de escucha/anuncio basado en multidifusión para supervisar el estado dentro de los clústeres y utiliza un árbol de conexiones punto a punto entre nodos representativos del clúster para federar clústeres y agregar su estado. Aprovecha tecnologías ampliamente utilizadas, como XML para la representación de datos, XDR para el transporte de datos compacto y portátil, y RRDtool para el almacenamiento y la visualización de datos. Utiliza estructuras de datos y algoritmos cuidadosamente diseñados para lograr una sobrecarga por nodo muy baja y una alta concurrencia. La implementación es robusta, se ha adaptado a un amplio conjunto de sistemas operativos y arquitecturas de procesadores, y actualmente se utiliza en más de 500 clústeres en todo el mundo. Se ha utilizado para vincular clústeres en campus universitarios y en todo el mundo y puede escalar para manejar clústeres con 2000 nodos. [2]
El sistema de ganglios está compuesto por dos demonios únicos, un front-end web basado en PHP y algunos otros pequeños programas de utilidad.
Gmond es un demonio multiproceso que se ejecuta en cada nodo del clúster que desea supervisar. La instalación no requiere tener un sistema de archivos NFS común o un back-end de base de datos, instalar cuentas especiales o mantener archivos de configuración.
Gmond tiene cuatro responsabilidades principales:
Cada gmundo transmite información de dos maneras diferentes:
La federación en Ganglia se logra utilizando un árbol de conexiones punto a punto entre nodos de clúster representativos para agregar el estado de múltiples clústeres. En cada nodo del árbol, un metadaemon de Ganglia (gmetad) sondea periódicamente una colección de fuentes de datos secundarias, analiza el XML recopilado, guarda todas las métricas numéricas y volátiles en bases de datos de operación por turnos y exporta el XML agregado a través de un socket TCP a los clientes. Las fuentes de datos pueden ser daemons de gmond, que representan clústeres específicos, u otros daemons de gmetad, que representan conjuntos de clústeres. Las fuentes de datos utilizan direcciones IP de origen para el control de acceso y se pueden especificar utilizando múltiples direcciones IP para la conmutación por error. Esta última capacidad es natural para agregar datos de clústeres, ya que cada daemon de gmond contiene el estado completo de su clúster.
La interfaz web de Ganglia ofrece una vista de la información recopilada a través de páginas web dinámicas en tiempo real. Lo más importante es que muestra los datos de Ganglia de una manera significativa para los administradores de sistemas y los usuarios de computadoras. Aunque la interfaz web de Ganglia comenzó como una simple vista HTML del árbol XML, ha evolucionado hasta convertirse en un sistema que mantiene un historial colorido de todos los datos recopilados.
La interfaz web de Ganglia está dirigida a los administradores y usuarios del sistema . Por ejemplo, se puede ver el uso de la CPU durante la última hora, día, semana, mes o año. La interfaz web muestra gráficos similares para el uso de memoria, uso de disco, estadísticas de red, número de procesos en ejecución y todas las demás métricas de Ganglia.
El front-end web depende de la existencia de gmetad, que le proporciona datos de varias fuentes de Ganglia. En concreto, el front-end web abrirá el puerto local 8651 (por defecto) y espera recibir un árbol XML de Ganglia. Las páginas web en sí son muy dinámicas; cualquier cambio en los datos de Ganglia aparece inmediatamente en el sitio. Este comportamiento genera un sitio muy responsivo, pero requiere que se analice el árbol XML completo en cada acceso a la página. Por lo tanto, el front-end web de Ganglia debería ejecutarse en una máquina dedicada y bastante potente si presenta una gran cantidad de datos.
El front-end web de Ganglia está escrito en PHP y utiliza gráficos generados por gmetad para mostrar información histórica. Se ha probado en muchas versiones de Unix (principalmente Linux ) con el servidor web Apache y el módulo PHP5.