Tutorial

Installieren und Konfigurieren von Elasticsearch unter Ubuntu 18.04

UbuntuElasticsearchUbuntu 18.04

Einführung

Elasticsearch ist eine Plattform zur verteilten Suche und Analyse von Daten in Echtzeit. Aufgrund der hohe Benutzerfreundlichkeit, leistungsfähiger Funktionen und Skalierbarkeit stellt Elasticsearch eine beliebte Wahl dar.

Dieser Artikel leitet Sie durch die Installation und Konfiguration von Elasticsearch für Ihren Anwendungsfall, die Sicherung Ihrer Installation sowie die ersten Schritte mit Ihrem Elasticsearch-Server.

Voraussetzungen

Bevor Sie dieses Tutorial absolvieren, benötigen Sie Folgendes:

  • Einen Ubuntu 18.04-Server mit 4 GB RAM und 2 CPUs, eingerichtet mit einem non-root user, der über sudo-Berechtigungen verfügt. Sie können dies erreichen, indem Sie Ersteinrichtung eines Servers unter Ubuntu 18.04 ausführen.

  • Installiertes OpenJDK 11

In diesem Tutorial arbeiten wir mit der Mindestausstattung an CPU und RAM, die zur Ausführung von Elasticsearch benötigt wird. Beachten Sie, dass die Menge von CPU, RAM und Speicher, die Ihr Elasticsearch-Server benötigt, von der Menge der Protokolle abhängt, die Sie erwarten.

Schritt 1 — Installieren und Konfigurieren von Elasticsearch

Die Elasticsearch-Komponenten sind in Standard-Paket-Repositorys von Ubuntu nicht verfügbar. Sie können jedoch mit APT installiert werden, nachdem Sie die Paketquellliste von Elastic hinzugefügt haben.

Alle Pakete werden mit dem Signierschlüssel von Elasticsearch signiert, um das System vor Paket-Spoofing zu schützen. Pakete, die mit dem Schlüssel authentifiziert wurden, werden von Ihrem Paketmanager als vertrauenswürdig eingestuft. In diesem Schritt importieren Sie den öffentlichen GPG-Schlüssel von Elasticsearch und fügen die Paketquellliste von Elastic hinzu, um Elasticsearch zu installieren.

Verwenden Sie zunächst cURL, das Befehlszeilentool zur Übertragung von Daten mit URLs, um den öffentlichen GPG-Schlüssel von Elasticsearch in APT zu importieren. Beachten Sie, dass wir die Argumente -fsSL nutzen, um alle Fortschrittsmeldungen und möglichen Fehler stumm zu schalten (ausgenommen Serverfehler) und cURL zuzulassen, um bei Weiterleitung eine Anfrage für einen neuen Ort vorzunehmen. Leiten Sie die Ausgabe des cURL-Befehls in das APT-Schlüsselprogramm weiter, das den öffentlichen GPG-Schlüssel zu APT hinzufügt.

  • curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

Fügen Sie als Nächstes die Elastic-Quellliste in das Verzeichnis sources.list.d ein, in dem APT nach neuen Quellen sucht:

  • echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

Aktualisieren Sie als Nächstes Ihre Paketlisten, damit APT die neue Elastic-Quelle liest:

  • sudo apt update

Installieren Sie dann Elasticsearch mit diesem Befehl:

  • sudo apt install elasticsearch

Elasticsearch ist nun installiert und bereit zur Konfiguration.

Schritt 2 — Konfigurieren von Elasticsearch

Um Elasticsearch zu konfigurieren, werden wir die Konfigurationsdateien bearbeiten. Elasticsearch verfügt über drei Konfigurationsdateien:

  • elasticsearch.yml zur Konfiguration von Elasticsearch (die Hauptkonfigurationsdatei)
  • jvm.options zur Konfiguration der Java Virtual Machine (JVM)-Einstellungen von Elasticsearch
  • log4j2.properties zur Konfiguration der Protokollierung von Elasticsearch

In diesem Tutorial interessieren wir uns für die Datei elasticsearch.yml, in der die meisten Konfigurationsoptionen gespeichert sind. Diese Datei befindet sich im Verzeichnis /etc/elasticsearch.

Verwenden Sie zur Bearbeitung der Konfigurationsdatei von Elasticsearch Ihren bevorzugten Texteditor. Wir verwenden hier nano:

  • sudo nano /etc/elasticsearch/elasticsearch.yml

Anmerkung: Die Konfigurationsdatei von Elasticsearch weist das YAML-Format auf. Das bedeutet, dass wir das Einrückungsformat beibehalten müssen. Achten Sie darauf, dass Sie beim Bearbeiten der Datei keine zusätzlichen Leerzeichen hinzufügen.

Die Datei elasticsearch.yml bietet Konfigurationsoptionen für Cluster, Knoten, Pfade, Arbeitsspeicher, Netzwerk, Suche und Gateway. Die meisten dieser Optionen sind in der Datei vorkonfiguriert, aber Sie können sie je nach Ihren Bedürfnissen ändern. Im Sinne unserer Demonstration einer Konfiguration mit einem Server werden wir nur die Einstellungen für den Netzwerkhost anpassen.

