# Ganglia (Software)

Ganglia ist ein skalierbares, verteiltes System-Monitoring-Tool für High-Performance-Computing-Systeme wie Cluster und Grids. Es ermöglicht dem Benutzer per Fernzugriff Live- oder historische Statistiken (z. B. Mittelwert der CPU-Last oder Netzauslastung) für alle überwachten Maschinen abzufragen.

## Ganglia

Ganglia entstand aus dem Millennium Project der University of California, Berkeley, und basiert auf einem hierarchischen Design von Cluster-Verbänden. Es stützt sich auf ein multicast-basiertes Listen/Announce-Protokoll, um die Status im Cluster zu überwachen. Es erzeugt einen Baum von Punkt-zu-Punkt-Verbindungen zwischen repräsentativen Cluster-Knoten und nutzt weit verbreitete Technologien wie XML für Datendarstellung, XDR für den kompakten, portablen Datentransport und RRDtool für die Datenspeicherung und Visualisierung. Es nutzt sorgfältig konstruierte Datenstrukturen und Algorithmen zu sehr niedrigen Pro-Knoten-Kosten, um hohe Parallelität zu erreichen. Die Implementierung ist robust und wurde auf eine umfangreiche Liste von Betriebssystemen und Prozessor-Architekturen portiert. Derzeit ist Ganglia auf über 500 Clustern in aller Welt im Einsatz. Es wurde verwendet, um Cluster in Universitäten und der ganzen Welt zu verbinden und kann in Cluster mit 2000 Knoten betrieben werden.
Das Ganglien-System besteht aus zwei einzigartigen Diensten, einem PHP-basierten Web-Front-End und ein paar anderen kleinen Hilfsprogrammen.

### Ganglia Monitoring Daemon (gmond)

Gmond ist ein Multi-Threaded Daemon, der auf jedem zu überwachenden Cluster-Knoten läuft. Für die Installation ist weder ein gemeinsames NFS-Dateisystem oder Datenbank-Backend, noch das Anlegen bestimmter Benutzerkonten oder das Pflegen von Konfigurationsdateien erforderlich.
Gmond hat vier Hauptaufgaben:
* Überwachen von Änderungen im Cluster-Verbund.
* Relevante Veränderungen bekanntmachen.
* Abhören des Status aller anderen Knoten über einen Ganglien Unicast oder Multicast-Kanal.
* Ausgabe des Cluster-Zustandes im XML-Format.
Jeder gmond überträgt Information in zwei verschiedene Arten:
* der Knotenstatus wird in Unicast oder Multicast Verfahren im XDR Format unter Nutzung von UDP-Nachrichten versendet.
* Versenden von XML Daten geschieht über eine TCP -Verbindung.

### Ganglia Meta Daemon (gmetad)

Der Verbund in Ganglia erfolgt über einen Baum von Punkt-zu-Punkt-Verbindungen zwischen repräsentativen Cluster-Knoten der aggregieren Knoten mehrere Cluster. An jedem Knoten im Baum, arbeitet ein Ganglia Meta Daemon (gmetad), periodisch erfragt dieser eine Auflistung von untergeordneten Datenquellen, analysiert die gesammelten Daten und exportiert diese als aggregierte XML über einen TCP-Socket an den Client. Datenquellen können entweder gmond Dämonen, die ein bestimmtes Cluster oder andere gmetad Dämonen, welche Sätze von Clustern, representiern sein. Die Datenquellen nutzen Source IP-Adressen für die Zutrittskontrolle und können unter Verwendung mehrerer IP-Adressen für Failover verwendet werden. Die letztere Möglichkeit ist die Aggregation der Daten von Clustern, da jeder gmond Daemon den gesamten Zustand der Cluster enthält.

### Ganglia PHP-Web-Front-End

Das Ganglia Web-Frontend bietet einen Blick auf die gesammelten Daten über dynamische Web-Seiten in Echtzeit. Das Web-Frontend zeigt die Ganglia Daten in einer sinnvollen Art und Weise für Systemadministratoren und Computer-Nutzer an. Das Web-Frontend von Ganglia begann als eine einfache HTML Ansicht der XML-Struktur und hat sich zu einem bunten System, das alle gesammelten Daten enthält, entwickelt.
Das Ganglia Web-Frontend richtet sich an Systemadministratoren und Anwender. Es visualisiert zum Beispiel die CPU-Auslastung während der letzten Stunden, Tage, Wochen, Monat oder Jahr. Das Web-Frontend zeigt ähnliche Kurven für die Speichernutzung, Festplattennutzung, Netzwerk-Statistiken, die Anzahl der laufenden Prozesse und alle anderen Ganglia-Metriken.
Das Web-Frontend ist abhängig von der Existenz des gmetad, es bietet Daten aus mehreren Ganglia Quellen. Das Web-Frontend öffnet den lokalen Port 8651 (Standard) und erwartet von dort eine Ganglia XML-Struktur, welches auf einer übersichtlichen Webseite dargestellt wird, erfordert aber, dass die volle XML-Struktur auf jeder Seite geparst wird. Daher sollte das Ganglia Web-Frontend auf einem ziemlich starken, dedizierten Maschine laufen, wenn es eine große Datenmenge präsentiert.
Das Ganglia Web-Frontend ist in der PHP-Skriptsprache entwickelt worden und nutzt Graphen, die gmetad generiert, um den Verlauf anzuzeigen. Es wurde auf vielen Systemen getestet, Unix (hauptsächlich Linux) mit dem Apache Webserver und PHP 4.1.