Compartir comentarios
Las respuestas se generan en base a la documentación.

Controlador de registro ETW

Tabla de contenidos

El controlador de registro Event Tracing for Windows (ETW) reenvía los registros del contenedor como eventos ETW. ETW significa Seguimiento de eventos para Windows y es el marco común para el seguimiento de aplicaciones en Windows. Cada evento ETW contiene un mensaje con el registro y la información de su contexto. Un cliente puede entonces crear un receptor (listener) ETW para escuchar estos eventos.

El proveedor ETW que este controlador de registro registra con Windows tiene el identificador GUID: {a3693192-9ed6-46d2-a981-f8226c8363bd}. Un cliente crea un receptor ETW y se registra para escuchar los eventos del proveedor del controlador de registro. No importa el orden en que se creen el proveedor y el receptor. Un cliente puede crear su receptor ETW y comenzar a escuchar los eventos del proveedor antes de que el proveedor haya sido registrado en el sistema.

Uso

A continuación se muestra un ejemplo de cómo escuchar estos eventos utilizando el programa de utilidad logman incluido en la mayoría de las instalaciones de Windows:

  1. logman start -ets DockerContainerLogs -p "{a3693192-9ed6-46d2-a981-f8226c8363bd}" 0x0 -o trace.etl
  2. Ejecuta tus contenedores con el controlador etwlogs, agregando --log-driver=etwlogs al comando Docker run, y genera mensajes de registro.
  3. logman stop -ets DockerContainerLogs
  4. Esto genera un archivo .etl que contiene los eventos. Una forma de convertir este archivo a un formato legible por humanos es ejecutar: tracerpt -y trace.etl.

Cada evento ETW contiene una cadena de mensaje estructurada en este formato:

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

Los detalles de cada elemento del mensaje se pueden encontrar a continuación:

CampoDescripción
container_nameEl nombre del contenedor en el momento en que se inició.
image_nameEl nombre de la imagen del contenedor.
container_idEl ID completo del contenedor de 64 caracteres.
image_idEl ID completo de la imagen del contenedor.
sourcestdout o stderr.
logEl mensaje de registro del contenedor.

A continuación se muestra un ejemplo de mensaje de evento (salida formateada para mayor legibilidad):

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

Un cliente puede analizar esta cadena de mensaje para obtener tanto el mensaje de registro como la información de su contexto. La marca de tiempo también está disponible dentro del evento ETW.

Note

Este proveedor ETW solo emite una cadena de mensaje y no un evento ETW con estructura especial. Por lo tanto, no tienes que registrar un archivo de manifiesto en el sistema para leer e interpretar sus eventos ETW.