Wie man die Protokollrotation für Docker einrichtet

DockerDockerBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

Docker ist zu einer weit verbreiteten Containerisierungspaltform (Containerization Platform) geworden, die es Entwicklern ermöglicht, Anwendungen in einer konsistenten und skalierbaren Umgebung zu entwickeln, bereitzustellen und auszuführen. Mit dem Wachstum Ihrer Docker-basierten Infrastruktur wird die Verwaltung der ständig zunehmenden Protokolldaten (Log Data) zu einer entscheidenden Aufgabe. In diesem Tutorial werden Sie durch den Prozess der Einrichtung der Protokollrotation (Log Rotation) für Ihre Docker-Container geführt, um eine effiziente Protokollverwaltung und eine Optimierung der Speicherung sicherzustellen.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/VolumeOperationsGroup(["Volume Operations"]) docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker/ContainerOperationsGroup -.-> docker/logs("View Container Logs") docker/VolumeOperationsGroup -.-> docker/volume("Manage Volumes") docker/SystemManagementGroup -.-> docker/info("Display System-Wide Information") docker/SystemManagementGroup -.-> docker/version("Show Docker Version") docker/SystemManagementGroup -.-> docker/prune("Remove Unused Docker Objects") subgraph Lab Skills docker/logs -.-> lab-416160{{"Wie man die Protokollrotation für Docker einrichtet"}} docker/volume -.-> lab-416160{{"Wie man die Protokollrotation für Docker einrichtet"}} docker/info -.-> lab-416160{{"Wie man die Protokollrotation für Docker einrichtet"}} docker/version -.-> lab-416160{{"Wie man die Protokollrotation für Docker einrichtet"}} docker/prune -.-> lab-416160{{"Wie man die Protokollrotation für Docker einrichtet"}} end

Grundlagen des Docker-Loggings

Docker ist eine leistungsstarke Containerisierungspaltform (Containerization Platform), die die Art und Weise, wie Anwendungen entwickelt, bereitgestellt und verwaltet werden, revolutioniert hat. Ein entscheidender Aspekt der Arbeit mit Docker ist das Verständnis und die Verwaltung der von Docker-Containern generierten Protokolle (Logs). Protokolle liefern wertvolle Informationen über das Verhalten, die Leistung und die Gesundheit Ihrer containerisierten Anwendungen, was für die Fehlerbehebung, die Überwachung und die Prüfung unerlässlich ist.

Was ist Docker-Logging?

Docker bietet einen integrierten Protokollierungsmechanismus (Logging Mechanism), der die Standardausgabe (stdout) und die Standardfehlerausgabe (stderr) jedes Containers erfasst. Dieser Protokollierungsmechanismus wird als Docker-Logging-Treiber (Docker Logging Driver) bezeichnet und ermöglicht es Ihnen, die von Ihren Containern generierten Protokolle anzuzeigen und zu verwalten.

Zugriff auf Docker-Protokolle

Sie können die Protokolle eines Docker-Containers mit dem Befehl docker logs zugreifen. Mit diesem Befehl können Sie die Protokolle eines bestimmten Containers anzeigen, den Protokollstrom in Echtzeit verfolgen und sogar die Protokolle basierend auf verschiedenen Kriterien filtern.

## View the logs of a container

## Follow the log stream in real-time

## Filter logs based on a specific time range

Grundlagen der Protokollebene (Log Level)

Docker-Protokolle können verschiedene Protokollebene (Log Level) haben, die die Schwere des Nachrichten angeben. Die verfügbaren Protokollebene sind:

  • debug: Detaillierte Informationen über den Betrieb des Containers.
  • info: Allgemeine Informationen über den Betrieb des Containers.
  • warn: Warnungen zu potenziellen Problemen oder unerwartetem Verhalten.
  • error: Fehler, die während des Betriebs des Containers aufgetreten sein können.
  • fatal: Schwere Fehler, die dazu geführt haben, dass der Container fehlgeschlagen ist.

Sie können die Protokollebene Ihrer Container steuern, indem Sie die Option --log-level beim Starten eines Containers festlegen.

## Start a container with a specific log level

Docker-Logging-Treiber

