👁️
pierreinside
  • Introduction
  • Workbench
    • VirtualBox
    • Linux
      • Linux-Paketverwaltung
      • Linux Initialisierung
      • Ubuntu 14.10 LTS
      • Ubuntu 16.04 LTS
      • Ubuntu 18.04 LTS
      • Ubuntu 20.04 LTS
      • Ubuntu - Netzwerk
    • Konsole
      • ssh
      • zsh
      • cygwin
      • Babun
      • terminator
      • Terminal Multiplexer
      • Linux Tools
    • awesome
    • Entwicklungsumgebungen
      • Texteditors
      • Visual Studio Code
      • IntelliJ - IDEA
  • Softwareentwicklungsprozess
    • Schätzungen
    • Eventstorming
    • OKR
  • Architektur
    • Uncle Bob
    • Microservices
    • NoSQL
      • ElasticSearch
    • Hystrix
    • Reactive Programming
    • AngularJS
    • Service Mesh
  • Networking
    • Dependency Injection
  • Programming
    • Java Core/EE
      • Java 8
      • Java Annotationen
      • Bean Validation
      • Enterprise Java Beans Specification
      • Dependency Injection
    • JRebel
    • Webservices
      • HTTP
      • REST
      • Spring MVC REST
      • Swagger
      • Postman
    • Spring Ecosystem
      • Spring Core
      • Spring Boot
        • Programming
        • Production Ready
        • Testing
      • Spring Cloud
      • Spring Cloud Config
      • Spring MVC
      • Spring Data
      • Spring Petclinic
    • NodeJS
    • UI-Technologie
      • Thymeleaf
      • ionic
      • Web Fonts
      • Jinja Templates
      • Twitter Bootstrap
    • Python Ecosystem
      • Python Libraries
      • Python Testing
      • Python Best-Practices
      • Python Snippets
      • Python Selenium
      • Kivy UI
      • FastAPI
      • Typer CLI
      • Django
    • Groovy
    • Persistenz
      • Transactions
        • Java TX
        • JPA TX
      • TX Handling
      • JPA
        • Eclipse Link
      • MySQL
        • MySQL Performance
        • Docker MySQL
      • Hazelcast
    • Glassfish
    • YAML
    • Angular
    • Camel
    • Zeichenkodierung
    • Kinder lernen Programmieren
  • Testen
    • Easymock
    • Mockito
  • Performance & Scalability
    • Java Performance
      • Heapdump Analysis
    • Java Concurrency
    • Instana
  • Sicherheit
    • Authentifizierung
      • OpenID Connect
      • Web-Authentication API
    • Authorisierung
      • OAuth
      • SAML
    • Spring Security
    • Zertifikate
    • Kali Linux
    • VPN
    • Zero-Trust-Networks
  • Build und Deployment
    • Maven
    • Bamboo
    • Jenkins
      • Jenkins Pipelines
      • Jenkins Pipelines Tips und Tricks
      • Jenkins-configuration-as-Code
      • Jenkins IDE
    • Travis CI
    • Shellprogrammierung
      • jq - JSON Parsing
    • Konfiguration Management
    • Vagrant
      • Vagrant-Ansible-Integration
      • Vagrant Box bauen
    • Ansible
      • Getting Started
      • Ansible Details
    • Saltstack
    • LinuxKit
    • Container
      • Docker
        • Docker Getting Started
        • Debugging Docker
        • Docker Build
        • Docker Registry
        • Docker run
          • docker run
          • docker network
        • Docker Compose
        • docker machine
        • Docker@Windows
        • Docker Host
        • Docker Scaling
        • Docker Ressources
        • Docker Logging
        • windowsContainer
      • Cloud Deployment Provider
        • AWS
          • Anwendungsdeployment
          • Workload
          • Permissions
          • Netzwerke
          • AWS CLI
            • aws-vault
          • RDS
          • Static Website Hosting
          • EKS - Elastic Kubernetes Service
          • S3
        • Google Cloud Platform
      • Docker Orchestrierung
        • CoreOS
        • Kubernetes
          • microK8s
          • minikube
          • autoscaler
          • Docker
          • k9s
        • Nomad
    • PHP
  • Operations
    • Proxy
      • NGINX
    • DNS
    • Logging
      • Graylog
      • Fluentd
    • Monitoring
      • Grafana
    • Infrastructure-as-Code
      • Terraform
        • AWS-Provider
        • GitHub-Provider
      • Packer
    • Deployment
      • Vault
      • Consul
        • Consul Template
      • Fabio
  • Rechtliches
    • Software-Lizenzen
  • Git Ecosystem
    • Git
      • Git Lifecycle Hooks
    • GitHub
      • GitHub Organizations
    • GitHub Actions
    • GitHub Pages
    • GitHub CLI
    • GitHub Copilot
    • GitHub-AWS OIDC
    • GitBook
    • GitLab
    • Bitbucket/Stash
  • Publishing
    • WordPress
    • Markdown
    • Static Site Generators
      • Hugo
      • Jekyll
    • Tiddly Wiki
    • Leanpub
    • Animationsfilme
  • Storage
    • Synology 2012
    • Synology 2021
  • Collaboration
    • Übersicht
    • Microsoft Teams
  • Konferenzen
    • Velocity Berlin 2019
  • IT mit Kindern
    • Projekt Sportstracker
    • Scratch
    • Pico Spielekonsole
  • Schule
    • Mathematik
  • Misc
    • Foto/Video
      • Foto/Video Sammlung bis 2023
        • Handbrake
        • Onedrive
      • Foto/Video Sammlung ab 2024
      • Gopro
      • Panasonic FZ1000 ii
        • als Webcam
      • AV Receiver
      • Videos erstellen
        • OBS Studio
        • Touch Portal
        • Game-Streaming
      • Kameratasche
      • Kamera 2020
    • Handy
      • 2016
      • 2018
      • 2019
      • 2021
      • 2022
    • Computer
      • Laptop
        • 2018
        • Chromebook
      • Monitor
        • 4k
      • Software
        • Command Line Interface
        • Google API
        • Plant UML
        • Chromium
        • Passwort-Manager
        • GPG
      • Dell CNF 2665 Farbdrucker
      • Dockingstation
      • Gaming PC 2021
      • Mobiles Büro
      • Mobiles Internet
      • Mobiler Router
    • Beamer Benq W1000+
    • Spielekonsole
      • 2017
        • Playstation 4
      • Pico Spielekonsole
    • Gadgets
      • iPad Pro 2015 und 2016
      • iPad Air 2024
      • Macbook Pro
      • Smartwatch
      • Slate
      • Mudi
    • Fahrrad
      • Jonas 2018
      • SQLab
    • Auto
      • Auto 2022
      • Camping
        • Camping Touren Ideen
          • Camping Tour - Gardasee 2021
        • Camper
          • Camper klein - keine Stehhöhe
            • VW Bus Erfahrungen
          • Camper gross - Stehhöhe
    • Haus
      • Klimaanlage
      • Swimming Pool
      • Quick Mill Orione 3000
      • Spülmaschine 2021
      • Hebe-Schiebetür
      • Gasgrill
      • Minibar / Mini-Kühlschrank
      • Glasfaseranschluss (Fiber-to-the-Home)
      • Smart-Home
        • Raspberry Pi
        • Heimnetzwerk
      • Homeoffice
      • Energie
        • Solar
        • Wärmepumpe
    • Freizeit
      • Musik Streaming
      • Sky
      • Online Lernplattformen
      • eScooter - ePowerFun
    • Fußball
      • Meine Arbeit als Fußball-Trainer
      • Fußball Tools
      • DFB Talentförderung
    • Google Impact Challenge
  • Englisch
