Einführung in Ganglia unter Ubuntu 14.04

Einführung

Ganglia ist ein skalierbares verteiltes Überwachungssystem. Es lässt sich gut mit einer sehr großen Anzahl von Servern skalieren und ist nützlich, um Leistungsmessdaten nahezu in Echtzeit anzuzeigen.

Am hinteren Ende besteht Ganglia aus den folgenden Komponenten:

  • Gmond (Ganglia Monitoring Daemon): Ein kleiner Dienst, der Informationen über einen Knoten sammelt. Dies wird auf jedem Server installiert, den Sie überwachen möchten.

  • Gmetad (Ganglia-Meta-Daemon): Ein Daemon aufmaster node, der Daten von allen Gmond-Daemons (und ggf. anderen Gmetad-Daemons) sammelt.

  • RRD-Tool (Round Robin Database): Ein Tool fürmaster node, mit dem Daten und Visualisierungen für Ganglien in Zeitreihen gespeichert werden.

  • PHP-Web-Frontend: Eine Webschnittstelle aufmaster node, die Diagramme und Metriken aus Daten im RRD-Tool anzeigt.

Grundsätzlich ist auf jedem Knoten (Server), den Sie überwachen möchten, Gmond installiert. Jeder Knoten verwendet Gmond, um Daten an das einzelnemaster node zu senden, auf dem Gmetad ausgeführt wird. Dieses sammelt alle Knotendaten und sendet sie zur Speicherung an das RRD-Tool. Anschließend können Sie die Daten mit Hilfe der PHP-Skripte und von Apache in Ihrem Webbrowser anzeigen.

Hier ist ein Diagramm eines funktionierenden Ganglia-Gitters mit dem Masterknoten als Ganglia-Server, auf dem der Gmetad-Dämon ausgeführt wird, und den anderen Knoten als Verbindungsserver, auf denen der Gmond-Dämon ausgeführt wird:

Ganglia Architecture

Wenn Sie die Weboberfläche zum Anzeigen der überwachten Daten verwenden, sind die Daten auf mehreren Ebenen organisiert. Ganglien organisierennodes, die einzelne überwachte Maschinen sind, inclusters, die Gruppen ähnlicher Knoten sind. Auf einer höheren Ebene können Sammlungen von Clustern auch ingrids organisiert werden. Diese Organisation wird angezeigt, wenn Sie sich bei der Weboberfläche anmelden.

In diesem Artikel richten wir zunächst einen einzelnen Cluster mit dem Namenmy cluster mit zwei Knoten ein. Später werden wir ein einzelnes Gitter mit dem NamenLondon mit zwei Clustern,Servers undDatabases, einrichten. Die Beispiele zeigen zwei Knoten in jedem Cluster.

Voraussetzungen

Du wirst brauchen:

  • Ein Masterknoten-Droplet mitUbuntu 14.04. Über diesen Knoten können Sie alle Überwachungsdaten anzeigen.

  • Mindestens ein zusätzlicher Knoten, den Sie überwachen möchten, mitUbuntu 14.04

  • Wenn Sie den Rasterbeispielen genau entsprechen möchten, sollten zwei weitere KnotenUbuntu 14.04 ausführen. Sie können das Lernprogramm jedoch problemlos mit nur einem Knoten in jedem Cluster abschließen.

Erstellen Sie einen sudo-Benutzer für jedes Droplet. Erstellen Sie zunächst den Benutzer mit dem Befehladduser und ersetzen Sie den Benutzernamen durch den Namen, den Sie verwenden möchten.

adduser username

Dadurch werden der Benutzer sowie das entsprechende Basisverzeichnis und die entsprechende Gruppe erstellt. Sie werden aufgefordert, ein Kennwort für den neuen Benutzer festzulegen und das Kennwort zu bestätigen. Sie werden außerdem aufgefordert, die Benutzerinformationen einzugeben. Bestätigen Sie die Benutzerinformationen, um den Benutzer zu erstellen.

Gewähren Sie dem Benutzer als Nächstes sudo-Berechtigungen mit dem Befehlvisudo.

visudo

