Blog der SHI GmbH

Cluster Monitoring mit Elasticsearch-head

Die Standardinstallation von Elasticsearch kommt ohne Admin-Oberfläche daher. Dies ist auch völlig ausreichend für den einfachen Betrieb einer Elasticsearch-Installation oder auch für die Entwicklung von neuer Suchfunktionalität. Für den administrativen Betrieb und für die Überwachung eines Clusters bietet Elasticsearch zwar viele APIs, die entsprechende Informationen als JSON-Objekte bereitstellen, jedoch reicht das nicht, um sich einen schnellen Überblick über den Index bzw. den Cluster zu verschaffen.

Aber auch hier bietet Elasticsearch das passende Zubehör. Es gibt eine ausgeklügelte Plug-In-API, mit der diverse Helfer installiert  werden können. Einer dieser Helfer ist das Plug-In Elasticsearch-head. In diesem Artikel möchte ich mich auf dieses Plug-In mit dem Fokus auf die Möglichkeiten des Cluster Monitoring konzentrieren.

Das Plug-In installieren

Elasticsearch-head ist ein Plug-In, welches eine grafische Oberfläche mitbringt und viele Funktionalitäten zum Monitoring bzw. für die tägliche Arbeit mit Elasticsearch bietet.
Das Plug-In ist über die in Elasticsearch integrierte Plug-In-API recht schnell installiert. Hierzu muss nur folgender Befehl ausgeführt werden:

plugin.bat -install mobz/elasticsearch-head

Während der Installation berichtet Elasticsearch über den Status. Wenn Sie folgenden Output in Ihrer Konsole sehen, haben sie das Plug-In erfolgreich installiert.

-> Installing mobz/elasticsearch-head...
Trying https://github.com/mobz/elasticsearch-head/zipball/master... (assuming site plugin)
Downloading ...........DONE
Identified as a _site plugin, moving to _site structure ...
Installed head

Nach erfolgreicher Installation befindet sich im Verzeichnis %ES_HOME%/plugins/ ein neuer Ordner „head“, welches alle notwendigen Daten enthält.

Das Plug-In nutzen

Einmal installiert wird das Plug-In zusammen mit Elasticsearch gestartet. Der Aufruf des Plug-Ins erfolgt mittels Browser über die folgende URL, wobei localhost bzw. 9200 die Standardeinstellungen sind, welche natürlich, je nach Konfiguration, abweichen können.

https://localhost:9200/_plugin/head/

Prinzipiell reicht es aus, dieses Plug-In nur auf einem Node in einem Cluster zu installieren, jedoch ist es generell immer besser auf allen Elasticsearch Nodes die gleichen Plug-Ins installiert zu haben.
Folgender Screenshot zeigt die Startseite des Plug-Ins.

Die wichtigsten Informationen sind übersichtlich auf einer Seite zusammengefasst. Zum einem wird der Status des Clusters dargestellt. „cluster health: yellow (1,5)“, wie es im obigen Beispiel zu sehen ist, zeigt an, dass es 1 Node aktiv ist, auf dem 5 Shards verteilt sind. Dennoch gibt es ein Problem im Cluster. Er ist nur als gelb markiert, da die Replikationen der einzelnen Shards fehlen. Generell gibt es folgende Cluster health Stati:

  • Grün â€“ bedeutet der Cluster ist online und hat keine Fehler.
  • Gelb â€“ bedeutet der Cluster ist verfügbar, alle Shards sind enthalten, jedoch existiert ein Problem. Dieser Status tritt meistens dann auf, wenn einzelne Shard Replikas nicht existieren, als Shards unassigned sind, wie im obigen Beispiel zu sehen ist. In diesem Status ist der Cluster aber dennoch durchsuchbar und bringt auch das korrekte Suchergebnis.
  • Rot â€“ bedeutet, dass der Cluster erreichbar ist, jedoch nicht alle Shards mindestens einmal live sind. In dieser Situation ist der Cluster zwar durchsuchbar, aber er liefert nur ein Teil der Ergebnisse aus.

Des Weiteren werden alle Elasticsearch Nodes mit den enthaltenen Shards angezeigt. Die primären Shards werden mit dickem Rahmen hervorgehoben. Die Shards, die mit einem dünneren Rahmen umrandet sind, sind die Replikas. Der folgende Screenshot zeigt einen Cluster mit 3 Nodes, wie es im optimalen Zustand aussehen könnte.

Dieses Plug-In kann noch mehr, als nur den Status des Clusters grafisch darzustellen. Man kann Indexe verwalten (anlegen, löschen), man kann einzelne Nodes verwalten, man kann Suchanfragen ausführen und etc.

Fazit

Elasticsearch bringt zwar keine Admin-Oberfläche direkt mit, aber über eine zur Verfügung stehende Plug-In-API kann man sich gezielt den eigenen Anforderungen entsprechende Plug-Ins installieren. Elasticsearch-head ist hierfür ein gutes Beispiel. Mit diesem Plug-In wird schnell und einfach der Status der Elasticsearch Installation visualisiert. Diese Funktion ist vor Allem im Cluster-Betrieb sehr hilfreich.

Weiterführende Informationen

Daniel Wrigley

Daniel Wrigley