Pilote de logging ETW
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 :
logman start -ets DockerContainerLogs -p {a3693192-9ed6-46d2-a981-f8226c8363bd} 0 0 -o trace.etl
- 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. logman stop -ets DockerContainerLogs
- 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.
NoteCe 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.