Elasticsearch lauscht an Port 9200 auf Verkehr von überall. Sie werden externen Zugriff auf Ihre Elasticsearch-Instanz einschränken wollen, um zu verhindern, dass externe Personen Ihre Daten lesen oder Ihren Elasticsearch-Cluster mit der REST-API herunterfahren. Um Zugriff zu beschränken und damit die Sicherheit zu erhöhen, suchen Sie nach der Zeile, die network.host angibt, heben Sie die Kommentierung auf und ersetzen den Wert durch localhost, sodass die Zeile wie folgt aussieht:

/etc/elasticsearch/elasticsearch.yml
. . .
# ---------------------------------- Network -----------------------------------
#
# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: localhost
. . .

Wir haben localhost angegeben, damit Elasticsearch an allen Schnittstellen und gebundenen IPs lauscht. Wenn Sie möchten, dass nur an einer bestimmten Schnittstelle gelauscht werden soll, können Sie deren IP-Adresse an Stelle von localhost angeben. Speichern und schließen Sie elasticsearch.yml. Wenn Sie nano verwenden, können Sie dazu Strg+X drücken, gefolgt von Y und dann ENTER.

Das sind die Mindesteinstellungen, mit denen Sie anfangen können, um Elasticsearch zu nutzen. Sie können Elasticsearch jetzt zum ersten Mal starten.

Starten Sie den Elasticsearch-Dienst mit systemctl. Geben Sie Elasticsearch einige Momente zum Starten. Andernfalls erhalten Sie Fehler, dass keine Verbindung hergestellt werden kann.

  • sudo systemctl start elasticsearch

Führen Sie als Nächstes den folgenden Befehl aus, damit Elasticsearch bei jedem Start Ihres Servers gestartet wird:

  • sudo systemctl enable elasticsearch

Nachdem Elasticsearch beim Starten nun aktiviert ist, fahren wir mit dem nächsten Schritt fort und besprechen das Thema Sicherheit.

Schritt 3 — Sichern von Elasticsearch

Standardmäßig kann Elasticsearch von jedem kontrolliert werden, der auf die HTTP-API zugreifen kann. Das ist nicht immer ein Sicherheitsrisiko, da Elasticsearch nur an der Loopback-Schnittstelle lauscht (d. h. 127.0.0.1), auf die nur lokal zugegriffen werden kann. So ist kein öffentlicher Zugriff möglich; solange alle Serverbenutzer vertrauenswürdig sind, ist Sicherheit also eventuell kein großes Problem.

Wenn Sie Remotezugriff auf die HTTP-API zulassen müssen, können Sie das Gefahrenpotenzial im Netzwerk mit der Standard-Firewall von Ubuntu (UFW) reduzieren. Diese Firewall sollte bereits aktiviert sein, wenn Sie die Schritte im vorbereitenden Tutorial Ersteinrichtung eines Servers mit Ubuntu 18.04 ausgeführt haben.

Wir konfigurieren nun die Firewall, um Zugriff auf den standardmäßigen HTTP-API-Port (TCP 9200) von Elasticsearch für den vertrauenswürdigen Remote-Host zu ermöglichen. Das ist in der Regel der Server, den Sie in einer Einzelserver-Einrichtung verwenden, wie zum Beispiel 198.51.100.0. Geben Sie, um Zugriff zuzulassen, den folgenden Befehl ein:

  • sudo ufw allow from 198.51.100.0 to any port 9200

Danach können Sie UFW mit folgendem Befehl aktivieren:

  • sudo ufw enable

Überprüfen Sie abschließend mit folgendem Befehl den Status von UFW:

  • sudo ufw status

Wenn Sie die Regeln richtig angegeben haben, sollte die Ausgabe wie folgt aussehen:

Output
Status: active To Action From -- ------ ---- 9200 ALLOW 198.51.100.0 22 ALLOW Anywhere 22 (v6) ALLOW Anywhere (v6)

Die UFW-Firewall sollte jetzt aktiviert und zum Schutz von Elasticsearch an Port 9200 eingerichtet ein.

Wenn Sie in zusätzlichen Schutz investieren möchten, bietet Elasticsearch das kommerzielle Shield-Plugin zum Kauf an.

Schritt 4 — Testen von Elasticsearch

Jetzt sollte Elasticsearch an Port 9200 ausgeführt werden. Sie können das mit cURL und einer GET-Anfrage testen.

  • curl -X GET 'http://localhost:9200'

Sie sollten die folgende Antwort erhalten:

Output
{ "node.name" : "My First Node", "cluster.name" : "mycluster1", "version" : { "number" : "2.3.1", "build_hash" : "bd980929010aef404e7cb0843e61d0665269fc39", "build_timestamp" : "2020-04-04T12:25:05Z", "build_snapshot" : false, "lucene_version" : "5.5.0" }, "tagline" : "You Know, for Search" }