Docker unterstützt verschiedene Logging-Treiber (Logging Driver), die bestimmen, wie die Protokolle gespeichert und verwaltet werden. Der Standard-Logging-Treiber ist der json-file-Treiber, der die Protokolle im JSON-Format auf dem Dateisystem des Hosts speichert. Sie können jedoch Docker so konfigurieren, dass andere Logging-Treiber wie syslog, journald oder fluentd verwendet werden, je nach Ihren Anforderungen und Infrastruktur.

graph LR A[Docker Container] --> B[Logging Driver] B --> C[json-file] B --> D[syslog] B --> E[journald] B --> F[fluentd]

Durch das Verständnis der Grundlagen des Docker-Loggings können Sie die von Ihren containerisierten Anwendungen generierten Protokolle effektiv verwalten und sie zur Fehlerbehebung, zur Leistungsmessung und zur Gewährleistung der Zuverlässigkeit Ihrer Infrastruktur nutzen.

Konfiguration der Protokollrotation (Log Rotation) für Docker-Container

Im Laufe der Zeit generieren Ihre Docker-Container immer mehr Protokolle (Logs), und die Protokolldateien können schnell einen erheblichen Teil des Speicherplatzes auf dem Hostsystem verbrauchen. Um dies zu verhindern, können Sie die Protokollrotation (Log Rotation) konfigurieren. Dabei werden ältere Protokolldateien regelmäßig archiviert und gelöscht, um Speicherplatz freizugeben.

Grundlagen der Protokollrotation

Die Protokollrotation ist eine gängige Praxis in der Systemverwaltung. Dabei werden Protokolldateien in regelmäßigen Abständen rotiert, komprimiert und archiviert, um eine handhabbare Größe der Protokolldateien aufrechtzuerhalten. Dieser Prozess stellt sicher, dass die Protokolldateien nicht unbegrenzt wachsen und den gesamten verfügbaren Speicherplatz verbrauchen.

Konfiguration der Protokollrotation für Docker-Container

Um die Protokollrotation für Docker-Container zu konfigurieren, können Sie die integrierte Option --log-opt beim Starten eines Containers verwenden. Mit dieser Option können Sie die Parameter für die Protokollrotation angeben, wie z. B. die maximale Größe der Protokolldatei, die Anzahl der zu behaltenden archivierten Protokolldateien und das Komprimierungsformat.

## Start a container with log rotation configured

Im obigen Beispiel ist der Container so konfiguriert, dass die Protokolldateien rotiert werden, wenn sie eine maximale Größe von 10 MB erreichen, und dass maximal 5 archivierte Protokolldateien behalten werden.

Implementierung von Strategien für die Protokollrotation

Während die integrierte Option --log-opt eine bequeme Möglichkeit ist, die Protokollrotation für einzelne Container zu konfigurieren, ist sie möglicherweise nicht geeignet, um die Protokollrotation in Ihrer gesamten Docker-Infrastruktur zu verwalten. In solchen Fällen können Sie automatisierte Strategien für die Protokollrotation mit externen Tools oder Skripten implementieren.

Ein beliebter Ansatz ist die Verwendung des logrotate-Tools, das ein Standardwerkzeug zur Verwaltung der Protokollrotation auf Linux-Systemen ist. Sie können eine logrotate-Konfigurationsdatei erstellen, die die Regeln für die Protokollrotation Ihrer Docker-Container festlegt, und dann den logrotate-Befehl mithilfe eines Cron-Jobs oder eines Systemdienstes in regelmäßigen Abständen ausführen lassen.

Hier ist ein Beispiel für eine logrotate-Konfigurationsdatei für Docker-Container:

