Konfiguration der Docker-Compose-Datei
Nachdem alle notwendigen Konfigurationen für Filebeat, Logstash und die Flask-Anwendung vorgenommen wurden, 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 ausgeführt.
Eine einfache docker-compose.yml
-Datei sieht folgendermaßen aus:
docker-compose.yml
Erstellen wir nun Schritt für Schritt eine vollständige Datei und erläutern dabei jeden Container.
Flask-Anwendung
Dies ist Ihre Hauptanwendung, die Protokolle erzeugt.
docker-compose.yml
Dieser Block weist Docker an, den Container aus dem aktuellen Verzeichnis (wo sich Ihre Dockerfile befindet) zu bauen.
Der Container wird flask-app
genannt.
Die Zeile volumes
verbindet den lokalen Ordner ./logs
mit /logs
im Container. Dadurch werden alle von der Anwendung erstellten Protokolle sowohl im Container als auch auf Ihrem Computer gespeichert.
Die Anwendung läuft im Container auf Port 5000, aber wir ordnen ihn Port 5050 auf Ihrem Rechner zu, sodass Sie über Ihren Browser unter http://localhost:5050
darauf zugreifen 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 root
-Benutzer, 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-node
gibt an, dass ein Single-Node-Cluster betrieben wird (ausreichend für lokale Tests);xpack.security.enabled=false
deaktiviert die Sicherheit, sodass keine Benutzernamen und Passwörter erforderlich sind;ES_JAVA_OPTS
begrenzt die Java-Speichernutzung.
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 die Erstellung 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 diese 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 bleibt, ist das System auszuführen und zu testen, was im nächsten Kapitel behandelt wird.
1. Was ist der Hauptzweck von Docker Compose in diesem Setup?
2. Welcher Dienst ist für das Sammeln von Protokolldateien aus der Flask-Anwendung und das Senden an Logstash verantwortlich?
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
Awesome!
Completion rate improved to 3.7
Konfiguration der Docker-Compose-Datei
Swipe um das Menü anzuzeigen
Nachdem alle notwendigen Konfigurationen für Filebeat, Logstash und die Flask-Anwendung vorgenommen wurden, 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 ausgeführt.
Eine einfache docker-compose.yml
-Datei sieht folgendermaßen aus:
docker-compose.yml
Erstellen wir nun Schritt für Schritt eine vollständige Datei und erläutern dabei jeden Container.
Flask-Anwendung
Dies ist Ihre Hauptanwendung, die Protokolle erzeugt.
docker-compose.yml
Dieser Block weist Docker an, den Container aus dem aktuellen Verzeichnis (wo sich Ihre Dockerfile befindet) zu bauen.
Der Container wird flask-app
genannt.
Die Zeile volumes
verbindet den lokalen Ordner ./logs
mit /logs
im Container. Dadurch werden alle von der Anwendung erstellten Protokolle sowohl im Container als auch auf Ihrem Computer gespeichert.
Die Anwendung läuft im Container auf Port 5000, aber wir ordnen ihn Port 5050 auf Ihrem Rechner zu, sodass Sie über Ihren Browser unter http://localhost:5050
darauf zugreifen 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 root
-Benutzer, 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-node
gibt an, dass ein Single-Node-Cluster betrieben wird (ausreichend für lokale Tests);xpack.security.enabled=false
deaktiviert die Sicherheit, sodass keine Benutzernamen und Passwörter erforderlich sind;ES_JAVA_OPTS
begrenzt die Java-Speichernutzung.
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 die Erstellung 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 diese 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 bleibt, ist das System auszuführen und zu testen, was im nächsten Kapitel behandelt wird.
1. Was ist der Hauptzweck von Docker Compose in diesem Setup?
2. Welcher Dienst ist für das Sammeln von Protokolldateien aus der Flask-Anwendung und das Senden an Logstash verantwortlich?
Danke für Ihr Feedback!