Introduction à Ganglia sur Ubuntu 14.04

introduction

Ganglia est un système de surveillance distribué évolutif. Il évolue bien avec un très grand nombre de serveurs et est utile pour afficher les métriques de performances en temps quasi réel.

À l’arrière, Ganglia est composé des composants suivants:

  • Gmond (démon de surveillance Ganglia): petit service qui collecte des informations sur un nœud. Ceci est installé sur chaque serveur que vous souhaitez surveiller.

  • Gmetad (Ganglia meta daemon): un démon sur lemaster node qui collecte les données de tous les démons Gmond (et autres démons Gmetad, le cas échéant).

  • Outil RRD (Round Robin Database): un outil sur lesmaster node utilisé pour stocker des données et des visualisations pour Ganglia dans des séries temporelles.

  • Front-end Web PHP: une interface Web sur lemaster node qui affiche des graphiques et des métriques à partir des données de l'outil RRD.

Fondamentalement, Gmond est installé sur chaque nœud (serveur) que vous souhaitez surveiller. Chaque nœud utilise Gmond pour envoyer des données à l'uniquemaster node exécutant Gmetad, qui collecte toutes les données du nœud et les envoie à l'outil RRD pour être stockées. Vous pouvez ensuite afficher les données dans votre navigateur Web à l'aide des scripts PHP et d'Apache.

Voici un schéma d’une grille Ganglia fonctionnelle, le nœud maître étant affiché en tant que serveur Ganglia exécutant le démon Gmetad et les autres nœuds représentés en tant que serveurs de connexion exécutant le démon Gmond:

Ganglia Architecture

Lorsque vous utilisez l'interface Web pour afficher les données surveillées, celles-ci sont organisées à plusieurs niveaux. Ganglia organise lesnodes, qui sont des machines individuelles surveillées, enclusters, qui sont des groupes de nœuds similaires. À un niveau supérieur, les collections de clusters peuvent également être organisées engrids. Vous verrez cette organisation lorsque vous vous connecterez à l'interface Web.

Dans cet article, nous allons d'abord configurer un seul cluster appelémy cluster, avec deux nœuds. Plus tard, nous mettrons en place une seule grille nomméeLondon avec deux clusters,Servers etDatabases. Les exemples montreront deux nœuds dans chaque cluster.

Conditions préalables

Tu auras besoin de:

  • Un droplet de nœud maître exécutantUbuntu 14.04. C'est le nœud que vous utiliserez pour afficher toutes les données de surveillance.

  • Au moins un nœud supplémentaire que vous souhaitez surveiller, exécutantUbuntu 14.04

  • Si vous voulez faire correspondre exactement les exemples de grille, vous devez avoir deux autres nœuds exécutantUbuntu 14.04. Cependant, vous pouvez facilement compléter le didacticiel avec un seul nœud sur chaque cluster.

Créez un utilisateur sudo sur chaque droplet. Commencez par créer l'utilisateur avec la commandeadduser, en remplaçant le nom d'utilisateur par le nom que vous souhaitez utiliser.

adduser username

Cela créera l'utilisateur et le répertoire de base et le groupe appropriés. Vous serez invité à définir un mot de passe pour le nouvel utilisateur et à confirmer le mot de passe. Vous serez également invité à entrer les informations de l'utilisateur. Confirmez les informations utilisateur pour créer l'utilisateur.

Ensuite, accordez à l'utilisateur les privilèges sudo avec la commandevisudo.

visudo

