Ganglia
| Fiche express | |
|---|---|
| Domaine | Supervision de charge (métriques cluster/serveur) |
| Commande | gmond, gmetad, gmetric
|
| Contexte | RHEL/CentOS (paquets EPEL) — RRDtool + frontend web PHP |
| Voir aussi | Nmon, Sar (supervision similaire, en local) |
Ganglia est un système de supervision distribué conçu pour les clusters et grilles de serveurs. Il repose sur un démon léger (gmond) installé sur chaque nœud qui collecte et diffuse les métriques (CPU, mémoire, réseau, disque...) en XML/XDR, un collecteur central (gmetad) qui interroge les gmond et archive l'historique via RRDtool, et une interface web PHP qui affiche les graphes.
Installation du client
Sur chaque nœud à superviser, installer et configurer gmond, qui collecte les métriques locales et les diffuse sur le réseau :
yum -y install ganglia-gmond
# /etc/ganglia/gmond.conf
cluster {
name = "NOM_CLUSTER"
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
}
udp_send_channel {
bind_hostname = yes
host = SERVEUR_IP
port = 8649
ttl = 1
}
udp_recv_channel {
}
tcp_accept_channel {
port = 8649
}
Installation du serveur
Le serveur cumule trois rôles : un gmond local qui sert de point d'entrée des données du cluster, gmetad qui centralise et archive l'historique, et ganglia-web qui affiche les graphes.
yum install ganglia-gmond ganglia-gmetad ganglia-web
Sur le serveur, gmond.conf utilise en général un envoi multicast plutôt qu'un envoi ciblé vers une seule IP, pour que tous les nœuds du cluster reçoivent les métriques des autres :
# /etc/ganglia/gmond.conf
cluster {
name = "NOM_CLUSTER"
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
}
host {
location = "unspecified"
}
udp_send_channel {
bind_hostname = yes
mcast_join = 239.2.11.71
port = 8649
ttl = 1
}
udp_recv_channel {
port = 8649
}
tcp_accept_channel {
port = 8649
}
gmetad interroge un ou plusieurs gmond/gmetad sources et stocke l'historique via RRDtool :
# /etc/ganglia/gmetad.conf
data_source "NOM_CLUSTER" localhost SERVEUR_A SERVEUR_B
Interface web
Le frontend PHP (ganglia-web) est servi par Apache/httpd via un alias dédié :
# /etc/httpd/conf.d/ganglia.conf
Alias /ganglia /var/www/ganglia
<Directory /ganglia/>
AllowOverride AuthConfig
Order deny,allow
Allow from all
</Directory>
Après toute modification de la configuration httpd :
service httpd reload
Authentification web
L'accès peut être restreint par Basic Auth (fichier .htpasswd) au niveau Apache, et complété par un système de rôles côté application dans conf.php :
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule authz_user_module modules/mod_authz_user.so
<Directory /ganglia/>
AuthType Basic
AuthName "Ganglia Access"
AuthUserFile "/etc/httpd/conf.d/.htpasswd"
Require valid-user
</Directory>
// /etc/ganglia/conf.php
$conf['auth_system'] = 'enabled';
$acl = GangliaAcl::getInstance();
$acl->addRole('username', GangliaAcl::ADMIN);
Commandes utiles
gmetric --name temperature --value "$(script.sh)" --type float --units Fahrenheit # publie une métrique custom depuis un script
gstat --help # état des nœuds vus par gmond local