Eventi di rilevamento in Traccia eventi per WindowsTracking Events into Event Tracing in Windows

In questo esempio viene illustrato come abilitare la traccia in un servizio flusso di lavoro Windows Workflow Foundation (WF) e generare gli eventi di rilevamento in ETW traccia eventi per Windows ().This sample demonstrates how to enable Windows Workflow Foundation (WF) tracking on a workflow service and emit the tracking events in Event Tracing for Windows (ETW). Per creare record di rilevamento del flusso di lavoro in ETW, nell'esempio viene usato il partecipante del rilevamento ETW (EtwTrackingParticipant).To emit workflow tracking records into ETW, the sample uses the ETW tracking participant (EtwTrackingParticipant).

Il flusso di lavoro nell'esempio riceve una richiesta, assegna il reciproco dei dati di input alla variabile di input e restituisce di nuovo il reciproco al client.The workflow in the sample receives a request, assigns the reciprocal of the input data to the input variable and returns the reciprocal back to the client. Quando i dati di input sono pari a 0, si verifica un'eccezione di divisione per zero non gestita che causa l'interruzione del flusso di lavoro.When the input data is 0, a divide by zero exception occurs that is unhandled that causes the workflow to abort. Con il rilevamento abilitato, il record di rilevamento errori viene creato in ETW consentendo la risoluzione dell'errore in un secondo momento.With tracking enabled, the error track record is emitted to ETW, which can help troubleshoot the error later. Il partecipante del rilevamento ETW viene configurato con un profilo di rilevamento per sottoscrivere i record di rilevamento.The ETW tracking participant is configured with a tracking profile to subscribe to tracking records. Il profilo di rilevamento viene definito nel file Web.config e fornito come parametro di configurazione al partecipante del rilevamento ETW.The tracking profile is defined in the Web.config file and provided as a configuration parameter to the ETW tracking participant. Quest'ultimo viene configurato nel file Web.config del servizio flusso di lavoro e viene applicato al servizio come comportamento del servizio.The ETW tracking participant is configured in the Web.config file of the workflow service and is applied to the service as a service behavior. In questo esempio gli eventi di rilevamento vengono visualizzati nel registro eventi tramite Visualizzatore eventi.In this sample, you view the tracking events in the event log using Event Viewer.

Dettagli relativi al rilevamento del flusso di lavoroWorkflow Tracking Details

Windows Workflow Foundation fornisce un'infrastruttura di rilevamento per tenere traccia dell'esecuzione di un'istanza del flusso di lavoro.Windows Workflow Foundation provides a tracking infrastructure to track the execution of a workflow instance. L'esecuzione del rilevamento crea un'istanza del flusso di lavoro per generare eventi correlati al ciclo di vita del flusso di lavoro, eventi dalle attività del flusso di lavoro ed eventi personalizzati.The tracking runtime creates a workflow instance to emit events related to the workflow lifecycle, events from workflow activities and custom events. Nella tabella seguente sono indicati in dettaglio i componenti primari dell'infrastruttura di rilevamento.The following table details the primary components of the tracking infrastructure.

ComponenteComponent DescrizioneDescription
Esecuzione del rilevamentoTracking runtime Fornisce l'infrastruttura per la creazione dei record di rilevamento.Provides the infrastructure to emit tracking records.
Partecipanti del rilevamentoTracking participants Accede ai record di rilevamento.Accesses the tracking records. .NET Framework 4.6.1.NET Framework 4.6.1 viene fornito con un partecipante del rilevamento che scrive record di rilevamento come eventi ETW (Traccia eventi per Windows). ships with a tracking participant that writes tracking records as Event Tracing for Windows (ETW) events.
Profilo di rilevamentoTracking profile Meccanismo di filtro che consente a un partecipante del rilevamento di sottoscrivere un subset dei record di rilevamento creati da un'istanza del flusso di lavoro.A filtering mechanism that allows a tracking participant to subscribe for a subset of the tracking records emitted from a workflow instance.

Nella tabella seguente vengono indicati in dettaglio i record di rilevamento creati dall'esecuzione del flusso di lavoro.The following table details the tracking records that the workflow runtime emits.

