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:
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/sudoers
geö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-enabled
kopieren.
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.conf
konfiguriert, 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 Wertowner
den 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 Werturl
bezieht 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_join
aus.
Als Referenz liefert der Wert vonmcast_join
eine 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
undbind
aus. (Wenn Sie diesen Cluster einem Raster hinzufügen möchten, aktivieren Sie diese Zeilen erneut.)
Der Wertbind
gibt 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.
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.
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.
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.
Von hier aus können Sie auch auf die SchaltflächeNode View oben rechts klicken, um Kontextinformationen zum Knoten anzuzeigen.
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.
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_join
aus.
[...]
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_channel
mit 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.
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 vonname
im 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_join
auskommentieren.
Ihrudp_send_channel
Block sollte so aussehen. Stellen Sie sicher, dass Sie die Nummer vonport
aktualisieren! 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_channel
unter 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.
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.