Ganglia: Installation, Konfiguration, Inbetriebnahme
- Abhängigkeiten auf master01 installieren (Debian)
- Ganglia auf master01 installieren
- Besonderheit bei CentOS
- Konfiguration der Dienste
Um lustig bunte Bildchen unseres Clusters zu erhalten, installieren wir Ganglia. Für die Auswertung der Daten ist gmetad zuständig, der nur auf master01 zum Einsatz kommen wird; der gmond hingegen, der für das Einsammeln der Daten zuständig ist, muss auf jedem Host laufen, der überwacht werden soll.
Zuerst müssen die Abhängigkeiten aufgelöst werden; die Vorgehensweise ist für Debian und CentOS leicht unterschiedlich. Insbesondere benötigen wir auf master01
einen apache
mit PHP, da hier die Bildchen gemalt und angezeigt werden sollen.
Abhängigkeiten auf master01 installieren (Debian)
$ apt-get install librrd2 librrd2-dev \
rrdtool libxpat1 libexpat1-dev libapr1 \
libapr1-dev libconfuse0 libconfuse-dev apache2 php5
Ganglia auf master01 installieren
Sobald diese fehlerfrei installiert sind, nach /usr/src
wandern, das Source-Paket von ganglia
herunterladen, auspacken, kompilieren, installieren; wichtig ist hier die Option --with-gmetad
, da der gmetad
für das Sammeln und Auswerten der Daten zuständig sein wird.
$ cd /usr/src$ wget http://heanet.dl.sourceforge.net/sourceforge/ganglia/ganglia-3.1.0.tar.gz
$ tar xvfz ganglia-3.1.0.tar.gz
$ cd ganglia-3.1.0
$ ./configure --prefix=/opt/local --with-gmetad
$ make && make install
Besonderheit bei CentOS
Wie eingangs bereits erwähnt ist die Vorgehensweise bei auf einem CentOS-System eine leicht andere:
$ yum install apr.i386 apr-devel.i386 tar.i386 make.i386 libxml2-devel.i386 gcc-c++.i386 expat-devel.i386 gettext-devel.i386
$ export CC="/usr/bin/cc -I/opt/local/include -L/opt/local/lib"
Danach die Konfiguration für ldconfig
beackern:
## file: /etc/ld.so.conf.d/i486-linux-gnu.conf"
/opt/local/lib
/lib
/usr/lib
/usr/local/lib
libconfuse
gibt es nicht als RPM, das müssen wir also von Hand nach /opt/local
bauen:
$ cd /usr/src
$ wget http://bzero.se/confuse/confuse-2.6.tar.gz
$ tar xvfz confuse-2.6.tar.gz
$ cd confuse-2.6
$ ./configure --prefix=/opt/local --enable-shared
$ make && make install
$ ldconfig -v
Konfiguration der Dienste
Die Konfigurationsdateien finden sich, sofern dies beim configure
nicht anders angegeben wurde, unter /etc/ganglia
und heißen gmond.conf
(für den gmond
, der die Daten liefert) und gmetad.conf
(für den gmetad
, der die gesammelten Daten auswertet und die Bildchen malt). Diese Dateien müssen wir anlegen.
Webinterface
Als erstes müssen wir herausfinden, wo unser apache2
seine Daten ablegt; da dieser Webserver nur genau diese eine Aufgabe hat im Moment – nämlich das Ganglia-Webinterface anzeigen – orientieren wir uns an der Konfiguration des apache
-Default und finden heraus, welches DocumentRoot
es verwendet:
$ grep -i documentroot /etc/apache2/sites-enabled/000-default
DocumentRoot /var/www/
Also legen wir uns innerhalb von /var/www
einen Ordner an und schaufeln die benötigten Daten hinein:
$ mkdir /var/www/ganglia
$ cp -r /usr/src/ganglia-3.1.0/web/* /var/www/ganglia/
gmetad
gmetad
dient der Auswertung der Daten und läuft ausschließlich auf unserem master01
, der auch das Webinterface zur Verfügung stellen wird.
$ mkdir /etc/ganglia
$ cd /etc/ganglia
Dann folgt die eigentliche Konfiguration des Dienstes:
## file: "/etc/ganglia/gmetad.conf"
data_source "testcluster01" 30 localhost
scalable on
gridname "SpielCluster01"
trusted_hosts 127.0.0.1 10.16.0.0/24
setuid on
setuid_username "nobody"
xml_port 8651
interactive_port 8652
server_threads 10
rrd_rootdir "/var/ganglia/rrd"
Die Angabe in der letzten Zeile, rrd_rootdir
, ist Geschmackssache; die ursprüngliche Installation sah vor, dass diese Daten in /var/lib/ganglia/rrds
abgelegt werden – ich hab das mal angepasst. Doch wichtig: ändert man diese Variable, muss man auch die conf.php
des Webinterface anpassen!
## file: "/var/www/ganglia/conf.php"
# Where gmetad stores the rrd archives.
$gmetad_root = "/var/ganglia";
$rrds = "$gmetad_root/rrd";
Wichtig ist dann, das Verzeichnis anzulegen, entsprechende Zugriffsrechte zu setzen – und den Dienst ein erstes Mal (als root
!) zu starten:
$ mkdir -p /var/ganglia/rrd
$ chown -R nobody /var/ganglia
$ /opt/local/sbin/gmetad --debug=9
Going to run as user nobody
Sources are ...
Source: [testcluster01, step 30] has 1 sources
127.0.1.1
xml listening on port 8651
interactive xml listening on port 8652
cleanup thread has been started
Data thread 262161 is monitoring [testcluster01] data source
127.0.1.1
data_thread() got no answer from any [testcluster01] datasource
data_thread() got no answer from any [testcluster01] datasource
Sobald der Dienst gmetad
gestartet ist, ist auch das Webinterface verfügbar; natürlich wird hier noch nicht viel angezeigt, da ja noch keine Daten einlaufen. Deshalb werden im nächsten Schritt die gmond
-Instanzen konfiguriert und gestartet.
gmond
$ /opt/local/sbin/gmond -t > /etc/ganglia/gmond.conf
Dieser kleine Befehl erstellt und eine Basiskonfiguration für den gmond
, die nur in wenigen Punkten angepasst werden muss.
## file: "/etc/ganglia/gmond.conf"
...
globals {
daemonize = yes
setuid = yes
user = compute
debug_level = 0
max_udp_msg_len = 1472
mute = no
deaf = no
host_dmax = 0 /*secs */
cleanup_threshold = 300 /*secs */
gexec = no
send_metadata_interval = 0
}
...
cluster {
name = "SpielCluster01"
owner = "Bla and Fasel GmbH and Co. KG"
latlong = "N49.xxxxxx E6.xxxxxx"
url = "http://10.16.0.1/ganglia/"
}
...
host { location="master01" }
udp_send_channel { mcast_join = 224.0.0.0 port = 8649 ttl = 1 }
udp_recv_channel { mcast_join = 224.0.0.0 port = 8649 }
tcp_accept_channel { port = 8649 }
...
Netzwerkkonfiguration
Wie hier zu sehen ist, basiert das Setup der Dienste darauf, dass auf den Maschinen die entsprechende Multicast-Route gesetzt ist; für den Moment setzen wir diese von Hand und überall:
$ /sbin/route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0
Um sie boot safe
zu machen, kann man den Aufruf beispielsweise in die /etc/rc.local
hineinschreiben. Und natürlich müsst ihr das Netzwerk-Interface nehmen, das das für euch richtige ist! Anschließend kann auch dieser Dienst gestartet werden:
gmond starten
$ su - compute
$ /opt/local/sbin/gmond --debug=9
Dass das funktioniert zeigt sich an Meldungen wie „Processing a metric value message from“ oder „Got a heartbeat message“; funktioniert es nicht wie gewünscht ist es wichtig, das syslog
zu checken, ggf. auch das Error-Log des apache2
.
Hintergrundbild: Bild genauer anschauen – © Marianne Spiller – Alle Rechte vorbehalten