Erste Schritte mit ELK in Python

Natalia Kraszewska
Natalia Kraszewska
May 7, 2025
11 min read
Loading the Elevenlabs Text to Speech AudioNative Player...

Einführung

Ein wesentlicher Bestandteil der Softwareentwicklung ist das Empfangen und Analysieren der durch Code erzeugten Informationen. Manchmal ist es ein einfaches Protokoll wie „Anwendung läuft“ oder „Funktion gestartet“. Wir können jedoch auch Informationen über kritische Fehler erhalten, die die Anwendung beenden.

Um solche Nachrichten generieren, sammeln und analysieren zu können, müssen Sie der von Ihnen entwickelten Anwendung ein Logging hinzufügen.

Meistens werden Protokolle in einer Textdatei gespeichert, die leicht analysiert werden kann. Diese Art von Lösung funktioniert am besten, wenn sich eine Anwendung in der Entwicklungsphase befindet. Die Anwendung hat keine Benutzer, daher ist die Anzahl der Protokolle nicht so groß. Das Speichern aller Protokolle in einer Textdatei ermöglicht eine einfache Analyse.

Die Situation ist völlig anders, wenn unsere Anwendung Benutzer erreicht. Es mag Tausende von ihnen geben (und das wünsche ich uns). Dann ist das Speichern von Protokollen in einer Textdatei nicht die beste Lösung. Unsere Protokolle enthalten wichtige Informationen wie die Anzahl der Benutzer pro Sekunde, die Anzahl der Fehler, die Betriebsdauer der Funktion usw. Zum Glück hilft das ELK-Toolkit, also Elasticseach, Logstash und Kibana, eines der beliebtesten Log-Management-Systeme. In diesem Artikel werde ich vorstellen, wofür ELK verwendet werden kann, welche Vorteile die Verwendung dieses Toolkits hat, woraus es besteht und wie Sie ELK in Ihrem Projekt implementieren können.

Was ist ELK

ELK ist eine Reihe von Tools, mit denen Sie Protokolle speichern, analysieren und visualisieren können. Wenn wir ELK ordnungsgemäß mit unserer Anwendung verbinden, können wir die von Benutzern stammenden Logs streamen. Dadurch haben wir die volle Kontrolle darüber, was gerade in unserer Anwendung passiert, wie viele Benutzer sie gerade verwenden, wie lange sie auf die Ergebnisse warten, und im Falle einer zu langen Reaktionszeit können wir die erforderlichen Rechenressourcen erhöhen.

Um besser zu verstehen, wie ELK funktioniert, wollen wir herausfinden, was genau die Abkürzung ELK bedeutet:

Elasticsearch - Es ist eine Open-Source-Such- und Analysemaschine, die auf Apache Lucene basiert. Es ermöglicht Ihnen, schnell große Mengen an Textdaten zu speichern und zu analysieren.

Logstash - Es ist eine kostenlose Open-Source-Software, die Daten aus verschiedenen Quellen sammelt, transformiert und versendet.

Kibana - Es ist eine kostenlose Anwendung, die Datenvisualisierung und Exploration von Daten ermöglicht. Kibana bietet Funktionen wie verschiedene Arten von Diagrammen, mit denen Daten auf bequeme und leicht verständliche Weise dargestellt werden können.

Dummy-Python-Projekt mit Flask

Lassen Sie uns zunächst ein einfaches Python-Projekt mit Flask schreiben, das zwei Funktionen hat. Die erste Funktion ist sag_hallo was ein Argument hat „Name“ und gibt eine Grußnachricht zurück. Die zweite Funktion ist app_info was einfach Informationen über den Bewerbungsstatus zurückgibt.app.py

Um die Anwendung auszuführen, können Sie diesen Befehl in Ihre Konsole schreiben.

Gehen wir zum Webbrowser, um zu überprüfen, ob die Anwendung ordnungsgemäß ausgeführt wird.

Willst du mehr wissen? Verbessern Sie Ihre Python-Codequalität - klicken Sie hier.

ELK mit Docker ausführen

