Rastreamento ETW

O exemplo AnalyticTrace demonstra como implementar o rastreamento de ponta a ponta (E2E) usando o Rastreamento de Eventos para Windows (ETW) e o ETWTraceListener que é fornecido com este exemplo. O exemplo é baseado em Introdução e inclui rastreamento ETW.

Nota

O procedimento de configuração e as instruções de compilação para este exemplo estão localizados no final deste tópico.

Este exemplo pressupõe que você esteja familiarizado com o rastreamento e o registro de mensagens.

Cada fonte de rastreamento no System.Diagnostics modelo de rastreamento pode ter vários ouvintes de rastreamento que determinam onde e como os dados são rastreados. O tipo de ouvinte define o formato no qual os dados de rastreamento são registrados. O exemplo de código a seguir mostra como adicionar o ouvinte à configuração.

<system.diagnostics>
    <sources>
        <source name="System.ServiceModel"
             switchValue="Verbose,ActivityTracing"
             propagateActivity="true">
            <listeners>
                <add type=
                   "System.Diagnostics.DefaultTraceListener"
                   name="Default">
                   <filter type="" />
                </add>
                <add name="ETW">
                    <filter type="" />
                </add>
            </listeners>
        </source>
    </sources>
    <sharedListeners>
        <add type=
            "Microsoft.ServiceModel.Samples.EtwTraceListener, ETWTraceListener"
            name="ETW" traceOutputOptions="Timestamp">
            <filter type="" />
       </add>
    </sharedListeners>
</system.diagnostics>

Antes de usar esse ouvinte, uma sessão de rastreamento ETW deve ser iniciada. Esta sessão pode ser iniciada usando Logman.exe ou Tracelog.exe. Um arquivo de SetupETW.bat é incluído neste exemplo para que você possa configurar a sessão de rastreamento ETW junto com um arquivo CleanupETW.bat para fechar a sessão e concluir o arquivo de log.

Nota

O procedimento de configuração e as instruções de compilação para este exemplo estão localizados no final deste tópico. Para obter mais informações sobre essas ferramentas, consulte https://go.microsoft.com/fwlink/?LinkId=56580

Ao usar o ETWTraceListener, os rastreamentos são registrados em arquivos .etl binários. Com o rastreamento ServiceModel ativado, todos os rastreamentos gerados aparecem no mesmo arquivo. Use a Ferramenta Visualizador de Rastreamento de Serviço (SvcTraceViewer.exe) para exibir arquivos de log .etl e .svclog. O visualizador cria uma visão de ponta a ponta do sistema que torna possível rastrear uma mensagem desde sua origem até seu destino e ponto de consumo.

O ETW Trace Listener suporta log circular. Para habilitar esse recurso, vá para Iniciar, Executar e digite cmd para iniciar um console de comando. No comando a seguir, substitua o <logfilename> parâmetro pelo nome do arquivo de log.

logman create trace Wcf -o <logfilename> -p "{411a0819-c24b-428c-83e2-26b41091702e}" -f bincirc -max 1000

Os -f interruptores e -max são opcionais. Eles especificam o formato circular binário e o tamanho máximo de log de 1000MB, respectivamente. O -p switch é usado para especificar o provedor de rastreamento. Em nosso exemplo, "{411a0819-c24b-428c-83e2-26b41091702e}" é o GUID para "XML ETW Sample Provider".

Para iniciar a sessão, digite o seguinte comando.

logman start Wcf

Depois de terminar o registo, pode parar a sessão com o seguinte comando.

logman stop Wcf

Esse processo gera logs binários circulares que você pode processar com sua ferramenta de escolha, incluindo Service Trace Viewer Tool (SvcTraceViewer.exe) ou Tracerpt.

Você também pode revisar o exemplo de rastreamento circular para obter mais informações sobre um ouvinte alternativo para executar o registro circular.

Para configurar, compilar e executar o exemplo

  1. Certifique-se de ter executado o procedimento de instalação única para os exemplos do Windows Communication Foundation.

  2. Para criar a solução, siga as instruções em Criando os exemplos do Windows Communication Foundation.

    Nota

    Para usar os comandos RegisterProvider.bat, SetupETW.bat e CleanupETW.bat, você deve executar em uma conta de administrador local. Se você estiver usando o Windows Vista ou posterior, você também deve executar o prompt de comando com privilégios elevados. Para fazer isso, clique com o botão direito do mouse no ícone do prompt de comando e clique em Executar como administrador.

  3. Antes de executar o exemplo, execute RegisterProvider.bat no cliente e no servidor. Isso configura o arquivo ETWTracingSampleLog.etl resultante para gerar rastreamentos que podem ser lidos pelo Service Trace Viewer. Esse arquivo pode ser encontrado na pasta C:\logs. Se essa pasta não existir, ela deverá ser criada ou nenhum vestígio será gerado. Em seguida, execute SetupETW.bat nos computadores cliente e servidor para iniciar a sessão de rastreamento ETW. O arquivo SetupETW.bat pode ser encontrado na pasta CS\Client.

  4. Para executar o exemplo em uma configuração de computador único ou entre computadores, siga as instruções em Executando os exemplos do Windows Communication Foundation.

  5. Quando o exemplo estiver concluído, execute CleanupETW.bat para concluir a criação do arquivo ETWTracingSampleLog.etl.

  6. Abra o arquivo ETWTracingSampleLog.etl de dentro do Service Trace Viewer. Você será solicitado a salvar o arquivo binário formatado como um arquivo .svclog.

  7. Abra o arquivo .svclog recém-criado de dentro do Service Trace Viewer para exibir os rastreamentos ETW e ServiceModel.

Consulte também