Acerca del seguimiento de eventos
Seguimiento de eventos para Windows (ETW) es una eficaz instalación de seguimiento de nivel de kernel que permite registrar eventos definidos por el kernel o la aplicación en un archivo de registro. Puede consumir los eventos en tiempo real o desde un archivo de registro y usarlos para depurar una aplicación o para determinar dónde se producen los problemas de rendimiento en la aplicación.
ETW permite habilitar o deshabilitar el seguimiento de eventos dinámicamente, lo que le permite realizar un seguimiento detallado en un entorno de producción sin necesidad de reiniciar el equipo o la aplicación.
La API de seguimiento de eventos se divide en tres componentes distintos:
- Controladores, que inician y detienen una sesión de seguimiento de eventos y habilitan proveedores
- Proveedores, que proporcionan los eventos
- Consumidores, que consumen los eventos
En el diagrama siguiente se muestra el modelo de seguimiento de eventos.
Controladores
Los controladores son aplicaciones que definen el tamaño y la ubicación del archivo de registro, inician y detienen las sesiones de seguimiento de eventos, permiten a los proveedores registrar eventos en la sesión, administrar el tamaño del grupo de búferes y obtener estadísticas de ejecución para las sesiones. Las estadísticas de sesión incluyen el número de búferes usados, el número de búferes entregados y el número de eventos y búferes perdidos.
Para obtener más información, vea Controlar sesiones de seguimiento de eventos.
Proveedores
Los proveedores son aplicaciones que contienen instrumentación de seguimiento de eventos. Después de que un proveedor se registre, un controlador puede habilitar o deshabilitar el seguimiento de eventos en el proveedor. El proveedor define su interpretación de la habilitación o deshabilitación. Por lo general, un proveedor habilitado genera eventos, mientras que un proveedor deshabilitado no. Esto le permite agregar el seguimiento de eventos a la aplicación sin necesidad de que genere eventos todo el tiempo.
Aunque el modelo ETW separa el controlador y el proveedor en aplicaciones independientes, una aplicación puede incluir ambos componentes.
Para obtener más información, vea Proporcionar eventos.
Tipos de proveedores
Hay cuatro tipos principales de proveedores: proveedores MOF (clásicos), proveedores de WPP, proveedores basados en manifiestos y proveedores de seguimiento. Debe usar un proveedor basado en manifiestos o un proveedor de seguimiento si está escribiendo aplicaciones para Windows Vista o versiones posteriores que no necesitan admitir sistemas heredados.
Proveedores MOF (clásico):
- Use las funciones RegisterTraceGuids y TraceEvent para registrar y escribir eventos.
- Use clases MOF para definir eventos para que los consumidores sepan cómo consumirlos.
- Solo se puede habilitar mediante una sesión de seguimiento a la vez.
Proveedores de WPP:
- Use las funciones RegisterTraceGuids y TraceEvent para registrar y escribir eventos.
- Tener archivos TMF asociados (compilados en el archivo .pdb de un binario) que contienen información de descodificación inferida del examen del preprocesador de instrumentación wpP en el código fuente.
- Solo se puede habilitar mediante una sesión de seguimiento a la vez.
Proveedores basados en manifiestos:
- Use EventRegister y EventWrite para registrar y escribir eventos.
- Use un manifiesto para definir eventos para que los consumidores sepan cómo consumirlos.
- Se puede habilitar hasta ocho sesiones de seguimiento simultáneamente.
Proveedores de seguimiento:
- Use TraceLoggingRegister y TraceLoggingWrite para registrar y escribir eventos.
- Use eventos autodescriptos para que los propios eventos contengan toda la información necesaria para consumirlos.
- Se puede habilitar hasta ocho sesiones de seguimiento simultáneamente.
Todos los proveedores de eventos usan fundamentalmente la familia de API de seguimiento de eventos (TraceEvent para tecnologías heredadas y EventWrite/EventWriteEx para otras más recientes). Los proveedores de eventos simplemente difieren en qué tipos de campo almacenan en cargas de eventos y dónde almacenan la información de descodificación de eventos asociada.
Consumidores
Los consumidores son aplicaciones que seleccionan una o varias sesiones de seguimiento de eventos como origen de eventos. Un consumidor puede solicitar eventos de varias sesiones de seguimiento de eventos simultáneamente; el sistema entrega los eventos en orden cronológico. Los consumidores pueden recibir eventos almacenados en archivos de registro o desde sesiones que entregan eventos en tiempo real. Al procesar eventos, un consumidor puede especificar las horas de inicio y finalización, y solo se entregarán los eventos que se produzcan en el período de tiempo especificado.
Para obtener más información, consulte Consumo de eventos.
Eventos que faltan
Perfmon, Diagnóstico del sistema y otras herramientas del sistema pueden informar sobre los eventos que faltan en el registro de eventos e indicar que la configuración de Seguimiento de eventos para Windows (ETW) puede no ser óptima. Los eventos se pueden perder por varias razones:
El tamaño total del evento es mayor que 64K. Esto incluye el encabezado ETW más los datos o la carga útil. Un usuario no tiene control sobre estos eventos que faltan, ya que la aplicación configura el tamaño del evento.
El tamaño del búfer ETW es menor que el tamaño total del evento. Un usuario no tiene control sobre estos eventos que faltan, ya que el tamaño del evento lo configura la aplicación que registra los eventos.
Para el registro en tiempo real, el consumidor en tiempo real no consume eventos lo suficientemente rápido o no está presente por completo y, a continuación, el archivo de copia de seguridad se está llenando. Esto puede dar como resultado si el servicio de registro de eventos se detiene e inicia cuando se registran los eventos. Un usuario no tiene control sobre estos eventos que faltan.
Al iniciar sesión en un archivo, el disco es demasiado lento para mantenerse al día con la tasa de registro.
Por cualquiera de estos motivos, informe estos problemas al proveedor de la aplicación o servicio que está generando los eventos. Estos problemas solo se pueden solucionar mediante el desarrollador de aplicaciones o el servicio que registra los eventos. Si se notifican los eventos que faltan en el servicio de registro de eventos, esto puede indicar un problema con la configuración del servicio de registro de eventos. El usuario puede tener una capacidad limitada para aumentar el espacio en disco máximo que usará el servicio de registro de eventos, lo que puede reducir el número de eventos que faltan.