Ganglia

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
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

Voir aussi

  • Nmon — supervision de charge en local (interactif ou capture)
  • Sar — historique de charge en local via sysstat