⚠️ Traduction non officielle - Cette documentation est une traduction communautaire non officielle de Docker.

Utiliser docker logs avec des pilotes de journalisation distants

Aperçu

Vous pouvez utiliser la commande docker logs pour lire les journaux de conteneur indépendamment du pilote de journalisation ou plugin configuré. Docker Engine utilise le pilote de journalisation local pour agir comme cache pour lire les derniers journaux de vos conteneurs. Ceci est appelé journalisation double. Par défaut, le cache a la rotation de fichier journal activée, et est limité à un maximum de 5 fichiers de 20 MB chacun (avant compression) par conteneur.

Référez-vous à la section options de configuration pour personnaliser ces valeurs par défaut, ou à la section désactiver la journalisation double pour désactiver cette fonctionnalité.

Prérequis

Docker Engine active automatiquement la journalisation double si le pilote de journalisation configuré ne supporte pas la lecture des journaux.

Les exemples suivants montrent le résultat de l'exécution d'une commande docker logs avec et sans la disponibilité de la journalisation double :

Sans capacité de journalisation double

Quand un conteneur est configuré avec un pilote de journalisation distant tel que splunk, et que la journalisation double est désactivée, une erreur est affichée lors de la tentative de lecture des journaux de conteneur localement :

  • Étape 1 : Configurer le daemon Docker

    $ cat /etc/docker/daemon.json
    {
      "log-driver": "splunk",
      "log-opts": {
        "cache-disabled": "true",
        ... (options pour le pilote de journalisation "splunk")
      }
    }
    
  • Étape 2 : Démarrer le conteneur

    $ docker run -d busybox --name testlog top
    
  • Étape 3 : Lire les journaux du conteneur

    $ docker logs 7d6ac83a89a0
    Error response from daemon: configured logging driver does not support reading
    

Avec capacité de journalisation double

Avec le cache de journalisation double activé, la commande docker logs peut être utilisée pour lire les journaux, même si le pilote de journalisation ne supporte pas la lecture des journaux. L'exemple suivant montre une configuration de daemon qui utilise le pilote de journalisation distant splunk par défaut, avec la mise en cache de journalisation double activée :

  • Étape 1 : Configurer le daemon Docker

    $ cat /etc/docker/daemon.json
    {
      "log-driver": "splunk",
      "log-opts": {
        ... (options pour le pilote de journalisation "splunk")
      }
    }
    
  • Étape 2 : Démarrer le conteneur

    $ docker run -d busybox --name testlog top
    
  • Étape 3 : Lire les journaux du conteneur

    $ docker logs 7d6ac83a89a0
    2019-02-04T19:48:15.423Z [INFO]  core: marked as sealed
    2019-02-04T19:48:15.423Z [INFO]  core: pre-seal teardown starting
    2019-02-04T19:48:15.423Z [INFO]  core: stopping cluster listeners
    2019-02-04T19:48:15.423Z [INFO]  core: shutting down forwarding rpc listeners
    2019-02-04T19:48:15.423Z [INFO]  core: forwarding rpc listeners stopped
    2019-02-04T19:48:15.599Z [INFO]  core: rpc listeners successfully shut down
    2019-02-04T19:48:15.599Z [INFO]  core: cluster listeners successfully shut down
    
Note

Pour les pilotes de journalisation qui supportent la lecture des journaux, tels que les pilotes local, json-file et journald, il n'y a pas de différence de fonctionnalité avant ou après que la capacité de journalisation double soit devenue disponible. Pour ces pilotes, les journaux peuvent être lus en utilisant docker logs dans les deux scénarios.

Options de configuration

Le cache de journalisation double accepte les mêmes options de configuration que le pilote de journalisation local, mais avec un préfixe cache-. Ces options peuvent être spécifiées par conteneur, et les valeurs par défaut pour les nouveaux conteneurs peuvent être définies en utilisant le fichier de configuration du daemon.

Par défaut, le cache a la rotation de fichier journal activée, et est limité à un maximum de 5 fichiers de 20MB chacun (avant compression) par conteneur. Utilisez les options de configuration décrites ci-dessous pour personnaliser ces valeurs par défaut.

Option Défaut Description
cache-disabled "false" Désactiver la mise en cache locale. Valeur booléenne passée comme chaîne (true, 1, 0, ou false).
cache-max-size "20m" La taille maximale du cache avant qu'il soit en rotation. Un entier positif plus un modificateur représentant l'unité de mesure (k, m, ou g).
cache-max-file "5" Le nombre maximum de fichiers de cache qui peuvent être présents. Si la rotation des journaux crée des fichiers en excès, le fichier le plus ancien est supprimé. Un entier positif.
cache-compress "true" Activer ou désactiver la compression des fichiers journaux en rotation. Valeur booléenne passée comme chaîne (true, 1, 0, ou false).

Désactiver le cache de journalisation double

Utilisez l'option cache-disabled pour désactiver le cache de journalisation double. Désactiver le cache peut être utile pour économiser l'espace de stockage dans les situations où les journaux ne sont lus que via un système de journalisation distant, et s'il n'y a pas besoin de lire les journaux via docker logs à des fins de débogage.

La mise en cache peut être désactivée pour des conteneurs individuels ou par défaut pour les nouveaux conteneurs, lors de l'utilisation du fichier de configuration du daemon.

L'exemple suivant utilise le fichier de configuration du daemon pour utiliser le pilote de journalisation splunk par défaut, avec la mise en cache désactivée :

$ cat /etc/docker/daemon.json
{
  "log-driver": "splunk",
  "log-opts": {
    "cache-disabled": "true",
    ... (options pour le pilote de journalisation "splunk")
  }
}
Note

Pour les pilotes de journalisation qui supportent la lecture des journaux, tels que les pilotes local, json-file et journald, la journalisation double n'est pas utilisée, et désactiver l'option n'a aucun effet.

Limitations

  • Si un conteneur utilisant un pilote de journalisation ou plugin qui envoie les journaux à distance a un problème de réseau, aucune écriture vers le cache local n'a lieu.
  • Si une écriture vers logdriver échoue pour quelque raison que ce soit (système de fichiers plein, permissions d'écriture supprimées), l'écriture du cache échoue et est journalisée dans le journal du daemon. L'entrée de journal vers le cache n'est pas réessayée.
  • Certains journaux peuvent être perdus du cache dans la configuration par défaut car un tampon circulaire est utilisé pour éviter de bloquer le stdio du conteneur en cas d'écritures de fichier lentes. Un administrateur doit les réparer pendant que le daemon est arrêté.