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

Pilote de logging ETW

Table des matières

Le pilote de logging Event Tracing for Windows (ETW) transfère les logs de conteneur comme événements ETW. ETW signifie Event Tracing in Windows, et est le framework commun pour tracer les applications dans Windows. Chaque événement ETW contient un message avec à la fois le log et ses informations de contexte. Un client peut ensuite créer un écouteur ETW pour écouter ces événements.

Le fournisseur ETW que ce pilote de logging enregistre avec Windows, a l'identifiant GUID de : {a3693192-9ed6-46d2-a981-f8226c8363bd}. Un client crée un écouteur ETW et s'enregistre pour écouter les événements du fournisseur du pilote de logging. L'ordre dans lequel le fournisseur et l'écouteur sont créés n'a pas d'importance. Un client peut créer son écouteur ETW et commencer à écouter les événements du fournisseur, avant que le fournisseur ait été enregistré avec le système.

Utilisation

Voici un exemple de comment écouter ces événements en utilisant l'utilitaire logman inclus dans la plupart des installations de Windows :

  1. logman start -ets DockerContainerLogs -p {a3693192-9ed6-46d2-a981-f8226c8363bd} 0 0 -o trace.etl
  2. Exécutez vos conteneur(s) avec le pilote etwlogs, en ajoutant --log-driver=etwlogs à la commande Docker run, et générez des messages de log.
  3. logman stop -ets DockerContainerLogs
  4. Ceci génère un fichier etl qui contient les événements. Une façon de convertir ce fichier en forme lisible par l'homme est d'exécuter : tracerpt -y trace.etl.

Chaque événement ETW contient une chaîne de message structurée dans ce format :

container_name: %s, image_name: %s, container_id: %s, image_id: %s, source: [stdout | stderr], log: %s

Les détails sur chaque élément dans le message peuvent être trouvés ci-dessous :

Champ Description
container_name Le nom du conteneur au moment où il a été démarré.
image_name Le nom de l'image du conteneur.
container_id L'ID complet du conteneur de 64 caractères.
image_id L'ID complet de l'image du conteneur.
source stdout ou stderr.
log Le message de log du conteneur.

Voici un exemple de message d'événement (sortie formatée pour la lisibilité) :

container_name: backstabbing_spence,
image_name: windowsservercore,
container_id: f14bb55aa862d7596b03a33251c1be7dbbec8056bbdead1da8ec5ecebbe29731,
image_id: sha256:2f9e19bd998d3565b4f345ac9aaf6e3fc555406239a4fb1b1ba879673713824b,
source: stdout,
log: Hello world!

Un client peut analyser cette chaîne de message pour obtenir à la fois le message de log, ainsi que ses informations de contexte. L'horodatage est également disponible dans l'événement ETW.

Note

Ce fournisseur ETW émet seulement une chaîne de message, et non un événement ETW spécialement structuré. Par conséquent, vous n'avez pas besoin d'enregistrer un fichier manifeste avec le système pour lire et interpréter ses événements ETW.