Meiner Meinung nach ist der beste Ansatz, um das ELK-System einzurichten, dies mit Docker zu tun. Sie können einfach fertige Docker-Images aus dem Dockerhub (https://hub.docker.com) verwenden und sie mit der Docker-Compose-Datei ausführen. Zunächst müssen wir Konfigurationsdateien vorbereiten. Im folgenden Beispiel möchte ich die grundlegende ELK-Konfiguration zeigen, mit der wir Protokolle senden, speichern und visualisieren können. Natürlich gibt es noch viel mehr Einstellungen, die das ELK-System verbessern könnten. Weitere Informationen finden Sie in der offiziellen ELK-Dokumentation (https://www.elastic.co/guide/index.html).

elasticsearch.yml

In der Datei elasticsearch.yml legen wir den Clusternamen, den Netzwerkhost, den Discovery-Typ und den Typ der Xpack-Lizenz fest und deaktivieren beispielsweise die Xpack-Sicherheit.

kibana.yml

Die Datei kibana.yml besteht aus Servername, Serverhost und Elasticsearch-Host.

logstash.yml

In der Datei logstash.yml gibt es nur Informationen über den HTTP-Host.

logstash.conf

Die Datei logstash.conf enthält Informationen darüber, wie Logs von Logstash empfangen werden (Eingabe) und wohin der Logstash sie sendet (Ausgabe). In diesem Fall werden die Logs per TCP über Port 5000 an Logstash gesendet und Logstash sendet sie über den Elasticsearch:9200-Host an den Elasticsearch-Host.

Wenn alle Konfigurationsdateien vorbereitet sind, ist es höchste Zeit, eine docker-compose.yml zu schreiben, die alle Komponenten des ELK-Systems ausführt. Allerdings müssen wir vorher ein paar Dinge besprechen:

  1. Kommunikation - Elasticsearch, Logstash und Kibana benötigen ein Netzwerk, um miteinander zu kommunizieren. Wir müssen sicherstellen, dass ein Brückennetzwerk genau wie eine Brücke zwischen diesen Komponenten funktioniert.
  2. Bilder und ELK-Version - In diesem Beispiel verwenden wir die ELK-Version 7.14.4.
  3. Benötigte Anschlüsse:
  • Elasticsearch verwendet Port 9200 für Anfragen und Port 9300 für die Kommunikation zwischen Knoten im Cluster.
  • Logstash benötigt Port 5000 für die TCP-Kommunikation und Port 9600 für die Web-API-Kommunikation.
  • Um über eine Webseite auf Kibana zuzugreifen, verwenden wir Port 5601.

Lassen Sie uns all diese Informationen in der Docker-Compose-Datei sammeln.

docker-compose.yml

Um die Richtigkeit der Datei docker-compose.yml zu überprüfen, müssen wir sie mit dem folgenden Befehl ausführen:

Und nach ein paar Sekunden gehen wir zur Webseite 127,0.0. 1:5601 um zu überprüfen, ob das ELK-System funktioniert.

Fügen Sie der Python-App Protokollierung hinzu

Wenn das ELK-System korrekt funktioniert, müssen wir dem Skript app.py einige Logs hinzufügen. Denken Sie daran, dass wir diese Logs an den Logstash senden wollen, also wird AsynchronousLogstashHandler benötigt. Schauen wir uns den folgenden Codeausschnitt an, um herauszufinden, wie die Protokollierung richtig konfiguriert wird.

app.py

Wenn die Protokollierung hinzugefügt wird, führen Sie app.py aus und erstellen Sie einige Protokolle, indem Sie 127,0.0. 1:5001, 127.0.0. 1:5001 /Hallo/Natalia und 127.0.0. 1:5001 /Hallo/N Webseiten.

Logs-Stream im Elastic anzeigen

Gehe zum Zuhause Menü und Auswahl Beobachtbarkeit -> Protokolle

Klicken Sie Einstellungen

In der Indizes Abschnitt hinzufügen log* in der Indizes protokollieren Kiste.

Klicken Sie Bewerben und komm zurück zum Beobachtbarkeit -> Protokolle Panel.

Und voilà! Logs von app.py werden hinzugefügt. Ab sofort wird jedes von app.py erzeugte Protokoll an das ELK-System gestreamt und ist im Stream-Bereich sichtbar.

Fazit

Mit der Protokollierung können Sie den Status einer Anwendung kontrollieren, was besonders dann sehr wichtig ist, wenn sie von Benutzern verwendet wird. Mit dem ELK-Toolkit können Sie auf einfache Weise Protokolle sammeln und analysieren. Wie in dem Artikel bewiesen, ist die Konfiguration des ELK-Systems mit Docker nicht so schwierig. Ich hoffe, ich habe Sie ermutigt, das ELK-System in Ihren Anwendungen zu verwenden.

Weitere Informationen zu Big Data finden Sie in unserem Blog:

Share this post
DevOps
Natalia Kraszewska
MORE POSTS BY THIS AUTHOR
Natalia Kraszewska

Curious how we can support your business?

TALK TO US