共用方式為


將事件追蹤整合至 Windows 的事件追蹤系統中

EtwTracking 範例示範如何在工作流程服務上啟用 Windows Workflow Foundation (WF) 追蹤,並在 Windows 事件追蹤中發出追蹤事件(ETW)。 若要將工作流程追蹤記錄發出至 ETW,此範例會使用 ETW 追蹤參與者 (EtwTrackingParticipant)。

範例中的工作流程會接收要求、將輸入數據的倒數指派給輸入變數,並將對等傳回給用戶端。 當輸入數據為 0 時,會發生未處理的零除例外狀況,導致工作流程立即中止。 啟用追蹤之後,錯誤追蹤記錄會發出給 ETW,這有助於稍後針對錯誤進行疑難解答。 ETW 追蹤參與者會設定追蹤配置檔來訂閱追蹤記錄。 追蹤配置檔定義在 Web.config 檔案中,並以組態參數的形式提供給 ETW 追蹤參與者。 ETW 追蹤參與者是在工作流程服務的 Web.config 檔案中設定,並套用至服務即服務行為。 在此範例中,您會使用事件查看器檢視事件記錄檔中的追蹤事件。

工作流程追蹤詳細數據

Windows Workflow Foundation 提供追蹤基礎結構來追蹤工作流程實例的執行。 追蹤運行時間會建立工作流程實例,以發出與工作流程生命週期相關的事件、來自工作流程活動和自定義事件的事件。 下表詳細說明追蹤基礎結構的主要元件。

元件 說明
追蹤執行時間 提供基礎結構來發出追蹤記錄。
追蹤參與者 存取追蹤記錄。 .NET Framework 4.6.1 附帶一個追蹤參與者,該參與者將追蹤記錄以 Windows 事件追蹤 (ETW) 事件的形式寫入。
追蹤檔案 篩選機制,可讓追蹤參與者訂閱從工作流程實例發出的追蹤記錄子集。

下表詳細說明工作流程運行時間發出的追蹤記錄。

追蹤記錄 說明
工作流程實例追蹤記錄。 描述工作流程實例的生命週期。 例如,當工作流程啟動或完成時,就會發出實例記錄。
活動狀態追蹤記錄。 詳細活動執行。 這些記錄會指出工作流程活動的狀態,例如當活動被安排、完成或發生錯誤時。
書籤記錄恢復。 每當工作流程實例內的書籤被恢復時發出。
自訂追蹤記錄。 工作流程作者可以建立自定義追蹤記錄,並在自定義活動中發出記錄。
ActivityScheduledRecord 當活動排程另一個活動時,就會發出此記錄。
FaultPropagationRecord 當錯誤從活動中傳播時,此記錄便會被產生。
CancelRequestedRecord 當一個活動被另一個活動取消時,就會發出此記錄。

追蹤參與者會使用追蹤配置檔來訂閱所發出追蹤記錄的子集。 追蹤配置檔包含追蹤查詢,允許訂閱特定追蹤記錄類型。 追蹤配置可以在程式碼或配置中指定。

