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:
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.
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.
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.
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.
De là, vous pouvez également cliquer sur le boutonNode View en haut à droite pour afficher les informations contextuelles sur le nœud.
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.
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.
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.
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.