Dadurch wird die Datei/etc/sudoersgeöffnet. Fügen Sie im AbschnittUser privilege specification eine weitere Zeile für den erstellten Benutzer hinzu, damit dies so aussieht (mit dem von Ihnen gewählten Benutzernamen anstelle vonusername):

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

Speichern Sie die Datei und wechseln Sie zum neuen Benutzer.

su - username

Aktualisieren und aktualisieren Sie die Systempakete.

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

Installation

Installieren Sie auf dem Masterknoten Ganglia-Monitor, RRDtool, Gmetad und das Ganglia-Web-Frontend.

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

Während der Installation werden Sie aufgefordert, Apache neu zu starten. Wählen Sie ja. Abhängig von Ihrem System werden Sie möglicherweise zweimal gefragt. Wählen Sie erneut Ja.

Richten Sie das grafische Online-Dashboard ein, indem Sie die Ganglia-Web-Front-End-Konfigurationsdatei in den Ordner von Apachesites-enabledkopieren.

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

Optional: Möglicherweise möchten Sie diese Sitepassword-protect verwenden, um die Sicherheit zu erhöhen. Andernfalls wird es für das Internet geöffnet, und Sie möchten möglicherweise Ihre Serverkonfigurationen und IP-Adressen nicht offen legen.

Hinweis: Dieser Abschnitt und der AbschnittClient Installation zeigen eine einfachere Einrichtung mit einem einzelnen Cluster mit dem Namenmy cluster. Wenn Sie das Raster und beide Cluster sofort einrichten möchten, können Sie auch auf die Einstellungen im AbschnittGridsverweisen.

Bearbeiten Sie die Gmetad-Konfigurationsdatei, um Ihren Cluster einzurichten. Diese Datei konfiguriert, wo und wie der Getad-Daemon Daten sammelt.

sudo vi /etc/ganglia/gmetad.conf

Suchen Sie die Zeile, die mitdata_source beginnt, wie unten gezeigt:

data_source "my cluster" localhost

Bearbeiten Sie die Zeiledata_source, um den Namen Ihres Clusters, die Häufigkeit der Datenerfassung in Sekunden und die Verbindungsinformationen Ihres Servers aufzulisten. Im folgenden Beispiel heißt die Datenquellemy cluster und sammelt einmal pro Minute Metriken vom lokalen Host (selbst). Sie können mehrdata_source-Zeilen hinzufügen, um so viele Cluster zu erstellen, wie Sie möchten.

data_source "my cluster" 60 localhost

Speichern Sie Ihre Änderungen.

Bearbeiten Sie als Nächstes die Gmond-Konfigurationsdatei. Obwohl dies der Masterknoten ist, richten wir ihn auch für die Überwachung als ersten Knoten im Cluster "Mein Cluster" ein. Die Dateigmond.confkonfiguriert, wohin der Knoten seine Informationen sendet.

sudo vi /etc/ganglia/gmond.conf

Stellen Sie im Abschnittcluster sicher, dass Sie den Namen auf denselben Namen setzen, den Sie in der Dateigmetad.conf festgelegt haben, in diesem Beispielmy cluster. Die restlichen Felder sind optional und können alsunspecified belassen werden.

Als Referenz gibt der Wertownerden Administrator des Clusters an, was für Kontaktzwecke nützlich ist. Derlatlong-Wert legt die Breiten- und Längengradkoordinaten für global verteilte Cluster fest. Der Werturlbezieht sich auf einen Link, um weitere Informationen zum Cluster bereitzustellen.

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

Fügen Sie im Abschnittudp_send_channel eine neue Zeilehost mit dem Wertlocalhost ein. Dies ist der Server, auf dem Sie die Informationen senden. Kommentieren Sie die Zeilemcast_joinaus.

Als Referenz liefert der Wert vonmcast_joineine Multicast-Adresse, aber wir müssen die Daten nur an einen Host senden, daher ist dies nicht erforderlich. (Wenn Sie später beschließen, ein Raster für diesen Cluster zu erstellen, aktivieren Sie es erneut.)

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

Kommentieren Sie im Abschnittudp_recv_channel die Zeilenmcast_join undbindaus. (Wenn Sie diesen Cluster einem Raster hinzufügen möchten, aktivieren Sie diese Zeilen erneut.)