Wenn Sie eine Antwort sehen, die der obigen ähnelt, funktioniert Elasticsearch richtig. Wenn nicht, stellen Sie sicher, dass Sie die Installationsanweisungen richtig befolgt und Elasticsearch ausreichend Zeit zum kompletten Starten gegeben haben.

Um eine gründlichere Prüfung von Elasticsearch vorzunehmen, führen Sie den folgenden Befehl aus:

  • curl -XGET 'http://localhost:9200/_nodes?pretty'

In der Ausgabe des obigen Befehls können Sie alle aktuellen Einstellungen für Knoten, Cluster, Anwendungspfade, Module und mehr überprüfen.

Schritt 5 — Verwenden von Elasticsearch

Um mit der Verwendung von Elasticsearch zu beginnen, fügen wir zuerst Daten hinzu. Elasticsearch nutzt eine RESTful-API, die auf die üblichen CRUD-Befehle reagiert: create, read, update und delete. Dazu verwenden wir erneut den Befehl cURL.

Sie können Ihren ersten Eintrag wie folgt hinzufügen:

  • curl -XPOST -H "Content-Type: application/json" 'http://localhost:9200/tutorial/helloworld/1' -d '{ "message": "Hello World!" }'

Sie sollten die folgende Antwort erhalten:

Output
{"_index":"tutorial","_type":"helloworld","_id":"1","_version":2,"result":"updated","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":1,"_primary_term":1}

Mit cURL haben wir eine HTTP POST-Anfrage an den Elasticsearch-Server gesendet. Der URI der Anfrage war /tutorial/helloworld/1 mit mehreren Parametern:

  • tutorial ist der Index der Daten in Elasticsearch.
  • helloworld ist der Typ.
  • 1 ist die ID unseres Eintrags unter dem obigen Index und Typ.

Sie können diesen ersten Eintrag mit einer HTTP-GET-Anfrage abrufen.

  • curl -X GET -H "Content-Type: application/json" 'http://localhost:9200/tutorial/helloworld/1' -d '{ "message": "Hello World!" }'

Die Ausgabe sollte wie folgt aussehen:

Output
{"_index":"tutorial","_type":"helloworld","_id":"1","_version":1,"found":true,"_source":{ "message": "Hello, World!" }}

Um einen bestehenden Eintrag zu ändern, können Sie eine HTTP PUT-Anfrage verwenden.

  • curl -X PUT -H "Content-Type: application/json" 'localhost:9200/tutorial/helloworld/1?pretty' -d '
  • {
  • "message": "Hello, People!"
  • }'

Elasticsearch sollte die erfolgreiche Änderung wie folgt bestätigen:

Output
{ "_index" : "tutorial", "_type" : "helloworld", "_id" : "1", "_version" : 2, "_shards" : { "total" : 2, "successful" : 1, "failed" : 0 }, "created" : false }

Im obigen Beispiel haben wir die Meldung des ersten Eintrags in „Hello, People!“ geändert. Dabei wurde die Versionsnummer automatisch auf 2 erhöht.

Vielleicht ist Ihnen in der obigen Anfrage das zusätzliche Argument pretty aufgefallen. Es erlaubt ein für Menschen lesbares Format, sodass Sie jedes Datenfeld in eine neue Zeile schreiben können. Sie können Ihre Ergebnisse beim Abruf von Daten auch „verschönern“, um eine besser lesbare Ausgabe zu erhalten, indem Sie den folgenden Befehl eingeben:

  • curl -X GET -H "Content-Type: application/json" 'http://localhost:9200/tutorial/helloworld/1?pretty'

Nun wird die Antwort so formatiert, dass ein Mensch sie analysieren kann:

Output
{ "_index" : "tutorial", "_type" : "helloworld", "_id" : "1", "_version" : 2, "found" : true, "_source" : { "message" : "Hello, People!" } }

Wir haben jetzt Daten in Elasticsearch hinzugefügt und abgefragt. Um mehr über die anderen Operationen zu erfahren, konsultieren Sie bitte die API-Dokumentation.

Zusammenfassung

Sie haben Elasticsearch jetzt installiert, konfiguriert und erstmals verwendet. Seit der ersten Version von Elasticsearch hat Elastic drei zusätzliche Tools (Logstash, Kabana und Beats) entwickelt,die im Rahmen des Elastic Stack zusammen mit Elasticsearch eingesetzt werden können. Bei gemeinsamer Nutzung können Sie mit diesen Tools Protokolle, die von beliebigen Quellen in beliebigen Formaten erzeugt wurden, durchsuchen, analysieren und visualisieren, was in der Praxis als zentralisierte Protokollierung bekannt ist. Informationen zu den ersten Schritten mit dem Elastic Stack unter Ubuntu 18.04 finden Sie in unserem Leitfaden Installieren von Elasticsearch, Logstash und Kibana (Elastic Stack) unter Ubuntu 18.04.

0 Comments

Creative Commons License