Comment configurer la rotation des journaux pour Docker

DockerDockerBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Docker est devenu une plateforme de conteneurisation largement adoptée, permettant aux développeurs de construire, déployer et exécuter des applications dans un environnement cohérent et évolutif. Au fur et à mesure que votre infrastructure basée sur Docker se développe, la gestion des données de journalisation en constante augmentation devient une tâche cruciale. Ce tutoriel vous guidera tout au long du processus de configuration de la rotation des journaux pour vos conteneurs Docker, garantissant ainsi une gestion efficace des journaux et une optimisation du stockage.


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{{"Comment configurer la rotation des journaux pour Docker"}} docker/volume -.-> lab-416160{{"Comment configurer la rotation des journaux pour Docker"}} docker/info -.-> lab-416160{{"Comment configurer la rotation des journaux pour Docker"}} docker/version -.-> lab-416160{{"Comment configurer la rotation des journaux pour Docker"}} docker/prune -.-> lab-416160{{"Comment configurer la rotation des journaux pour Docker"}} end

Comprendre la journalisation Docker

Docker est une puissante plateforme de conteneurisation qui a révolutionné la façon dont les applications sont développées, déployées et gérées. L'un des aspects essentiels de l'utilisation de Docker est de comprendre et de gérer les journaux générés par les conteneurs Docker. Les journaux fournissent des informations précieuses sur le comportement, les performances et l'état de santé de vos applications conteneurisées, ce qui est essentiel pour le dépannage, la surveillance et l'audit.

Qu'est-ce que la journalisation Docker?

Docker dispose d'un mécanisme de journalisation intégré qui capture les flux de sortie standard (stdout) et d'erreur standard (stderr) de chaque conteneur. Ce mécanisme de journalisation est appelé le pilote de journalisation Docker (Docker logging driver), et il vous permet de visualiser et de gérer les journaux générés par vos conteneurs.

Accéder aux journaux Docker

Vous pouvez accéder aux journaux d'un conteneur Docker en utilisant la commande docker logs. Cette commande vous permet de visualiser les journaux d'un conteneur spécifique, de suivre le flux de journaux en temps réel et même de filtrer les journaux en fonction de différents critères.

## View the logs of a container
docker logs <container_name>

## Follow the log stream in real-time
docker logs -f <container_name>

## Filter logs based on a specific time range
docker logs --since="2023-04-01" --until="2023-04-30" <container_name>

Comprendre les niveaux de journalisation

Les journaux Docker peuvent avoir différents niveaux de journalisation, qui indiquent la gravité du message. Les niveaux de journalisation disponibles sont :

  • debug : Informations détaillées sur le fonctionnement du conteneur.
  • info : Informations générales sur le fonctionnement du conteneur.
  • warn : Avertissements concernant des problèmes potentiels ou un comportement inattendu.
  • error : Erreurs qui peuvent s'être produites pendant le fonctionnement du conteneur.
  • fatal : Erreurs graves qui ont entraîné l'échec du conteneur.

Vous pouvez contrôler le niveau de journalisation de vos conteneurs en définissant l'option --log-level lors du démarrage d'un conteneur.

## Start a container with a specific log level
docker run -d --log-level=warn <image_name>

Pilotes de journalisation Docker

Docker prend en charge différents pilotes de journalisation (logging drivers), qui déterminent la façon dont les journaux sont stockés et gérés. Le pilote de journalisation par défaut est le pilote json-file, qui stocke les journaux au format JSON sur le système de fichiers de l'hôte. Cependant, vous pouvez configurer Docker pour utiliser d'autres pilotes de journalisation, tels que syslog, journald ou fluentd, en fonction de vos besoins et de votre infrastructure.

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

En comprenant les bases de la journalisation Docker, vous pouvez gérer efficacement les journaux générés par vos applications conteneurisées et les utiliser pour résoudre les problèmes, surveiller les performances et garantir la fiabilité de votre infrastructure.

Configurer la rotation des journaux pour les conteneurs Docker

Au fil du temps, vos conteneurs Docker génèrent de plus en plus de journaux, et les fichiers de journal peuvent rapidement consommer une quantité importante d'espace disque sur le système hôte. Pour éviter cela, vous pouvez configurer la rotation des journaux, qui consiste à archiver régulièrement et à supprimer les anciens fichiers de journal pour libérer de l'espace disque.

Comprendre la rotation des journaux

La rotation des journaux est une pratique courante en administration système, où les fichiers de journal sont périodiquement rotés, compressés et archivés pour maintenir une taille de fichier de journal gérable. Ce processus garantit que les fichiers de journal ne croissent pas indéfiniment et ne consomment pas tout l'espace disque disponible.

Configurer la rotation des journaux pour les conteneurs Docker

Pour configurer la rotation des journaux pour les conteneurs Docker, vous pouvez utiliser l'option intégrée --log-opt lors du démarrage d'un conteneur. Cette option vous permet de spécifier les paramètres de rotation des journaux, tels que la taille maximale du fichier de journal, le nombre de fichiers de journal archivés à conserver et le format de compression.

## Start a container with log rotation configured
docker run -d --log-opt max-size=10m --log-opt max-file=5 <image_name>