/var/lib/docker/containers/*/*.log {
    rotate 5
    copytruncate
    compress
    delaycompress
    missingok
    notifempty
}

Diese Konfigurationsdatei rotiert die Protokolldateien für alle Docker-Container, behält maximal 5 archivierte Protokolldateien, komprimiert die archivierten Dateien und löscht die Protokolldateien, wenn sie leer sind.

Durch die Konfiguration der Protokollrotation für Ihre Docker-Container können Sie sicherstellen, dass der Speicherplatz auf Ihrem Hostsystem effizient genutzt wird und dass Ihre containerisierten Anwendungen weiterhin reibungslos laufen, ohne von wachsenden Protokolldateien beeinträchtigt zu werden.

Implementierung automatisierter Strategien für die Protokollrotation

Während die integrierte Option --log-opt in Docker eine bequeme Möglichkeit ist, die Protokollrotation (Log Rotation) für einzelne Container zu konfigurieren, ist sie möglicherweise nicht die skalierbarste oder effizienteste Lösung für die Verwaltung der Protokollrotation in Ihrer gesamten Docker-Infrastruktur. In solchen Fällen können Sie automatisierte Strategien für die Protokollrotation mit externen Tools oder Skripten implementieren.

Verwendung von logrotate

Ein beliebter Ansatz ist die Verwendung des logrotate-Tools, das ein Standardwerkzeug zur Verwaltung der Protokollrotation auf Linux-Systemen ist. logrotate kann so konfiguriert werden, dass es Protokolldateien basierend auf verschiedenen Kriterien wie Dateigröße, Alter oder einem Zeitplan überwacht und rotiert.

Hier ist ein Beispiel, wie Sie logrotate konfigurieren können, um die Protokolle für alle Docker-Container auf einem Ubuntu 22.04-System zu verwalten:

  1. Erstellen Sie eine logrotate-Konfigurationsdatei für Docker-Container:

    sudo touch /etc/logrotate.d/docker-containers
    sudo nano /etc/logrotate.d/docker-containers
  2. Fügen Sie der Datei die folgende Konfiguration hinzu:

    /var/lib/docker/containers/*/*.log {
        rotate 5
        copytruncate
        compress
        delaycompress
        missingok
        notifempty
    }

    Diese Konfiguration rotiert die Protokolldateien für alle Docker-Container, behält maximal 5 archivierte Protokolldateien, komprimiert die archivierten Dateien und löscht die Protokolldateien, wenn sie leer sind.

  3. Speichern Sie die Datei und verlassen Sie den Texteditor.

  4. Testen Sie die logrotate-Konfiguration:

    sudo logrotate -d /etc/logrotate.d/docker-containers

    Die Option -d führt logrotate im Debug-Modus aus, wodurch die Aktionen angezeigt werden, die es ausführen würde, ohne sie tatsächlich auszuführen.

  5. Planen Sie den logrotate-Befehl mithilfe eines Cron-Jobs oder eines Systemdienstes in regelmäßigen Abständen auszuführen.

    sudo crontab -e

    Fügen Sie der Crontab die folgende Zeile hinzu, um logrotate täglich um 3 Uhr morgens auszuführen:

    0 3 * * * /usr/sbin/logrotate /etc/logrotate.d/docker-containers

Verwendung von Drittanbietertools

Neben logrotate gibt es mehrere Drittanbietertools und -dienste, die Ihnen bei der Implementierung automatisierter Strategien für die Protokollrotation in Ihrer Docker-Infrastruktur helfen können. Einige beliebte Optionen sind:

  • Fluentd: Ein beliebter Open-Source-Datenkollektor, der zur Verwaltung und Rotation von Protokollen aus Docker-Containern verwendet werden kann.
  • Elastic Stack (ELK): Eine Suite von Tools, die Elasticsearch, Logstash und Kibana umfasst und zur zentralisierten Protokollverwaltung und -rotation verwendet werden kann.
  • Splunk: Eine kommerzielle Plattform zur Protokollverwaltung und -analyse, die mit Docker integriert werden kann, um Protokolle zu verwalten und zu rotieren.
  • LabEx Log Rotation: Ein von LabEx angebotener Dienst, der automatisierte Protokollrotation und -verwaltung für Docker-Container bietet.

Durch die Implementierung automatisierter Strategien für die Protokollrotation können Sie sicherstellen, dass der Speicherplatz in Ihrer Docker-Infrastruktur effizient genutzt wird und dass Ihre containerisierten Anwendungen weiterhin reibungslos laufen, ohne von wachsenden Protokolldateien beeinträchtigt zu werden.

Zusammenfassung

Am Ende dieses Tutorials werden Sie ein umfassendes Verständnis des Docker-Loggings haben und können effektive Strategien für die Protokollrotation (Log Rotation) implementieren, um die Gesundheit und Leistung Ihrer Docker-basierten Anwendungen aufrechtzuerhalten. Das Beherrschen der Protokollrotation für Docker wird Ihnen helfen, den Speicherplatz zu optimieren, die Systemstabilität zu verbessern und ein gut organisiertes System zur Protokollverwaltung aufrechtzuerhalten.