Der Wertbindgibt eine lokale Adresse an, an die gebunden werden soll. Da der Cluster jedoch nur Informationen sendet, ist dies nicht erforderlich.

[...]
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
}
[...]

Ganglia-monitor, Gmetad und Apache neu starten.

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

Webinterface

Ganglien sollten jetzt beihttp://ip-address/ganglia eingerichtet und zugänglich sein.

Die Hauptseite zeigt die Rasteransicht, die eine Übersicht Ihrer überwachten Knoten darstellt. Im Moment sollte es nur eine geben:localhost.

Ganglia Web

Auf der Hauptregisterkarte können Sie die Daten in festgelegten und benutzerdefinierten Zeitschritten anzeigen. Sie können die Daten auch manuell aktualisieren, indem Sie oben rechts auf die SchaltflächeGet Fresh Data klicken.

Ganglia Time

Unterhalb der Zeitbereichsauswahl können Sie einen bestimmten Knoten aus dem Dropdown-Menü mit der Bezeichnung–Choose a Node auswählen. Derzeit sollte localhost der einzige Knoten sein, den Sie sehen.

Ganglia Node

Wählen Sielocalhost aus der Liste aus, um Informationen zum lokalen Hostknoten anzuzeigen. Da localhost der einzige überwachte Knoten ist, sind die Informationen auf der Seite localhost node und der Registerkarte main identisch.

Ganglia Localhost

Von hier aus können Sie auch auf die SchaltflächeNode View oben rechts klicken, um Kontextinformationen zum Knoten anzuzeigen.

Ganglia Node View

Der Rest der Hauptseite zeigt eine Zusammenfassung der Cluster des Knotens. Klicken Sie auf ein Diagramm, um detaillierte Informationen in verschiedenen Zeitschritten von einer Stunde bis zu einem Jahr anzuzeigen und um Diagrammdaten im CSV- oder JSON-Format zu exportieren.

Ganglia Detail

Wenn Ihre Knoten größer werden und die Anzeige aller Knoten auf der Hauptseite schwierig wird, können Sie mithilfe regulärer Ausdrücke auf der Registerkarte "Suche" nach bestimmten Hosts oder Metriken suchen. Sie können auch Hosts vergleichen, benutzerdefinierte Aggregatdiagramme erstellen und vieles mehr.

Client-Installation

Installieren Sie auf dem zweiten Knoten, den Sie immy cluster-Cluster überwachen möchten, den Ganglia-Monitor.

sudo apt-get install -y ganglia-monitor

Bearbeiten Sie die Gmond-Konfigurationsdatei zur Überwachung des Knotens.

sudo vi /etc/ganglia/gmond.conf

Aktualisieren Sie wie auf dem Masterknoten den Clusternamen (in diesem Beispielmy cluster) im Abschnittcluster, damit er mit dem Namen auf dem Masterknoten übereinstimmt.

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

Fügen Sie demudp_send_channel-Block eine Zeile fürhost hinzu, die die IP-Adresse Ihres Master-Ganglia-Knotens sein sollte (z. 1.1.1.1). Kommentieren Sie die Zeilemcast_joinaus.

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

Kommentieren Sie den gesamten Abschnittudp_recv_channelmit der Syntax/* ... */aus, da dieser Server nichts empfängt.

[...]
/* 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
}
*/
[...]

Starten Sie den Überwachungsdienst neu.

sudo service ganglia-monitor restart

Warten Sie einige Minuten und laden Sie das Webinterface neu. Der neue Knoten sollte automatisch im Cluster angezeigt werden.

Wiederholen Sie diese Schritte auf allen anderen Knoten, die Sie in diesem Cluster überwachen möchten.

Sie haben jetzt einen Cluster! Sie können die Übersicht Ihres Clusters auf der Weboberfläche anzeigen und einen Drilldown zu bestimmten Knoten sowie zu bestimmten Metriken durchführen.

Ganglia Cluster

Gitter

Mithilfe von Rastern können Sie mehrere Cluster zusammen organisieren. Wenn Sie beispielsweise mehrere Cluster von MySQL-Datenbanken haben, die unterschiedliche Anwendungen bedienen, können Sie alle diese Cluster in einem Raster organisieren, um die Leistung aller Ihrer MySQL-Server anzuzeigen. Wenn Sie Anwendungsserver auf der ganzen Welt haben, können Sie diese nach Standort in ein Raster einordnen, z. B. nach London.