Record di rilevamentoTracking record DescrizioneDescription
Record di rilevamento dell'istanza del flusso di lavoro.Workflow instance tracking records. Descrivono il ciclo di vita dell'istanza del flusso di lavoro.Describes the lifecycle of the workflow instance. Ad esempio un record di istanza viene creato quando viene avviato o completato il flusso di lavoro.For example, an instance record is emitted when the workflow starts or completes.
Record di rilevamento dello stato dell'attività.Activity state tracking records. Illustrano in dettaglio l'esecuzione dell'attività.Details activity execution. Questi record indicano lo stato di un'attività del flusso di lavoro, ad esempio quando un'attività viene pianificata, quando viene completata o quando viene generato un errore.These records indicate the state of a workflow activity such as when an activity is scheduled or when the activity completes or when a fault is thrown.
Record di ripresa del segnalibro.Bookmark resumption record. Generato quando viene ripreso un segnalibro all'interno di un'istanza del flusso di lavoro.Emitted whenever a bookmark within a workflow instance is resumed.
Record di rilevamento personalizzati.Custom tracking records. Un autore del flusso di lavoro può creare record di rilevamento personalizzati e generarli all'interno dell'attività personalizzata.A workflow author can create custom tracking records and emit them within the custom activity.
ActivityScheduledRecord Questo record viene creato quando un'attività pianifica un'altra attività.This record is emitted when an activity schedules another activity.
FaultPropagationRecord Questo record viene creato quando un errore viene propagato da un'attività.This record is emitted when a fault is propagated from an activity.
CancelRequestedRecord Questo record viene creato quando un'attività viene annullata da un'altra attività.This record is emitted when an activity is canceled by another activity.

Il partecipante del rilevamento sottoscrive un subset dei record di rilevamento creati usando profili di rilevamento.The tracking participant subscribes for a subset of the emitted tracking records using tracking profiles. Un profilo di rilevamento contiene query di rilevamento che consentono la sottoscrizione di un particolare tipo di record di rilevamento.A tracking profile contains tracking queries that allow subscribing for a particular tracking record type. I profili di rilevamento possono essere specificati nel codice o nella configurazione.Tracking profiles can be specified in code or in configuration.