Cela ouvrira le fichier/etc/sudoers. Dans la sectionUser privilege specification, ajoutez une autre ligne pour l'utilisateur créé pour qu'elle ressemble à ceci (avec le nom d'utilisateur que vous avez choisi au lieu deusername):

# User privilege specification
root       ALL=(ALL:ALL) ALL
username   ALL=(ALL:ALL) ALL

Enregistrez le fichier et basculez vers le nouvel utilisateur.

su - username

Mettez à jour et mettez à niveau les packages système.

sudo apt-get update && sudo apt-get -y upgrade

Installation

Sur le nœud maître, installez le moniteur Ganglia, RRDtool, Gmetad et le serveur Web Ganglia.

sudo apt-get install -y ganglia-monitor rrdtool gmetad ganglia-webfrontend

Lors de l'installation, il vous sera demandé de redémarrer Apache. Sélectionnez oui. En fonction de votre système, il peut vous être demandé deux fois. Sélectionnez oui à nouveau.

Configurez le tableau de bord graphique en ligne en copiant le fichier de configuration de l'interface Web Ganglia dans le dossier Apachesites-enabled.

sudo cp /etc/ganglia-webfrontend/apache.conf /etc/apache2/sites-enabled/ganglia.conf

Facultatif: vous pouvez souhaiterpassword-protect ce site pour une sécurité accrue. Sinon, il sera ouvert à Internet et vous ne souhaiterez peut-être pas exposer les configurations de votre serveur et vos adresses IP.

Remarque: Cette section et la sectionClient Installation montrent une configuration plus simple impliquant un seul cluster, nommémy cluster. Si vous souhaitez configurer la grille et les deux clusters tout de suite, vous pouvez également référencer les paramètres dans la sectionGrids.

Editez le fichier de configuration Gmetad pour configurer votre cluster. Ce fichier configure où et comment le démon Getad va collecter des données.

sudo vi /etc/ganglia/gmetad.conf

Trouvez la ligne commençant pardata_source, comme indiqué ci-dessous:

data_source "my cluster" localhost

Modifiez la lignedata_source pour répertorier le nom de votre cluster, la fréquence de collecte des données en secondes et les informations de connexion de votre serveur. Dans l'exemple ci-dessous, la source de données est appeléemy cluster, et elle collecte des métriques une fois par minute à partir de l'hôte local (lui-même). Vous pouvez ajouter plus de lignesdata_source pour créer autant de clusters que vous le souhaitez.

data_source "my cluster" 60 localhost

Enregistrez vos modifications.

Ensuite, éditez le fichier de configuration Gmond. Même s'il s'agit du nœud maître, nous le configurons également pour la surveillance en tant que premier nœud du cluster «mon cluster». Le fichiergmond.conf configure où le nœud envoie ses informations.

sudo vi /etc/ganglia/gmond.conf

Dans la sectioncluster, assurez-vous de définir le nom sur le même nom que celui que vous avez défini dans le fichiergmetad.conf, qui dans cet exemple estmy cluster. Les autres champs sont facultatifs et peuvent être laissés enunspecified.

Pour référence, la valeurowner spécifie l'administrateur du cluster, ce qui est utile à des fins de contact. La valeurlatlong définit les coordonnées de latitude et de longitude pour les clusters répartis globalement. La valeururl correspond à un lien fournissant plus d'informations sur le cluster.

[...]
cluster {
  name = "my cluster" ## use the name from gmetad.conf
  owner = "unspecified"
  latlong = "unspecified"
  url = "unspecified"
}
[...]

Dans la sectionudp_send_channel, insérez une nouvelle lignehost avec la valeurlocalhost, qui est le serveur sur lequel vous envoyez les informations. Commentez la lignemcast_join.

Pour référence, la valeurmcast_join fournit une adresse de multidiffusion, mais nous devons envoyer les données à un seul hôte, ce n'est donc pas nécessaire. (Si vous décidez ultérieurement de créer une grille pour ce cluster, vous devrez l'activer à nouveau.)

[...]
udp_send_channel   {
  #mcast_join = 239.2.11.71 ## comment out
  host = localhost
  port = 8649
  ttl = 1
}
[...]

Dans la sectionudp_recv_channel, commentez les lignesmcast_join etbind. (Encore une fois, si vous souhaitez ajouter ce cluster à une grille, vous réactiverez ces lignes.)

La valeur debind fournit une adresse locale à laquelle se lier, mais comme le cluster n'enverra que des informations, cela n'est pas nécessaire.

[...]
udp_recv_channel {
  #mcast_join = 239.2.11.71 ## comment out
  port = 8649
  #bind = 239.2.11.71 ## comment out
}

/* You can specify as many tcp_accept_channels as you like to share
   an xml description of the state of the cluster */
tcp_accept_channel {
  port = 8649
}
[...]

Redémarrez Ganglia-monitor, Gmetad et Apache.

sudo service ganglia-monitor restart && sudo service gmetad restart && sudo service apache2 restart