若要使用此範例

  1. 使用 Visual Studio 開啟EtwTrackingParticipantSample.sln方案檔。

  2. 若要建置此方案,請按 CTRL+SHIFT+B。

  3. 若要執行解決方案,請按 F5。

    根據預設,服務會接聽埠 53797 (http://localhost:53797/SampleWorkflowService.xamlx)。

  4. 使用 [檔案總管] 開啟 WCF 測試用戶端。

    WCF 測試用戶端 (WcfTestClient.exe) 位於 <Visual Studio 安裝資料夾>\Common7\IDE\ 資料夾中。

    預設的 Visual Studio 安裝資料夾是 C:\Program Files\Microsoft Visual Studio 10.0。

  5. 在 WCF 測試用戶端中,從 [檔案] 功能選取 [新增服務]。

    在輸入方塊中新增端點位址。 預設值為 http://localhost:53797/SampleWorkflowService.xamlx

  6. 開啟事件查看器應用程式。

    叫用服務之前,請從 [ 開始 ] 選單啟動 [事件查看器],選取 [ 執行 ],然後輸入 eventvwr.exe。 請確保事件記錄檔正在監控工作流程服務發出的追蹤事件。

  7. 在事件查看器的樹檢視中,流覽至 [ 事件查看器]、[ 應用程式和服務記錄檔],然後 Microsoft。 以滑鼠右鍵按下 Microsoft ,然後選取 [ 檢視 ] 和 [顯示分析和偵錯記錄 ] 以啟用分析和偵錯記錄

    確定已核取 [顯示分析和偵錯記錄] 選項。

  8. 在 [事件查看器] 的樹視圖中,流覽至 [事件查看器]、[應用程式及服務記錄檔]、[Microsoft]、[Windows]、[應用程式伺服器應用程式]。 以滑鼠右鍵按兩下 [分析 ],然後選取 [ 啟用記錄 ] 以啟用 分析 記錄。

  9. 按兩下 GetData,使用 WCF 測試客戶端測試服務。

    這會開啟 GetData 方法。 要求接受一個參數,並確保值為 0,這是預設值。

    按一下 啟動

  10. 觀察從工作流程發出的事件。

    切換回 [事件查看器],然後流覽至 [事件查看器]、[ 應用程式及服務記錄檔]、 [Microsoft]、 [Windows]、 [應用程式伺服器應用程式]。 以滑鼠右鍵按兩下 [分析 ],然後選取 [ 重新整理]。

    工作流程事件會顯示在事件查看器中。 請注意,會顯示工作流程執行事件,其中一個事件是對應至工作流程中錯誤的未處理例外狀況。 此外,工作流程活動會觸發警告事件,表示活動發生錯誤。

  11. 使用除 0 以外的資料輸入重複步驟 9 和 10,以避免錯誤。

追蹤設定檔可讓您訂閱工作流程實例狀態變更時,執行時期發出的事件。 根據您的監控需求,您可以建立一個簡單的配置檔,以訂閱工作流程中的少量主要狀態變更。 另一方面,您可以建立非常精確的設定檔,其輸出足夠豐富,可以在稍後重新建構執行。 此範例示範使用 從工作流程運行時間發出至 ETW HealthMonitoring Tracking Profile的事件,這會發出一組小型事件。 在名稱為 Troubleshooting Tracking Profile 的 Web.config 中,還提供了一個不同的配置檔,以發出更多工作流程追蹤事件。 安裝 .NET Framework 4.6.1 時,會在 Machine.config 檔案中設定具有空白名稱的默認配置檔。 若未指定配置檔名稱或指定空白配置檔名稱,ETW 追蹤行為組態將使用此配置檔。

健康監控追蹤設定檔會發出工作流程實例記錄和活動故障傳播記錄。 此設定檔的建立方式是將下列追蹤配置檔新增至 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>

可透過變更EtwTrackingParticipant配置為下列項目來更改配置檔。

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

清除 (選擇性)

  1. 開啟 [事件檢視器]。

  2. 流覽至 事件查看器應用程式和服務記錄檔、 MicrosoftWindowsApplication Server-Applications。 以滑鼠右鍵按兩下 [分析 ],然後選取 [ 停用記錄]。

  3. 流覽至 事件查看器應用程式和服務記錄檔、 MicrosoftWindowsApplication Server-Applications。 以滑鼠右鍵按兩下 [分析 ],然後選取 [清除記錄]。

  4. 選擇 [清除 ] 選項以清除事件。

已知問題

備註

事件查看器中有一個已知問題,其中可能無法譯碼 ETW 事件。 您可能會看到如下所示的錯誤訊息。

找不到Microsoft-Windows-Application Server-Applications提供的事件 ID 的描述。 引發此事件的元件未安裝在本機計算機上,或安裝已損毀。 您可以在本機電腦上安裝或修復元件。

如果您遇到此錯誤,請在動作窗格中點擊重新整理。 事件現在應正確解碼。

另請參閱