Per usare questo esempioTo use this sample

  1. In Visual Studio 2010Visual Studio 2010 aprire il file della soluzione EtwTrackingParticipantSample.sln.Using Visual Studio 2010Visual Studio 2010, open the EtwTrackingParticipantSample.sln solution file.

  2. Per compilare la soluzione, premere CTRL+MAIUSC+B.To build the solution, press CTRL+SHIFT+B.

  3. Per eseguire la soluzione, premere F5.To run the solution, press F5.

    Per impostazione predefinita, il servizio è in ascolto sulla porta 53797 (http://localhost:53797/SampleWorkflowService.xamlx).By default, the service is listening on port 53797 (http://localhost:53797/SampleWorkflowService.xamlx).

  4. Usando Esplora fileFile Explorer, aprire il client di WCF.Using Esplora fileFile Explorer, open the WCF test client.

    Client di prova WCF (WcfTestClient.exe) si trova nella < Visual Studio 2010Visual Studio 2010 cartella di installazione > \Common7\IDE\ cartella.The WCF test client (WcfTestClient.exe) is located in the <Visual Studio 2010Visual Studio 2010 installation folder>\Common7\IDE\ folder.

    La cartella di installazione di Visual Studio 2010Visual Studio 2010 predefinita è C:\Programmi\Microsoft Visual Studio 10.0.The default Visual Studio 2010Visual Studio 2010 installation folder is C:\Program Files\Microsoft Visual Studio 10.0.

  5. Nel client di prova WCF selezionare Aggiungi servizio dal File menu.In WCF test client, select Add Service from the File menu.

    Aggiungere l'indirizzo dell'endpoint nella casella di input.Add the endpoint address in the input box. Il valore predefinito è http://localhost:53797/SampleWorkflowService.xamlx.The default is http://localhost:53797/SampleWorkflowService.xamlx.

  6. Aprire l'applicazione Visualizzatore eventi.Open the Event Viewer application.

    Prima di richiamare il servizio, avviare Visualizzatore eventi dal avviare dal menu eseguire e digitare eventvwr.exe.Before invoking the service, start Event Viewer from the Start menu, select Run and type in eventvwr.exe. Assicurarsi che il registro eventi sia in ascolto di eventi di rilevamento creati dal servizio flusso di lavoro.Ensure that the event log is listening for tracking events emitted from the workflow service.

  7. Nella visualizzazione struttura ad albero del Visualizzatore eventi, passare a Visualizzatore eventi, registri applicazioni e servizi, e Microsoft.In the tree view of the Event Viewer, navigate to Event Viewer, Applications and Services Logs, and Microsoft. Fare doppio clic su Microsoft e selezionare vista e quindi Visualizza registri analitici e Debug per abilitare l'analisi e registri di debugRight-click Microsoft and select View and then Show Analytic and Debug Logs to enable the analytic and debug logs

    Verificare che il Visualizza registri analitici e Debug opzione è selezionata.Ensure that the Show Analytic and Debug Logs option is checked.

  8. Nella visualizzazione struttura ad albero in Visualizzatore eventi, passare a Visualizzatore eventi, registri applicazioni e servizi, Microsoft, Windows, Server applicazioni-applicazioni.In the tree view in Event Viewer, navigate to Event Viewer, Applications and Services Logs, Microsoft, Windows, Application Server-Applications. Fare doppio clic su analitico e selezionare Attiva registro per abilitare il analitico log.Right-click Analytic and select Enable Log to enable the Analytic log.

  9. Eseguire il test del servizio tramite il client di prova WCF facendo doppio clic su GetData.Test the service using the WCF test client by double-clicking GetData.

    Verrà visualizzato il metodo GetData.This opens the GetData method. La richiesta accetta un parametro e assicura che il valore sia 0, ovvero l'impostazione predefinita.The request accepts one parameter and ensures that the value is 0, which is the default.

    Fare clic su richiamare.Click Invoke.

  10. Osservare gli eventi creati dal flusso di lavoro.Observe the events emitted from the workflow.

    Tornare a Visualizzatore eventi e passare a Visualizzatore eventi, registri applicazioni e servizi, Microsoft, Windows, Server applicazioni-applicazioni.Switch back to Event Viewer and navigate to Event Viewer, Applications and Services Logs, Microsoft, Windows, Application Server-Applications. Fare doppio clic su analitico e selezionare aggiornamento.Right-click Analytic and select Refresh.

    Gli eventi del flusso di lavoro vengono visualizzati nel visualizzatore eventi.The workflow events are displayed in the event viewer. Si noti che vengono visualizzati gli eventi di esecuzione del flusso di lavoro e che uno di questi è un'eccezione non gestita che corrisponde all'errore nel flusso di lavoro.Notice that workflow execution events are displayed and that one of them is an unhandled exception that corresponds to the error in workflow. Inoltre, viene creato un evento di avviso dall'attività del flusso di lavoro indicante che l'attività sta generando un errore.Also, a warning event is emitted from the workflow activity, which indicates that the activity is throwing a fault.

  11. Ripetere i passaggi 9 e 10 con un input di dati diverso da 0, in modo che non venga generato alcun errore.Repeat steps 9 and 10 with an input of data other than 0, so that no error is thrown.

I profili di rilevamento consentono di sottoscrivere gli eventi creati dall'esecuzione quando lo stato di un'istanza del flusso di lavoro viene modificato.Tracking profiles allow you to subscribe to events that are emitted by the runtime when the state of a workflow instance changes. A seconda dei requisiti di monitoraggio, è possibile creare un profilo molto generico che sottoscrive un piccolo set di modifiche dello stato di alto livello in un flusso di lavoro.Depending on your monitoring requirements, you can create a profile that is very coarse, which subscribes to a small set of high-level state changes on a workflow. D'altra parte, è possibile creare un profilo molto preciso il cui output è dettagliato abbastanza per ricostruire l'esecuzione in un secondo momento.On the other hand, you can create a very precise profile whose output is rich enough to reconstruct the execution later. Nell'esempio vengono illustrati gli eventi creati dall'esecuzione del flusso di lavoro in ETW usando l'oggetto HealthMonitoring Tracking Profile che crea un piccolo set di eventi.The sample demonstrates the events emitted from the workflow runtime to ETW using the HealthMonitoring Tracking Profile, which emits a small set of events. Un profilo diverso che crea più eventi di rilevamento del flusso di lavoro viene fornito anche nel file Web.config denominato Troubleshooting Tracking Profile.A different profile that emits more workflow tracking events is also provided in the Web.config that is named Troubleshooting Tracking Profile. Quando viene installato .NET Framework 4.6.1.NET Framework 4.6.1, un profilo predefinito con un nome vuoto viene configurato nel file Machine.config.When the .NET Framework 4.6.1.NET Framework 4.6.1 is installed, a default profile with an empty name is configured in the Machine.config file. Questo profilo viene usato dalla configurazione del comportamento di rilevamento ETW quando non viene specificato alcun nome di profilo né un nome di profilo vuoto.This profile is used by the ETW tracking behavior configuration when no profile name or an empty profile name is specified.

Il profilo di rilevamento del monitoraggio dell'integrità crea record di istanza del flusso di lavoro e record di propagazione degli errori di attività.The health monitoring tracking profile emits workflow instance records and activity fault propagation records. Questo profilo viene creato aggiungendo il profilo di rilevamento seguente a un file di configurazione Web.config.This profile is created by adding the following tracking profile to a Web.config configuration file.

<<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>  

Il profilo può essere modificato impostando la configurazione EtwTrackingParticipant sugli elementi seguenti.The profile can be changed by changing the EtwTrackingParticipant configuration to the following.

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

Per eseguire la pulizia (facoltativo)To clean up (Optional)

  1. Aprire Visualizzatore eventi.Open Event Viewer.

  2. Passare a Visualizzatore eventi, registri applicazioni e servizi, Microsoft, Windows, applicazione Applicazioni server.Navigate to Event Viewer, Applications and Services Logs, Microsoft, Windows, Application Server-Applications. Fare doppio clic su analitico e selezionare Disattiva registro.Right-click Analytic and select Disable Log.

  3. Passare a Visualizzatore eventi, registri applicazioni e servizi, Microsoft, Windows, applicazione Applicazioni server.Navigate to Event Viewer, Applications and Services Logs, Microsoft, Windows, Application Server-Applications. Fare doppio clic su analitico e selezionare Cancella Log.Right-click Analytic and select Clear Log.

  4. Scegliere il deselezionare opzione per cancellare gli eventi.Choose the Clear option to clear the events.

Problema notoKnown Issue

Nota

Nel Visualizzatore eventi potrebbe non essere possibile decodificare gli eventi ETW.There is a known issue in the Event Viewer where it may fail to decode ETW events. Si potrebbe visualizzare un messaggio di errore simile al seguente.You may see an error message that looks like the following.

La descrizione per l'ID evento <id > dall'origine Microsoft-Windows-Application Server applicazioni non è state trovate.The description for Event ID <id> from source Microsoft-Windows-Application Server-Applications cannot be found. Il componente che ha generato l'evento non è installato nel computer locale oppure l'installazione è danneggiata.Either the component that raises this event is not installed on your local computer or the installation is corrupted. È possibile installare o ripristinare il componente nel computer locale.You can install or repair the component on the local computer.

Se si rileva questo errore, fare clic su Aggiorna nel riquadro Azioni.If you encounter this error, click refresh in the actions pane. La decodifica dell'evento dovrebbe ora essere eseguita in modo corretto.The event should now decode properly.

Importante

È possibile che gli esempi siano già installati nel computer.The samples may already be installed on your computer. Verificare la directory seguente (impostazione predefinita) prima di continuare.Check for the following (default) directory before continuing.

<InstallDrive>:\WF_WCF_Samples

Se questa directory non esiste, andare al Windows Communication Foundation (WCF) e gli esempi di Windows Workflow Foundation (WF) per .NET Framework 4 per scaricare tutti i Windows Communication Foundation (WCF) e WFWF esempi.If this directory does not exist, go to Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 to download all Windows Communication Foundation (WCF) and WFWF samples. Questo esempio si trova nella directory seguente.This sample is located in the following directory.

<InstallDrive>:\WF_WCF_Samples\WF\Basic\Tracking\EtwTracking

Vedere ancheSee Also

Esempi di monitoraggio di AppFabricAppFabric Monitoring Samples