Ein zentraler Logging-Stack wie ELK (Elasticsearch, Logstash, Kibana) oder OpenSearch ermöglicht die Erfassung, Aggregation und Visualisierung von Logs aus unterschiedlichen Systemen und Containern. Mit Docker Compose lässt sich dieser Stack einfach auf Linux aufsetzen, inklusive persistenter Volumes, Netzwerke und konfigurierbarer Ports. Dieses Tutorial zeigt praxisnah, wie ein stabiler, updatefähiger Logging-Stack aufgebaut wird.
Grundkomponenten eines ELK/Opensearch-Stacks
Ein typischer Logging-Stack besteht aus mehreren Diensten:
- Elasticsearch / OpenSearch: Speicherung und Indexierung von Logs
- Logstash: Verarbeitung, Parsing und Weiterleitung von Logs
- Kibana / OpenSearch Dashboards: Visualisierung und Suche der Logs
- Volumes: Persistente Speicherung von Daten, Konfigurationen und Indizes
- Netzwerke: Interne Kommunikation zwischen den Services
Volumes für Persistenz
Persistente Volumes sichern Indizes, Konfigurationen und Dashboards, sodass sie auch nach Neustarts der Container erhalten bleiben.
volumes:
elasticsearch_data:
logstash_config:
kibana_data:
elasticsearch_datafür Indexdatenlogstash_configfür Pipeline-Konfigurationenkibana_datafür Dashboards und User-Einstellungen- Persistente Volumes bleiben bestehen, selbst wenn Container neu erstellt oder aktualisiert werden
Netzwerke für interne Kommunikation
Ein separates Netzwerk ermöglicht sichere Kommunikation zwischen Elasticsearch, Logstash und Kibana.
networks:
logging_net:
- Alle Services kommunizieren über
logging_net - Externe Zugriffe erfolgen nur über gemappte Ports für Kibana oder OpenSearch Dashboards
Beispiel: docker-compose.yml für ELK
version: '3.8'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.10.0
container_name: elasticsearch
environment:
- discovery.type=single-node
- ES_JAVA_OPTS=-Xms512m -Xmx512m
volumes:
- elasticsearch_data:/usr/share/elasticsearch/data
ports:
- "9200:9200"
- "9300:9300"
networks:
- logging_net
logstash:
image: docker.elastic.co/logstash/logstash:8.10.0
container_name: logstash
volumes:
- logstash_config:/usr/share/logstash/pipeline
ports:
- "5000:5000"
networks:
- logging_net
depends_on:
- elasticsearch
kibana:
image: docker.elastic.co/kibana/kibana:8.10.0
container_name: kibana
ports:
- "5601:5601"
networks:
- logging_net
depends_on:
- elasticsearch
Beispiel: docker-compose.yml für OpenSearch
version: '3.8'
services:
opensearch:
image: opensearchproject/opensearch:2.10.1
container_name: opensearch
environment:
- discovery.type=single-node
- bootstrap.memory_lock=true
- "OPENSEARCH_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- elasticsearch_data:/usr/share/opensearch/data
ports:
- "9200:9200"
- "9600:9600"
networks:
- logging_net
opensearch_dashboards:
image: opensearchproject/opensearch-dashboards:2.10.1
container_name: opensearch_dashboards
ports:
- "5601:5601"
networks:
- logging_net
depends_on:
- opensearch
logstash:
image: docker.elastic.co/logstash/logstash:8.10.0
container_name: logstash
volumes:
- logstash_config:/usr/share/logstash/pipeline
ports:
- "5000:5000"
networks:
- logging_net
depends_on:
- opensearch
Erklärungen zur Compose-Datei
- Elasticsearch / OpenSearch: Container für Speicherung und Indexierung, persistente Speicherung über Volume
- Logstash: Pipeline-Container für Log-Verarbeitung, Konfiguration über Volume
- Kibana / OpenSearch Dashboards: Visualisierung der Logs, Port für Webinterface
- Volumes: Persistente Speicherung der Daten, Dashboards und Pipeline-Konfigurationen
- Netzwerke:
logging_netverbindet alle Services intern - depends_on: Sicherstellung der Startreihenfolge
Start und Verwaltung des Logging-Stacks
Starten Sie den Stack mit:
docker-compose up -d
Zum Stoppen und Entfernen aller Container, Netzwerke und Volumes:
docker-compose down -v
Best Practices
- Volumes für persistente Daten verwenden
- Netzwerke für interne Kommunikation definieren
- Versionierte Images nutzen für einfache Rollbacks
- Backups für Indizes, Pipelines und Dashboards einplanen
- Monitoring und Alerts in Kibana / OpenSearch Dashboards einrichten
- Ports nur nach Bedarf öffnen, optional Reverse Proxy für sicheren Zugriff
- Regelmäßige Updates der Container durchführen
- Ressourcenlimits setzen (RAM, CPU) für Elasticsearch/OpenSearch
Praxisbeispiele
ELK-Stack starten
docker-compose up -d
OpenSearch-Stack starten
docker-compose up -d
Logs überwachen
docker-compose logs -f elasticsearch
docker-compose logs -f logstash
docker-compose logs -f kibana
Rollback auf vorherige Version
docker service update --image docker.elastic.co/elasticsearch/elasticsearch:8.9.0 elasticsearch_service
docker service update --image opensearchproject/opensearch:2.9.0 opensearch_service
Updatefähigkeit
Versionierte Docker Images ermöglichen einfache Updates für Elasticsearch, Logstash und Kibana bzw. OpenSearch. Persistente Volumes sichern Indizes, Pipelines und Dashboards, sodass diese nach Updates erhalten bleiben.
docker-compose pull
docker-compose up -d
Zusammenfassung
Mit Docker Compose lässt sich ein ELK- oder OpenSearch-Stack auf Linux schnell, sicher und updatefähig betreiben. Persistente Volumes, interne Netzwerke und Best Practices wie Backups, Monitoring und Alerts sorgen für einen stabilen und wartbaren Betrieb. Versionierte Images erleichtern Updates und Rollbacks, wodurch ein zuverlässiges zentrales Logging gewährleistet wird.
Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3
Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.
Meine Leistungen umfassen:
-
Professionelle Konfiguration von Routern und Switches
-
Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen
-
Erstellung von Topologien und Simulationen in Cisco Packet Tracer
-
Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG
-
Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible
-
Erstellung von Skripten für wiederkehrende Netzwerkaufgaben
-
Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege
-
Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting
Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

