Controlador de registro ETW
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:
logman start -ets DockerContainerLogs -p "{a3693192-9ed6-46d2-a981-f8226c8363bd}" 0x0 -o trace.etl- Ejecuta tus contenedores con el controlador etwlogs, agregando
--log-driver=etwlogsal comando Docker run, y genera mensajes de registro. logman stop -ets DockerContainerLogs- Esto genera un archivo
.etlque 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: %sLos detalles de cada elemento del mensaje se pueden encontrar a continuación:
| Campo | Descripción |
|---|---|
container_name | El nombre del contenedor en el momento en que se inició. |
image_name | El nombre de la imagen del contenedor. |
container_id | El ID completo del contenedor de 64 caracteres. |
image_id | El ID completo de la imagen del contenedor. |
source | stdout o stderr. |
log | El 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.
NoteEste 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.