Interface Web

Les ganglions devraient maintenant être configurés et accessibles àhttp://ip-address/ganglia.

La page principale affiche la vue en grille, qui est une vue d'ensemble de vos nœuds surveillés. Pour le moment, il ne devrait y en avoir qu'un seul:localhost.

Ganglia Web

L'onglet principal vous permet d'afficher les données à partir d'incréments de temps définis et personnalisés. Vous pouvez également actualiser manuellement les données en cliquant sur le boutonGet Fresh Data en haut à droite.

Ganglia Time

Sous la sélection de la plage de temps, vous pouvez choisir un nœud spécifique dans le menu déroulant intitulé–Choose a Node. À l'heure actuelle, localhost devrait être le seul nœud que vous voyez.

Ganglia Node

Sélectionnezlocalhost dans la liste pour afficher les informations spécifiques au nœud localhost. Puisque localhost est le seul nœud surveillé, les informations de la page du nœud localhost et de l'onglet principal seront les mêmes.

Ganglia Localhost

De là, vous pouvez également cliquer sur le boutonNode View en haut à droite pour afficher les informations contextuelles sur le nœud.

Ganglia Node View

Le reste de la page principale affiche un résumé des clusters du nœud. Cliquez sur n'importe quel graphique pour afficher des informations détaillées par incréments de temps différents, d'une heure à un an, ainsi que pour exporter les données du graphique au format CSV ou JSON.

Ganglia Detail

Au fur et à mesure que vos nœuds grandissent et que leur affichage sur la page principale devient difficile, vous pouvez utiliser l'onglet de recherche pour rechercher des hôtes ou des métriques particuliers, à l'aide d'expressions régulières. Vous pouvez également comparer des hôtes, créer des graphiques agrégés personnalisés, etc.

Installation du client

Sur le deuxième nœud que vous souhaitez surveiller dans le clustermy cluster, installez le moniteur Ganglia.

sudo apt-get install -y ganglia-monitor

Editez le fichier de configuration Gmond pour surveiller le nœud.

sudo vi /etc/ganglia/gmond.conf

Tout comme nous l'avons fait sur le nœud maître, mettez à jour le nom du cluster (my cluster dans cet exemple) dans la sectioncluster afin qu'il corresponde au nom sur le nœud maître.

