Eventos de rastreamento no rastreamento de evento no Windows
A amostra EtwTracking demonstra como habilitar o acompanhamento do Windows Workflow Foundation (WF) em um serviço de fluxo de trabalho e emitir os eventos de acompanhamento no Rastreamento de Eventos para Windows (ETW). Para emitir registros de acompanhamento de fluxo de trabalho em ETW, o exemplo usa o participante de rastreamento deEtwTrackingParticipant(ETW).
O fluxo de trabalho no exemplo recebe uma solicitação, atribui o recíproco de dados de entrada à variável de entrada e retorna o recíproco de volta para o cliente. Quando os dados de entrada é 0, uma partilha a exceção ocorre zero que é não tratados que faz com que o fluxo de trabalho nulo. Com o rastreamento ativado, a reputação de erro é emitida a ETW, que pode ajudar a resolver problemas posteriormente o erro. O participante de rastreamento de ETW é configurado com um perfil de rastreamento para assinar a acompanhar registros. O perfil de rastreamento é definido no arquivo web.config e como como um parâmetro de configuração para participante de rastreamento de 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. Nesse exemplo, você exibe os eventos de rastreamento no log de eventos usando o visualizador de eventos.
Detalhes de acompanhamento de fluxo de trabalho
A Windows Workflow Foundation fornece uma infraestrutura de acompanhamento para rastrear 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 principais de infraestrutura de rastreamento.
Componente | Descrição |
---|---|
runtime de rastreamento | Fornece a infraestrutura para emitir registros de rastreamento. |
Participantes de rastreamento | Acessa os registros de rastreamento. 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 runtime de fluxo de trabalho se emite.
Controlando o registro | Descrição |
---|---|
Registros de rastreamento de instância de fluxo de trabalho. | Descreve o ciclo de vida de instância de fluxo de trabalho. Por exemplo, um registro de instância é emitida quando o fluxo de trabalho inicia ou termina. |
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 em uma instância de fluxo de trabalho que é. |
Registros personalizados de rastreamento. | Um autor de fluxo de trabalho pode criar registros personalizados de rastreamento e emitir os dentro da atividade personalizado. |
ActivityScheduledRecord | Esse registro é emitida quando agendas de atividade outra atividade. |
FaultPropagationRecord | Esse registro é emitida quando uma falha é propagada de uma atividade. |
CancelRequestedRecord | Esse registro é emitida 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 rastreamento contém consultas de rastreamento que permitem assinar para um tipo de registro específico de rastreamento. Controlar perfis pode ser especificado no código ou na configuração.
Para usar este exemplo
Usando o Visual Studio, abra o arquivo de solução EtwTrackingParticipantSample.sln.
Para criar a solução, pressione CTRL+SHIFT+B.
Para executar a solução, pressione F5.
Por padrão, o serviço está escutando na porta 53797 (
http://localhost:53797/SampleWorkflowService.xamlx
).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>pasta \Common7\IDE\.
A pasta de instalação padrão do Visual Studio é C:\Program Files\Microsoft Visual Studio 10.0.
No cliente de teste do WCF, selecione Adicionar serviço a partir do menu Arquivo.
Adicione o endereço do ponto de extremidade na caixa de entrada. O padrão é
http://localhost:53797/SampleWorkflowService.xamlx
.Abra o aplicativo visualizador de eventos.
Antes de invocar o serviço, inicie o Visualizador de Eventos a partir do 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.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 em Microsoft e selecione Visualizar e, em seguida, Mostrar Logs Analíticos e de Depuração para ativar os logs analíticos e de depuração
Certifique-se de que a opção Mostrar Logs Analíticos e de Depuração está marcada.
No modo de exibição de árvore no Visualizador de Eventos, navegue até Visualizador de Eventos, Logs de Aplicativos e Serviços, Microsoft, Windows, Servidor de aplicativo-Aplicativos. Clique com o botão direito do mouse em Analítico e selecione Habilitar Log para ativar o log Analítico.
Testar o serviço usando o cliente de teste de WCF clicando duas vezes
GetData
.Isso abre o método de
GetData
. A solicitação aceita um parâmetro e garante que o valor é 0, que é o padrão.Clique em Invocar.
Observe os eventos emissores de fluxo de trabalho.
Volte para o Visualizador de Eventos e navegue até Visualizador de Eventos, Logs de Aplicativos e Serviços, Microsoft, Windows, Servidor de aplicativo-Aplicativos. Clique com o botão direito do mouse em Analítico 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 deless é 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.
Repita as etapas 9 e 10 com uma entrada de dados diferente de 0, de modo que nenhum erro é lançada.
Controlando perfis permitem que você assine a eventos que são emitidas em runtime em que o estado de uma instância de fluxo de trabalho muda. Dependendo dos requisitos de monitoramento, você pode criar um perfil que é muito grosseiro, que assina 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 cujas ambas as saída é suficiente ricas posteriormente recompilar toda a execução. 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 que é chamado Troubleshooting Tracking Profile
. Quando o .NET Framework 4.6.1 é instalado, um perfil padrão com um nome vazia é configurado no arquivo Machine.config. Este perfil é usado pela configuração do comportamento de rastreamento de ETW quando nenhum nome de perfil ou um nome vazia de perfil são especificados.
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. Este perfil é criado adicionando o seguinte perfil de rastreamento em 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 configuração de EtwTrackingParticipant
a seguir.
<behaviors>
<serviceBehaviors>
<behavior>
<etwTracking profileName="HealthMonitoring Tracking Profile"/>
</behavior>
</serviceBehaviors>
</behaviors>
Para limpar (opcional)
Visualizador de EventosAberto.
Navegue até Visualizador de Eventos, Logs de Aplicativos e Serviços, Microsoft, Windows, Servidor de aplicativo-Aplicativos. Clique com o botão direito do mouse em Analítico e selecione Desabilitar Log.
Navegue até Visualizador de Eventos, Logs de Aplicativos e Serviços, Microsoft, Windows, Servidor de aplicativo-Aplicativos. Clique com o botão direito do mouse em Analítico e selecione Limpar Log.
Escolha a opção Limpar para limpar os eventos.
Problema conhecido
Observação
Há um problema conhecido em Visualizador de Eventos onde pode não decodifica eventos de ETW. Você pode ver a uma mensagem de erro semelhante ao 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, atualização de clique no painel ações. O evento agora deve decodificar corretamente.