Um ein Raster zu erstellen, bearbeiten Sie die Datei/etc/ganglia/gmetad.conf auf den Gangliamaster node.

Bitte beachten Sie, dass Sie nur ein Raster pro Gmetad erstellen können. Wenn Sie mehr als ein Grid erstellen möchten, müssen Sie Gmetad auf einem anderen Server installieren. In diesem Beispiel nennen wir unser GitterLondon.

sudo vi /etc/ganglia/gmetad.conf

Benennen Sie Ihr Raster im Rasterabschnitt, indem Sie die Zeilegridname auskommentieren undMyGrid durch den Rasternamen Ihrer Wahl ersetzen. In diesem Beispiel nennen wir das GitterLondon.

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

Wenn Sie beispielsweise Ihr Grid für alle Ihre Londoner Server erstellen:

gridname "London"

Fügen Sie für jeden gewünschten Cluster in diesem Raster eine neuedata_source-Zeile hinzu oder bearbeiten Sie sie.

Aktualisieren Sie den Namen für den Cluster und fügen Sie dann Host- und Portinformationen für jeden Server hinzu, den Sie diesem Cluster hinzufügen möchten. Bitte beachten Sie, dass Cluster durch die Portnummer identifiziert werden. Daher sollte jede neuedata_source-Leitung oder jeder neue Cluster eine andere Portnummer verwenden.

Im folgenden Beispiel fügen wir dem Londoner Raster beispielsweise zwei Cluster hinzu, die alsServers undDatabases bezeichnet werden. Alle Knoten inServers verwenden Port8556, und alle Knoten inDatabases verwenden Port8857.

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

Bearbeiten Sie auf jedem Server (oder Knoten), der in der Gmetad-Konfigurationsdatei angegeben ist (in diesem Beispiel localhost, 1.1.1.2, 1.2.1.1 und 1.2.1.2), die Gmond-Konfigurationsdatei.

sudo vi /etc/ganglia/gmond.conf

Aktualisieren Sie den Wert vonnameim Clusterabschnitt so, dass er mit dem Clusternamen übereinstimmt. Hier richten wir einen Knoten als Teil desDatabases-Clusters ein. (Beachten Sie, dass Sie, wenn Sie zwei Knoten mit der früheren Methode einrichten, zurückgehen und die/etc/ganglia/gmond.conf-Datei auf jedem Knoten bearbeiten müssen, um sie an die neuen Einstellungen anzupassen.)

/* 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"
}

Im Gegensatz zu den vorherigen Abschnitten sollten Sie außerdemnot Zeilen ausmcast_joinauskommentieren.

Ihrudp_send_channel Block sollte so aussehen. Stellen Sie sicher, dass Sie die Nummer vonportaktualisieren! In unserem Beispiel sollte der Port8557 sein, da dies Teil desDatabases-Clusters ist. Die anderen Zeilen können gleich bleiben.

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

Ihrudp_recv_channel-Block sollte unter Verwendung der entsprechenden Portnummer so aussehen. Die anderen Zeilen können gleich bleiben.

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

Schließlich sollte der Block Ihrestcp_accept_channelunter Verwendung der entsprechenden Portnummer so aussehen.

tcp_accept_channel {
port = 8557
}

Starten Sie die Überwachungsdienste auf jedem Knoten neu.

sudo service ganglia-monitor restart

Starten Sie Ganglia-Monitor, Gmetad und Apache auf dem Ganglia-Hostserver odermaster node neu.

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

Auf der Weboberfläche sollten Sie nun den Namen Ihres Rasters und die Option zur Auswahl eines Clusters sehen. Von dort aus können Sie einen Knoten auswählen und einen Drilldown durchführen.

Ganglia Grid

Fazit

Ganglia ist sehr einfach einzurichten und von einem Knoten auf Hunderte oder Tausende zu skalieren. Es bietet eine hohe Leistung und kann Ihnen helfen, so viele Server zu überwachen, wie Sie benötigen.