[...]
cluster {
  name = "my cluster"     ## Cluster name
  owner = "unspecified"
  latlong = "unspecified"
  url = "unspecified"
[...]

Ajoutez une ligne au blocudp_send_channel pour leshost, qui devrait être l'adresse IP de votre nœud Ganglia maître (par exemple 1.1.1.1). Commentez la lignemcast_join.

[...]
udp_send_channel {
  #mcast_join = 239.2.11.71   ## Comment
  host = 1.1.1.1   ## IP address of master node
  port = 8649
  ttl = 1
}
[...]

Commentez toute la sectionudp_recv_channel avec la syntaxe/* ... */, car ce serveur ne recevra rien.

[...]
/* You can specify as many udp_recv_channels as you like as well.
udp_recv_channel {
  mcast_join = 239.2.11.71
  port = 8649
  bind = 239.2.11.71
}
*/
[...]

Redémarrez le service de surveillance.

sudo service ganglia-monitor restart

Attendez quelques minutes et rechargez l'interface Web. Le nouveau nœud doit apparaître automatiquement dans le cluster.

Répétez ces étapes sur tous les autres nœuds que vous souhaitez surveiller dans ce cluster.

Vous avez maintenant un cluster! Vous pouvez afficher la vue d'ensemble de votre cluster sur l'interface Web et accéder à des nœuds spécifiques ainsi qu'à des métriques particulières.

Ganglia Cluster

Des grilles

Les grilles vous permettent d'organiser plusieurs clusters ensemble. Par exemple, si vous avez plusieurs clusters de bases de données MySQL servant différentes applications, vous pouvez organiser tous ces clusters dans la même grille pour afficher les performances de tous vos serveurs MySQL. Ou, si vous avez des serveurs d'applications dans le monde entier, vous pouvez les placer dans une grille par emplacement, telle que Londres.

Pour créer une grille, éditez le fichier/etc/ganglia/gmetad.conf sur les Gangliamaster node.

Veuillez noter que vous ne pouvez créer qu'une seule grille par Gmetad. Si vous voulez créer plus d'une grille, vous devez installer Gmetad sur un autre serveur. Dans cet exemple, nous appellerons notre grilleLondon.

sudo vi /etc/ganglia/gmetad.conf

Nommez votre grille dans la section grille en décommentant la lignegridname et en remplaçantMyGrid par le nom de grille de votre choix. Dans cet exemple, nous nommerons la grilleLondon.

# The name of this Grid. All the data sources above will be wrapped in a GRID
# tag with this name.
# default: unspecified
# gridname "MyGrid"

Par exemple, si vous créez votre grille pour tous vos serveurs London:

gridname "London"

Ajoutez ou modifiez une nouvelle lignedata_source pour chaque cluster souhaité dans cette grille.

Mettez à jour le nom du cluster, puis ajoutez les informations d'hôte et de port pour chaque serveur que vous souhaitez ajouter à ce cluster. Veuillez noter que les clusters sont identifiés par le numéro de port, donc chaque nouvelle lignedata_source, ou cluster, doit utiliser un numéro de port différent.

Par exemple, dans l'exemple ci-dessous, nous ajoutons deux clusters, appelésServers etDatabases, à la grille de Londres. Tous les nœuds deServers utilisent le port8556, et tous les nœuds deDatabases utilisent le port8857.

data_source "Servers" localhost 1.1.1.2:8556
data_source "Databases" 1.2.1.1:8557 1.2.1.2:8557

Sur chaque serveur (ou nœud) spécifié dans le fichier de configuration Gmetad (dans cet exemple, localhost, 1.1.1.2, 1.2.1.1 et 1.2.1.2), éditez le fichier de configuration Gmond.

sudo vi /etc/ganglia/gmond.conf

Mettez à jour la valeurname dans la section cluster pour qu'elle corresponde au nom du cluster. Ici, nous allons configurer un nœud pour faire partie du clusterDatabases. (Notez que si vous configurez deux nœuds en utilisant la méthode précédente, vous devrez revenir en arrière et modifier le fichier/etc/ganglia/gmond.conf sur chacun d'eux pour qu'il corresponde aux nouveaux paramètres.)

/* If a cluster attribute is specified, then all gmond hosts are wrapped inside
 * of a  tag.  If you do not specify a cluster tag, then all  will
 * NOT be wrapped inside of a  tag. */

cluster {
  name = "Databases"
  owner = "unspecified"
  latlong = "unspecified"
  url = "unspecified"
}

De plus, contrairement aux sections précédentes, vous devrieznot commenter les lignesmcast_join.

Votre blocudp_send_channel devrait ressembler à ceci. Assurez-vous de mettre à jour le numéro deport! Dans notre exemple, puisque cela fait partie du clusterDatabases, le port doit être8557. Les autres lignes peuvent rester les mêmes.

udp_send_channel {
mcast_join = 239.2.11.71
port = 8557
ttl = 1
}

Votre blocudp_recv_channel devrait ressembler à ceci, en utilisant le numéro de port approprié. Les autres lignes peuvent rester les mêmes.

udp_recv_channel {
mcast_join = 239.2.11.71
port = 8557
bind = 239.2.11.71
}

Enfin, votre bloctcp_accept_channel devrait ressembler à ceci, en utilisant le numéro de port approprié.

tcp_accept_channel {
port = 8557
}

Redémarrez les services de surveillance sur chaque nœud.

sudo service ganglia-monitor restart

Redémarrez Ganglia-monitor, Gmetad et Apache sur le serveur hôte Ganglia oumaster node.

sudo service ganglia-monitor restart && sudo service gmetad restart && sudo service apache2 restart

Dans l'interface Web, vous devriez maintenant voir le nom de votre grille et l'option de choisir un cluster. De là, vous pouvez sélectionner et explorer un nœud.

Ganglia Grid

Conclusion

Ganglia est très facile à configurer et à passer d’un nœud à des centaines, voire des milliers. Il offre un niveau de performances élevé et peut vous aider à surveiller autant de serveurs que vous le souhaitez.

Related