Powered by GitBook
On this page
  • Log-Drivers
  • json-file
  • none
  • Syslog
  • Gelf
  • Fluent
  • Google Cloud
  • Log-Driver Konfiguration im Docker-Daemon
  • Log-Driver Konfiguration im Docker-Container

Was this helpful?

  1. Build und Deployment
  2. Container
  3. Docker

Docker Logging

Logs werden standardmäßig auf STDOUT geschrieben und landen dann in einem File auf dem Docker Host. Bei docker logs werden STDOUT und STDERR angezeigt.

Das ist sehr praktisch, wenn man lokal in einer kleinen Landschaaft unterwegs ist. Wenn man allerdings in verteilten Multi-Node-Szenarien arbeitet - wie das normalerweise in Produktivumgebungen der Fall ist, dann will man die Logs an einer zentralen Stelle abfragen (ElasticSearch, Graylog, ...). Früher hat man das Logging Target gerne in die Applikation gepackt, doch damit bürdet man der Applikation auf, sich Gedanken über die spätere Nutzung zu machen - das bürdet der Anwendung mehr Verantwortung auf als nötig und ist dann auch schwierig zu ändern (wenn man mal 1000 Services hat). Deshalb hat sich im Docker-Umfeld durchgesetzt nur nach Standard-Out zu loggen und von dort weiterzuschieben.

