Partilhar via


Sobre o rastreamento de eventos

O Rastreamento de Eventos para Windows (ETW) é um recurso eficiente de rastreamento no nível do kernel que permite registrar eventos definidos pelo kernel ou pelo aplicativo em um arquivo de log. Você pode consumir os eventos em tempo real ou a partir de um arquivo de log e usá-los para depurar um aplicativo ou para determinar onde os problemas de desempenho estão ocorrendo no aplicativo.

O ETW permite habilitar ou desabilitar o rastreamento de eventos dinamicamente, permitindo que você execute o rastreamento detalhado em um ambiente de produção sem exigir reinicializações do computador ou do aplicativo.

A API de rastreamento de eventos é dividida em três componentes distintos:

  • Controladores, que iniciam e interrompem uma sessão de rastreamento de eventos e habilitam os provedores
  • Provedores, que organizam os eventos
  • Consumidores, que acompanham os eventos

O diagrama a seguir mostra o modelo de rastreamento de eventos.

modelo de rastreamento de eventos

Controladores

Os controladores são aplicativos que definem o tamanho e o local do arquivo de log, iniciam e param sessões de rastreamento de eventos, habilitam os provedores para que eles possam registrar eventos na sessão, gerenciar o tamanho do pool de buffers e obter estatísticas de execução para sessões. As estatísticas de sessão incluem o número de buffers usados, o número de buffers entregues e o número de eventos e buffers perdidos.

Para obter mais informações, consulte controlando sessões de rastreamento de eventos.

Fornecedores

Provedores são aplicações que contêm instrumentação de rastreamento de eventos. Depois que um provedor se registra, um controlador pode habilitar ou desabilitar o rastreamento de eventos no provedor. O provedor define sua interpretação de estar habilitado ou desativado. Geralmente, um provedor habilitado gera eventos, enquanto um provedor desabilitado não. Isso permite que você adicione o rastreamento de eventos ao seu aplicativo sem exigir que ele gere eventos o tempo todo.

Embora o modelo ETW separe o controlador e o provedor em aplicativos separados, um aplicativo pode incluir ambos os componentes.

Para obter mais informações, consulte Fornecendo eventos.

Tipos de Fornecedores

Há quatro tipos principais de provedores: provedores MOF (clássicos), provedores WPP, provedores baseados em manifesto e provedores TraceLogging. Você deve usar um provedor baseado em manifesto ou um provedor TraceLogging se estiver escrevendo aplicativos para o Windows Vista ou posterior que não precisam oferecer suporte a sistemas herdados.

Fornecedores MOF (clássicos):

  • Use as funções RegisterTraceGuids e TraceEvent para registar e gravar eventos.
  • Use classes MOF para definir eventos para que os consumidores saibam como consumi-los.
  • Pode ser ativado por apenas uma sessão de rastreamento de cada vez.

Fornecedores WPP:

  • Use as funções RegisterTraceGuids e TraceEvent para registar e gravar eventos.
  • Ter ficheiros associados de TMF (compilados no .pdb de um binário) que contêm informações de decodificação inferidas a partir da análise pelo pré-processador da instrumentação WPP no código-fonte.
  • Pode ser ativado por apenas uma sessão de rastreamento de cada vez.

Provedores baseados em manifesto:

  • Use EventRegister e EventWrite para registrar e gravar eventos.
  • Use um manifesto para definir eventos para que os consumidores saibam como consumi-los.
  • Pode ser ativado por até oito sessões de rastreamento simultaneamente.

TraceLogging provedores:

  • Use TraceLoggingRegister e TraceLoggingWrite para registrar e gravar eventos.
  • Use eventos autodescritivos para que os próprios eventos contenham todas as informações necessárias para consumi-los.
  • Pode ser ativado por até oito sessões de rastreamento simultaneamente.

Todos os provedores de eventos usam fundamentalmente a família de APIs de Rastreamento de Eventos (TraceEvent para tecnologias legadas e EventWrite/EventWriteEx para as mais recentes). Os fornecedores de eventos simplesmente diferem nos tipos de campos que armazenam nas cargas úteis dos eventos e onde armazenam as informações associadas à decodificação dos eventos.

Consumidores

Os consumidores são aplicações que selecionam uma ou mais sessões de rastreamento de eventos como fonte de eventos. Um consumidor pode solicitar eventos de várias sessões de rastreamento de eventos simultaneamente; O sistema entrega os eventos em ordem cronológica. Os consumidores podem receber eventos armazenados em arquivos de log ou de sessões que entregam eventos em tempo real. Ao processar eventos, um consumidor pode especificar as horas de início e término, e somente os eventos que ocorrerem no período de tempo especificado serão entregues.

Para obter mais informações, consulte Consumindo eventos.

Eventos em falta

Perfmon, Diagnóstico do Sistema e outras ferramentas do sistema podem relatar eventos ausentes no Log de Eventos e indicar que as configurações do Rastreamento de Eventos para Windows (ETW) podem não ser ideais. Os eventos podem ser perdidos por vários motivos:

  • O tamanho total do evento é superior a 64K. Isso inclui o cabeçalho ETW mais os dados ou a carga útil. Um usuário não tem controle sobre esses eventos ausentes, pois o tamanho do evento é configurado pelo aplicativo.

  • O tamanho do buffer ETW é menor do que o tamanho total do evento. Um usuário não tem controle sobre esses eventos ausentes, pois o tamanho do evento é configurado pelo aplicativo que registra os eventos.

  • Para registo em tempo real, o consumidor em tempo real não está a consumir eventos com rapidez suficiente ou não está presente de todo e, em seguida, o ficheiro de suporte está a ficar cheio. Isso pode ocorrer se o serviço Registo de Eventos for interrompido e iniciado quando os eventos estiverem a ser registados. Um usuário não tem controle sobre esses eventos ausentes.

  • Ao registrar em um arquivo, o disco é muito lento para acompanhar a taxa de registro.

Por qualquer um desses motivos, informe esses problemas ao provedor do aplicativo ou serviço que está gerando os eventos. Esses problemas só podem ser corrigidos pelo desenvolvedor do aplicativo ou pelo serviço que registra os eventos. Se os eventos ausentes estiverem sendo relatados no serviço de log de eventos, isso pode indicar um problema com a configuração do serviço de log de eventos. O usuário pode ter alguma capacidade limitada de aumentar o espaço máximo em disco a ser usado pelo Serviço de Log de Eventos, o que pode reduzir o número de eventos ausentes.