Dans l'exemple ci-dessus, le conteneur est configuré pour rotater les fichiers de journal lorsqu'ils atteignent une taille maximale de 10 Mo et pour conserver un maximum de 5 fichiers de journal archivés.

Mettre en œuvre des stratégies de rotation des journaux

Bien que l'option intégrée --log-opt soit un moyen pratique de configurer la rotation des journaux pour des conteneurs individuels, elle peut ne pas convenir pour gérer la rotation des journaux dans toute votre infrastructure Docker. Dans de tels cas, vous pouvez mettre en œuvre des stratégies automatisées de rotation des journaux à l'aide d'outils ou de scripts externes.

Une approche populaire consiste à utiliser l'utilitaire logrotate, qui est un outil standard pour gérer la rotation des journaux sur les systèmes Linux. Vous pouvez créer un fichier de configuration logrotate qui spécifie les règles de rotation des journaux pour vos conteneurs Docker, puis programmer la commande logrotate pour qu'elle s'exécute périodiquement à l'aide d'une tâche cron ou d'un service système.

Voici un exemple de fichier de configuration logrotate pour les conteneurs Docker :

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

Ce fichier de configuration va rotater les fichiers de journal de tous les conteneurs Docker, conserver un maximum de 5 fichiers de journal archivés, compresser les fichiers archivés et supprimer les fichiers de journal s'ils sont vides.

En configurant la rotation des journaux pour vos conteneurs Docker, vous pouvez vous assurer que l'espace disque de votre système hôte est utilisé efficacement et que vos applications conteneurisées continuent de fonctionner sans problème, sans être affectées par la croissance des fichiers de journal.

Mettre en œuvre des stratégies automatisées de rotation des journaux

Bien que l'option intégrée --log-opt de Docker soit un moyen pratique de configurer la rotation des journaux pour des conteneurs individuels, ce n'est peut-être pas la solution la plus évolutive ou la plus efficace pour gérer la rotation des journaux dans toute votre infrastructure Docker. Dans de tels cas, vous pouvez mettre en œuvre des stratégies automatisées de rotation des journaux à l'aide d'outils ou de scripts externes.

Utilisation de logrotate

Une approche populaire consiste à utiliser l'utilitaire logrotate, qui est un outil standard pour gérer la rotation des journaux sur les systèmes Linux. logrotate peut être configuré pour surveiller et rotater les fichiers de journal en fonction de différents critères, tels que la taille du fichier, l'âge ou un horaire.

Voici un exemple de configuration de logrotate pour gérer les journaux de tous les conteneurs Docker sur un système Ubuntu 22.04 :

  1. Créez un fichier de configuration logrotate pour les conteneurs Docker :

    sudo touch /etc/logrotate.d/docker-containers
    sudo nano /etc/logrotate.d/docker-containers
  2. Ajoutez la configuration suivante au fichier :

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

    Cette configuration va rotater les fichiers de journal de tous les conteneurs Docker, conserver un maximum de 5 fichiers de journal archivés, compresser les fichiers archivés et supprimer les fichiers de journal s'ils sont vides.

  3. Enregistrez le fichier et quittez l'éditeur de texte.

  4. Testez la configuration logrotate :

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

    L'option -d exécutera logrotate en mode débogage, ce qui vous montrera les actions qu'il effectuerait sans les exécuter réellement.

  5. Programmez l'exécution périodique de la commande logrotate à l'aide d'une tâche cron ou d'un service système.

    sudo crontab -e

    Ajoutez la ligne suivante au fichier crontab pour exécuter logrotate tous les jours à 3 heures du matin :

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

Utilisation d'outils tiers

En plus de logrotate, plusieurs outils et services tiers peuvent vous aider à mettre en œuvre des stratégies automatisées de rotation des journaux pour votre infrastructure Docker. Voici quelques options populaires :

  • Fluentd : Un collecteur de données open-source populaire qui peut être utilisé pour gérer et rotater les journaux des conteneurs Docker.
  • Elastic Stack (ELK) : Une suite d'outils composée d'Elasticsearch, Logstash et Kibana, qui peut être utilisée pour la gestion et la rotation centralisées des journaux.
  • Splunk : Une plateforme commerciale de gestion et d'analyse des journaux qui peut être intégrée à Docker pour gérer et rotater les journaux.
  • LabEx Log Rotation : Un service de la marque LabEx qui propose une rotation et une gestion automatisées des journaux pour les conteneurs Docker.

En mettant en œuvre des stratégies automatisées de rotation des journaux, vous pouvez vous assurer que l'espace disque de votre infrastructure Docker est utilisé efficacement et que vos applications conteneurisées continuent de fonctionner sans problème, sans être affectées par la croissance des fichiers de journal.

Résumé

À la fin de ce tutoriel, vous aurez une compréhension approfondie de la journalisation Docker et vous pourrez mettre en œuvre des stratégies efficaces de rotation des journaux pour maintenir la santé et les performances de vos applications basées sur Docker. Maîtriser la rotation des journaux pour Docker vous aidera à optimiser le stockage, à améliorer la stabilité du système et à maintenir un système de gestion des journaux bien organisé.