Konfiguration der Docker-Compose-Datei
Nachdem alle notwendigen Konfigurationen vorgenommen wurden — für Filebeat, Logstash und die Flask-Anwendung — ist es an der Zeit, diese zusammenzuführen und als ein einziges System auszuführen. Dafür verwenden wir Docker Compose.
Docker Compose ist ein Tool, mit dem alle benötigten Container in einer einzigen YAML-Datei definiert und mit einem Befehl gestartet werden können.
Anstatt für jeden Dienst einen separaten docker run-Befehl zu schreiben, werden deren Konfigurationen in docker-compose.yml hinterlegt und alles gemeinsam gestartet.
Eine einfache docker-compose.yml-Datei sieht folgendermaßen aus:
docker-compose.yml
Erstellen wir nun schrittweise eine vollständige Datei und erläutern dabei jeden Container.
Flask-Anwendung
Dies ist Ihre Hauptanwendung, die Protokolle generiert.
docker-compose.yml
Dieser Block weist Docker an, den Container aus dem aktuellen Verzeichnis (wo sich Ihre Dockerfile befindet) zu bauen.
Der Container erhält den Namen flask-app.
Die Zeile volumes verbindet den lokalen Ordner ./logs mit /logs im Container. Dadurch werden alle von der Anwendung erzeugten Protokolle sowohl im Container als auch auf Ihrem Computer gespeichert.
Die Anwendung läuft im Container auf Port 5000, wird jedoch auf Port 5050 Ihres Rechners abgebildet, sodass Sie sie im Browser unter http://localhost:5050 aufrufen können.
Filebeat
Filebeat fungiert als Agent, der Protokolldateien überwacht und neue Einträge an Logstash sendet.
docker-compose.yml
Filebeat wird aus dem offiziellen 8.15.0-Image ausgeführt.
Es läuft als Benutzer root, damit es Berechtigungen zum Lesen von Logdateien hat.
Der Ordner ./logs wird im Nur-Lese-Modus sowie die Konfigurationsdatei filebeat.yml eingebunden. Dies gibt Filebeat an, welche Logs überwacht werden sollen und wohin sie gesendet werden.
depends_on stellt sicher, dass Filebeat erst startet, nachdem die Anwendung und Logstash laufen.
Logstash
Logstash empfängt Logs von Filebeat, verarbeitet sie (zum Beispiel durch Parsen von JSON) und leitet sie an Elasticsearch weiter.
docker-compose.yml
Dieser Container verwendet das offizielle Logstash-Image.
Die Konfigurationsdatei logstash.conf wird eingebunden, die Logstash anweist, wie eingehende Logs verarbeitet werden sollen.
Der Container startet erst, nachdem Elasticsearch läuft, da ein Ziel für die verarbeiteten Logs benötigt wird.
Port 5044 wird freigegeben, damit Filebeat Daten an Logstash senden kann.
Elasticsearch
Elasticsearch speichert Logs als Dokumente und ermöglicht eine schnelle Suche darin.
docker-compose.yml
Wir verwenden das offizielle Elasticsearch-Image in der Version 8.15.0.
discovery.type=single-nodegibt an, dass ein Single-Node-Cluster betrieben wird (ausreichend für lokale Tests);xpack.security.enabled=falsedeaktiviert die Sicherheit, sodass keine Benutzernamen und Passwörter erforderlich sind;ES_JAVA_OPTSbegrenzt die Speichernutzung des Java-Prozesses.
Der Dienst ist über Port 9200 unter http://localhost:9200 erreichbar.
Kibana
Kibana ist eine Weboberfläche für Elasticsearch. Sie unterstützt die Visualisierung von Logs und das Erstellen von Dashboards.
docker-compose.yml
Wir verwenden das offizielle Kibana-Image.
Port 5601 wird freigegeben, sodass Sie über Ihren Browser unter http://localhost:5601 auf Kibana zugreifen können.
ELASTICSEARCH_HOSTS verweist Kibana auf unseren Elasticsearch-Container, damit Daten abgerufen und angezeigt werden können.
Finale docker-compose.yml
Hier ist die vollständige Docker Compose-Datei mit allen Diensten in der richtigen Reihenfolge verbunden:
docker-compose.yml
Diese docker-compose.yml startet alle Dienste in der richtigen Reihenfolge. Die Flask-Anwendung erzeugt Protokolle, Filebeat sammelt sie und sendet sie an Logstash, Logstash verarbeitet die Protokolle und leitet sie an Elasticsearch weiter, und Kibana stellt eine Weboberfläche zur Anzeige und Analyse der Daten bereit.
Alles, was noch zu tun bleibt, ist das System auszuführen und zu testen. Dies wird im nächsten Kapitel behandelt.
1. Was ist der Hauptzweck von Docker Compose in diesem Setup?
2. Welcher Dienst ist dafür verantwortlich, Protokolldateien aus der Flask-Anwendung zu sammeln und an Logstash zu senden?
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Großartig!
Completion Rate verbessert auf 3.7
Konfiguration der Docker-Compose-Datei
Swipe um das Menü anzuzeigen
Nachdem alle notwendigen Konfigurationen vorgenommen wurden — für Filebeat, Logstash und die Flask-Anwendung — ist es an der Zeit, diese zusammenzuführen und als ein einziges System auszuführen. Dafür verwenden wir Docker Compose.
Docker Compose ist ein Tool, mit dem alle benötigten Container in einer einzigen YAML-Datei definiert und mit einem Befehl gestartet werden können.
Anstatt für jeden Dienst einen separaten docker run-Befehl zu schreiben, werden deren Konfigurationen in docker-compose.yml hinterlegt und alles gemeinsam gestartet.
Eine einfache docker-compose.yml-Datei sieht folgendermaßen aus:
docker-compose.yml
Erstellen wir nun schrittweise eine vollständige Datei und erläutern dabei jeden Container.
Flask-Anwendung
Dies ist Ihre Hauptanwendung, die Protokolle generiert.
docker-compose.yml
Dieser Block weist Docker an, den Container aus dem aktuellen Verzeichnis (wo sich Ihre Dockerfile befindet) zu bauen.
Der Container erhält den Namen flask-app.
Die Zeile volumes verbindet den lokalen Ordner ./logs mit /logs im Container. Dadurch werden alle von der Anwendung erzeugten Protokolle sowohl im Container als auch auf Ihrem Computer gespeichert.
Die Anwendung läuft im Container auf Port 5000, wird jedoch auf Port 5050 Ihres Rechners abgebildet, sodass Sie sie im Browser unter http://localhost:5050 aufrufen können.
Filebeat
Filebeat fungiert als Agent, der Protokolldateien überwacht und neue Einträge an Logstash sendet.
docker-compose.yml
Filebeat wird aus dem offiziellen 8.15.0-Image ausgeführt.
Es läuft als Benutzer root, damit es Berechtigungen zum Lesen von Logdateien hat.
Der Ordner ./logs wird im Nur-Lese-Modus sowie die Konfigurationsdatei filebeat.yml eingebunden. Dies gibt Filebeat an, welche Logs überwacht werden sollen und wohin sie gesendet werden.
depends_on stellt sicher, dass Filebeat erst startet, nachdem die Anwendung und Logstash laufen.
Logstash
Logstash empfängt Logs von Filebeat, verarbeitet sie (zum Beispiel durch Parsen von JSON) und leitet sie an Elasticsearch weiter.
docker-compose.yml
Dieser Container verwendet das offizielle Logstash-Image.
Die Konfigurationsdatei logstash.conf wird eingebunden, die Logstash anweist, wie eingehende Logs verarbeitet werden sollen.
Der Container startet erst, nachdem Elasticsearch läuft, da ein Ziel für die verarbeiteten Logs benötigt wird.
Port 5044 wird freigegeben, damit Filebeat Daten an Logstash senden kann.
Elasticsearch
Elasticsearch speichert Logs als Dokumente und ermöglicht eine schnelle Suche darin.
docker-compose.yml
Wir verwenden das offizielle Elasticsearch-Image in der Version 8.15.0.
discovery.type=single-nodegibt an, dass ein Single-Node-Cluster betrieben wird (ausreichend für lokale Tests);xpack.security.enabled=falsedeaktiviert die Sicherheit, sodass keine Benutzernamen und Passwörter erforderlich sind;ES_JAVA_OPTSbegrenzt die Speichernutzung des Java-Prozesses.
Der Dienst ist über Port 9200 unter http://localhost:9200 erreichbar.
Kibana
Kibana ist eine Weboberfläche für Elasticsearch. Sie unterstützt die Visualisierung von Logs und das Erstellen von Dashboards.
docker-compose.yml
Wir verwenden das offizielle Kibana-Image.
Port 5601 wird freigegeben, sodass Sie über Ihren Browser unter http://localhost:5601 auf Kibana zugreifen können.
ELASTICSEARCH_HOSTS verweist Kibana auf unseren Elasticsearch-Container, damit Daten abgerufen und angezeigt werden können.
Finale docker-compose.yml
Hier ist die vollständige Docker Compose-Datei mit allen Diensten in der richtigen Reihenfolge verbunden:
docker-compose.yml
Diese docker-compose.yml startet alle Dienste in der richtigen Reihenfolge. Die Flask-Anwendung erzeugt Protokolle, Filebeat sammelt sie und sendet sie an Logstash, Logstash verarbeitet die Protokolle und leitet sie an Elasticsearch weiter, und Kibana stellt eine Weboberfläche zur Anzeige und Analyse der Daten bereit.
Alles, was noch zu tun bleibt, ist das System auszuführen und zu testen. Dies wird im nächsten Kapitel behandelt.
1. Was ist der Hauptzweck von Docker Compose in diesem Setup?
2. Welcher Dienst ist dafür verantwortlich, Protokolldateien aus der Flask-Anwendung zu sammeln und an Logstash zu senden?
Danke für Ihr Feedback!