Compartilhar via


Eventos de rastreamento no rastreamento de evento no Windows

O exemplo etwTracking demonstra como habilitar o rastreamento do Windows Workflow Foundation (WF) em um serviço de fluxo de trabalho e emitir os eventos de rastreamento no ETW (Rastreamento de Eventos para Windows). Para emitir registros de rastreamento de fluxo de trabalho no ETW, o exemplo usa o Participante de Rastreamento ETW (EtwTrackingParticipant).

O fluxo de trabalho no exemplo recebe uma solicitação, atribui a recíproca dos dados de entrada à variável de entrada e retorna o retorno recíproco ao cliente. Quando os dados de entrada são 0, ocorre uma exceção de divisão por zero não tratada que faz com que o fluxo de trabalho seja interrompido. Com o acompanhamento habilitado, o registro do caminho do erro é emitido para o ETW, o que pode ajudar a solucionar o erro posteriormente. O participante de rastreamento de ETW é configurado com um perfil de rastreamento para assinar a acompanhar registros. O perfil de acompanhamento é definido no arquivo Web.config e fornecido como um parâmetro de configuração para o participante de acompanhamento do ETW. O participante de rastreamento de ETW é configurado no arquivo web.config do serviço de fluxo de trabalho e aplicado ao serviço como um comportamento de serviço. Neste exemplo, você exibirá os eventos de acompanhamento no log de eventos usando o Visualizador de Eventos.

Detalhes de acompanhamento de fluxo de trabalho

O Windows Workflow Foundation fornece uma infraestrutura de acompanhamento para acompanhar a execução de uma instância de fluxo de trabalho. O runtime de rastreamento cria uma instância de fluxo de trabalho para emitir os eventos relacionados ao ciclo de vida de fluxo de trabalho, os eventos de atividades de fluxo de trabalho e eventos personalizados. A tabela a seguir detalha os componentes primários da infraestrutura de acompanhamento.

Componente Descrição
Monitoramento do tempo de execução Fornece a infraestrutura para emitir registros de acompanhamento.
Acompanhamento de participantes Acessa os registros de acompanhamento. O .NET Framework 4.6.1 é fornecido com um participante de acompanhamento que grava registros de acompanhamento como eventos de Rastreamento de Eventos para Windows (ETW).
Controlando o perfil Um mecanismo de filtragem que permite que um participante de rastreamento assine para um subconjunto de registros de rastreamento emissores de uma instância de fluxo de trabalho.

A tabela a seguir detalha os registros de rastreamento que o tempo de execução do fluxo de trabalho emite.

Registro de rastreamento Descrição
Registros de rastreamento de instância de fluxo de trabalho. Descreve o ciclo de vida da instância de fluxo de trabalho. Por exemplo, um registro de instância é emitido quando o fluxo de trabalho é iniciado ou concluído.
Estado da atividade que acompanha registros. Detalha a execução da atividade. Esses registros indicam o estado de uma atividade de fluxo de trabalho como quando uma atividade é agendada ou quando a atividade completa ou quando uma falha é lançada.
Registro de ressunção do indexador. Emitido sempre que um marcador dentro de uma instância de fluxo de trabalho é retomado.
Registros de acompanhamento personalizados. Um autor de fluxo de trabalho pode criar registros de acompanhamento personalizados e emitê-los dentro da atividade personalizada.
ActivityScheduledRecord Esse registro é emitida quando agendas de atividade outra atividade.
FaultPropagationRecord Esse registro é emitida quando uma falha é propagada de uma atividade.
CancelRequestedRecord Esse registro é emitido quando uma atividade é cancelada por outra atividade.

O participante de rastreamento assinatura para um subconjunto de registros emissores de rastreamento usando perfis de rastreamento. Um perfil de acompanhamento contém consultas de acompanhamento que permitem a assinatura de um tipo de registro de acompanhamento específico. Os perfis de acompanhamento podem ser especificados no código ou na configuração.