Zudem kann es passieren, daß die Anwendungen in ganz unterschiedlichen Log-Formaten (JSON, XML) mit ganz unterschiedlichen Benennungen der Attribute arbeiten. Diese Daten muß man dann i. a. konsolidieren und in ein gemeinsames Format bringen.

LogStash (z. B. im ELK-Stack - L = Logstash) und Fluentd sind typische Tools für die Konsolidierung/Filterung von Logs.


Log-Drivers

  • Configure Logging Driver

Abhängig vom gewählten Log-Driver kann man weitere Parameter konfigurieren. Der Log-Driver kann die Nachrichten sogar mit weiteren Informationen anreichern (z. B. Applikationsversion). Den Log-Driver kann man Docker-zentral in /etc/docker/daemon.json einstellen und beim Docker-Container-Start (z. B. im docker-compose.yml-File oder als Parameter --log-driver) überschreiben.

json-file

Das ist der Default Log-Driver - wenn nichts anderes im Docker-Daemon (/etc/docker/daemon.json) oder beim Docker-Container-Start angegeben wurde.

none

Syslog

  • Docker Dokumentation Syslog-Log-Driver

Gelf

  • Docker Dokumentation Gelf-Log-Driver

Logging im Graylog-Format ... typischerweise zu einem Graylog-Server, kann aber auch von anderen Empfängern verstanden werden (Fluentd, LogStash).

Fluent

  • Docker Dokumentation Fluentd-Log-Driver

Vom Fluentd-Log-Driver werden standardmäßig einige Informationen hinzugefügt (Container-ID, Container-Name, ...). Man kann aber auch noch eigene Informationen hinzufügen, um so beispielsweise die Applikationsversion zu loggen.

Ein Fluentd-Server kann die Nachrichten - ähnlich wie Logstash - filtern, konsolidieren und mit Daten anreichern.

Eine Integration von Fluentd kann über den Fluentd-Log-Driver geschehen. Eine andere Form der Integration besteht im JSON-LogDriver, der eine Datei auf dem Docker-Host (/var/lib/docker/containers/...)erzeugt, die wiederum von Fluentd im tail-Mode gelesen wird. Letztere Variante hat den Vorteil, daß man die Log-Nachrichten bei docker logs my-container noch sieht ... die typische Arbeitsweise mit Docker.

Google Cloud

  • Docker Dokumentation Google-Cloud-Log-Driver


Log-Driver Konfiguration im Docker-Daemon

Man kann die Log-Driver Konfiguration im Docker-Daemon als Default für alle Docker Container in der Datei /etc/docker/daemon.json vornehmen (siehe Dokumentation). So findet man heraus welcher Logging-Driver im Daemon konfiguriert ist:

docker info --format '{{.LoggingDriver}}'

Log-Driver Konfiguration im Docker-Container

Man kann die Log-Driver Konfiguration des Docker-Daemons gezielt beim Container-Start eines Containers überschreiben:

docker run -it --log-driver none alpine ash
PreviousDocker RessourcesNextwindowsContainer

Last updated 3 years ago

Was this helpful?