Para usar este exemplo

  1. Usando o Visual Studio, abra o arquivo de solução EtwTrackingParticipantSample.sln.

  2. Para criar a solução, pressione CTRL+SHIFT+B.

  3. Para executar a solução, pressione F5.

    Por padrão, o serviço está escutando na porta 53797 (http://localhost:53797/SampleWorkflowService.xamlx).

  4. Usando o Explorador de Arquivos, abra o cliente de teste do WCF.

    O cliente de teste do WCF (WcfTestClient.exe) está localizado na pasta de< instalação do >Visual Studio\Common7\IDE\.

    A pasta de instalação padrão do Visual Studio é C:\Program Files\Microsoft Visual Studio 10.0.

  5. No cliente de teste do WCF, selecione Adicionar Serviço no menu Arquivo .

    Adicione o endereço do endpoint na caixa de entrada. O padrão é http://localhost:53797/SampleWorkflowService.xamlx.

  6. Abra o aplicativo Visualizador de Eventos.

    Antes de invocar o serviço, inicie o Visualizador de Eventos no menu Iniciar , selecione Executar e digite eventvwr.exe. Certifique-se de que o log de eventos é escutando eventos de rastreamento emissores de serviço de fluxo de trabalho.

  7. No modo de exibição de árvore do Visualizador de Eventos, navegue até Visualizador de Eventos, Logs de Aplicativos e Serviços e Microsoft. Clique com o botão direito do mouse sobre Microsoft e selecione Exibir, em seguida Mostrar logs de análise e depuração para habilitar os logs analíticos e de depuração.

    Verifique se a opção Mostrar Logs de Análise e Depuração está marcada.

  8. No modo de exibição de árvore no Visualizador de Eventos, navegue até o Visualizador de Eventos, Logs de Aplicativos e Serviços, Microsoft, Windows, Application Server-Applications. Clique com o botão direito do mouse em Analítico e selecione Habilitar Log para habilitar o log Analítico.

  9. Teste o serviço usando o cliente de teste do WCF clicando GetDataduas vezes.

    Isso abre o GetData método. A solicitação aceita um parâmetro e garante que o valor seja 0, que é o padrão.

    Clique em Invocar.

  10. Observe os eventos emitidos pelo fluxo de trabalho.

    Volte para o Visualizador de Eventos e navegue até o Visualizador de Eventos, Logs de Aplicativos e Serviços, Microsoft, Windows, Application Server-Applications. Clique com o botão direito do mouse em Análise e selecione Atualizar.

    Os eventos de fluxo de trabalho são exibidos no visualizador de eventos. Observe que os eventos de execução de fluxo de trabalho são exibidos e que um deles é uma exceção sem tratamento que corresponde ao erro no fluxo de trabalho. Além disso, um evento de aviso é emitida de atividade de fluxo de trabalho, que indica que a atividade é lançando uma falha.

  11. Repita as etapas 9 e 10 com uma entrada de dados diferente de 0, para que nenhum erro seja gerado.

Os perfis de acompanhamento permitem que você assine eventos emitidos pelo runtime quando o estado de uma instância de fluxo de trabalho é alterado. Dependendo dos requisitos de monitoramento, você pode criar um perfil muito genérico, que se inscreve em um pequeno conjunto de alterações de estado de alto nível em um fluxo de trabalho. Por outro lado, você pode criar um perfil muito preciso cujo resultado é suficientemente rico para reconstruir a execução mais tarde. O exemplo demonstra os eventos emissores do runtime de fluxo de trabalho a ETW usando HealthMonitoring Tracking Profile, que se emite um pequeno conjunto de eventos. Um perfil diferente que emite mais eventos de rastreamento de fluxo de trabalho também é fornecido no Web.config chamado Troubleshooting Tracking Profile. Quando o .NET Framework 4.6.1 é instalado, um perfil padrão com um nome vazio é configurado no arquivo Machine.config. Esse perfil é usado pela configuração de comportamento de acompanhamento do ETW quando nenhum nome de perfil ou um nome de perfil vazio é especificado.

O perfil de acompanhamento de monitoramento de integridade emite-se registros de instância de fluxo de trabalho e registros de propagação de falha de atividade. Esse perfil é criado adicionando o seguinte perfil de acompanhamento a um arquivo de configuração Web.config.

<tracking>
  <profiles>
    <trackingProfile name="HealthMonitoring Tracking Profile">
      <workflow activityDefinitionId="*">
        <workflowInstanceQueries>
          <workflowInstanceQuery>
            <states>
              <state name="Started"/>
              <state name="Completed"/>
              <state name="Aborted"/>
              <state name="UnhandledException"/>
            </states>
          </workflowInstanceQuery>
        </workflowInstanceQueries>
        <faultPropagationQueries>
          <faultPropagationQuery faultSourceActivityName ="*" faultHandlerActivityName="*"/>
        </faultPropagationQueries>
      </workflow>
    </trackingProfile>
  </profiles>
</tracking>

O perfil pode ser alterado alterando a EtwTrackingParticipant configuração para o seguinte.

<behaviors>
  <serviceBehaviors>
    <behavior>
      <etwTracking profileName="HealthMonitoring Tracking Profile"/>
    </behavior>
  </serviceBehaviors>
</behaviors>

Para limpar (opcional)

  1. Abra o Visualizador de Eventos.

  2. Navegue até o Visualizador de Eventos, Logs de Aplicativos e Serviços, Microsoft, Windows, Application Server-Applications. Clique com o botão direito do mouse em Análise e selecione Desabilitar Log.

  3. Navegue até o Visualizador de Eventos, Logs de Aplicativos e Serviços, Microsoft, Windows, Application Server-Applications. Clique com o botão direito do mouse em Análise e selecione Limpar Log.

  4. Escolha a opção Limpar para limpar os eventos.

Problema conhecido

Observação

Há um problema conhecido no Visualizador de Eventos em que ele pode falhar ao decodificar eventos ETW. Você pode ver uma mensagem de erro semelhante à seguinte.

A descrição para a <id> da ID de Evento dos aplicativos do servidor do aplicativo Microsoft-Windows da fonte não pode ser encontrada. O componente que gera esse evento não está instalado no computador local ou a instalação está corrompida. Você pode instalar ou reparar o componente no computador local.

Se você encontrar esse erro, clique em atualizar no painel ações. O evento agora deve decodificar corretamente.

Consulte também