分享方式:


使用 WCF 呼叫衡量標準來進行歷程記錄監控

[WCF 呼叫歷程記錄] 區段顯示對於 AppFabric 所管理之 .NET Framework 4 WCF 與 WF 服務的 WCF 呼叫歷程記錄衡量標準。[已完成] 與 [錯誤] 摘要衡量標準根據接收 WCF 呼叫的結果,提供成功及失敗的累積總數。您可以展開 [WCF 呼叫歷程記錄] 區段 (按一下向下箭號或 [WCF 呼叫歷程記錄] 標題列中摘要衡量標準連結以外的任意位置) 以顯示具有最多 [已完成的呼叫] 或 [服務例外狀況] 的前五個服務。此動作也會顯示 [錯誤 - 依一般類型分組] 的數目。您可以使用這些最上層的摘要值,以及其下層相互關聯的詳細資料檢視,以監控服務之 WCF 呼叫的歷程記錄。

WCF 呼叫歷程記錄衡量標準

「AppFabric 儀表板」的 [WCF 呼叫歷程記錄] 區段提供 WCF 服務呼叫的摘要檢視 (在 [WCF 呼叫歷程記錄] 標題所在位置的暗色標頭方塊中)。下列衡量標準提供已成功完成以及未成功完成之 WCF 呼叫的快速概要檢視:

  • [已完成] 摘要衡量標準是已完成且未產生錯誤或例外狀況之已接收的 WCF 呼叫的累積總數,這些呼叫會產生 OperationCompleted WCF 事件類型。

  • [錯誤] 摘要衡量標準是整個 WCF 堆疊中發生之所有 WCF 相關例外狀況與使用者定義錯誤的累積總數。此計數包含 (但不限於) 失敗的呼叫與發生錯誤之呼叫數目所導致的錯誤。

  • [節流叫用項] 衡量標準提供於適用範圍內部署之所有服務所經歷的 WCF 節流期間計數。超過 WCF 節流閾值時,單一節流期間會開始。在輸送量降低到節流閾值的 70% 以下時會停止。

摘要衡量標準下方會顯示下列服務衡量標準 (其中會以遞減順序摘要顯示特定呼叫類別中的服務數目):

  • 已完成的呼叫 - 依服務 (前 5 個) 分組 - 在指定的時間間隔內,具有最高已完成 WCF 呼叫總數的前五個服務。

  • 服務例外狀況 - 依服務 (前 5 個) 分組 - 在指定時間間隔內,具有最高例外狀況總數的前五個服務。

  • 錯誤 - 依一般類型分組 - 依服務例外狀況或使用者定義錯誤的總數分組。服務例外狀況計數也會進一步以兩個最常見的原因詳細區分:失敗的呼叫與發生錯誤的呼叫。服務例外狀況也可能因為失敗的呼叫或發生錯誤的呼叫之外的問題產生,例如啟用錯誤。

並非所有追蹤的 WCF 事件都會包含在「儀表板」的 [已完成的呼叫 - 依服務 (前 5 個) 分組] 或 [服務例外狀況 - 依服務 (前 5 個) 分組] 欄位中。顯示在這些 [前 5 個] 欄位中的事件,不包含從管理端點與事件之內部 AppFabric 服務所產生的事件。只有具有完整服務虛擬路徑的事件才會顯示在這兩個欄位中。在 WCF 通道堆疊中產生較多的事件 (例如,回呼與服務例外狀況) 並未包含完整服務虛擬路徑。這些計數器不會計算未包含完整服務虛擬路徑的事件。這樣可確保只有使用者服務 (而非使用者應用程式) 才會出現在那些計數器值中。

追蹤的事件頁面

您可以使用 [追蹤的事件] 頁面取得在服務執行個體的 WCF 呼叫特定順序期間,所發生事件的歷程記錄檢視。按一下任何摘要衡量標準 (假設是 [已完成]),或 [WCF 呼叫歷程記錄] 區段之欄位 (假設是 [已完成的呼叫] 欄位) 下的其中一個服務連結,將會顯示 [追蹤的事件] 頁面。

追蹤的事件頁面

按下連結之後,會從 [AppFabric 儀表板] 頁面跳到 [追蹤的事件] 頁面,此頁面可用於篩選 WCF 呼叫與事件資料,因此 [追蹤的事件] 頁面上列舉的項目專屬於該原始連結。例如,按一下 [服務例外狀況 - 依服務 (前 5 個) 分組] 欄位下的服務項目連結,會顯示 [追蹤的事件] 頁面。它會列舉由服務事件類型 (在此案例中是 WCF 例外狀況) 所篩選的事件,以及與「AppFabric 儀表板」中所選取衡量標準和時間間隔相對應的產生時間。

但是,您可以變更 [查詢摘要] 框架中一或多個欄位 (假設是 [事件]) 的值,以變更初始輸出並進一步疑難排解特定事件類型。例如,如果將您帶到 [追蹤的事件] 頁面的原始衡量標準是 [WCF 例外狀況],您可以將 [事件] 欄位的值變更為 [所有 WCF 事件],然後按一下 [執行查詢] 以查看不同的結果。

您可以使用下列選項來篩選要顯示的事件類型:

  • 所有 WCF 事件 - 顯示監控儲存區中所有可用的 WCF 事件,其中包含 (但不限於) WCF 已完成的呼叫、WCF 例外狀況、WCF 失敗的呼叫,以及 WCF 發生錯誤的呼叫。

  • WCF 已完成的呼叫 - 顯示所有已完成的 WCF 呼叫。

  • 所有 WCF 錯誤 - 顯示在「錯誤」等級產生的所有事件:服務例外狀況與使用者定義的錯誤事件。

  • WCF 例外狀況 - 顯示所有 WCF 服務例外狀況。

  • WCF 使用者定義的錯誤 - 顯示在「錯誤」等級產生的所有使用者定義的事件。

  • WCF 失敗的呼叫 - 顯示所有失敗的 WCF 呼叫。

  • WCF 發生錯誤的呼叫 - 顯示所有發生錯誤的 WCF 呼叫。

  • WCF 節流叫用項 - 顯示 WCF 節流事件。每個事件代表一個節流期間,並且當第一次超過 WCF 節流閾值時就會產生一個事件。

  • 所有 WF 事件 - 顯示所有 WF 事件。

如需詳細資訊,請參閱Tracked Events Page

監控 WCF 呼叫歷程記錄衡量標準以進行疑難排解

您可以透過使用 [WCF 呼叫歷程記錄] 區段監控對於 .NET Framework 服務的 WCF 呼叫,來將前述資訊組合成疑難排解方法。一開始檢視 [WCF 呼叫歷程記錄] 區段時,會看到 WCF 呼叫狀態的高階摘要檢視。您可以透過檢查是否有任何例外狀況、失敗的呼叫或發生錯誤的呼叫,快速判斷 WCF 呼叫層級是否發生問題。若 [服務例外狀況 - 依服務 (前 5 個) 分組] 或 [錯誤 - 依一般類型分組] 摘要衡量標準包含非零值,表示可能發生問題。每個摘要衡量標準都連結到 [追蹤的事件] 頁面,您可以在該頁面中檢視 WCF 呼叫資料的明確詳細衡量標準 ([AppFabric 儀表板] 頁面於較高層級摘要顯示)。當您在隔離與 WCF 呼叫有關的問題時,此原始資料可提供額外資訊。

假設您正在使用 [WCF 呼叫歷程記錄] 來監控對於所指定範圍之 WCF 或 WF 服務的 WCF 呼叫是否有任何問題。若看到 [例外狀況] 摘要衡量標準為非零值,則展開 Widget 可讓您查看前五個服務的例外狀況詳細資訊。如此可讓您專注於具有最多潛在問題的服務。然後您可以選取有問題的特定服務,然後移至列舉頁面並變更查詢值以指定詳細資料。

假設 [WCF 呼叫歷程記錄] Widget 上的 [錯誤] 摘要標頭包含非零值,表示發生一些錯誤。展開 [WCF 呼叫歷程記錄] Widget 並查看 [服務例外狀況 - 依服務 (前 5 個) 分組] 欄位下方的資訊,便可以看到在指定時間間隔內遇到最多例外狀況的前五個服務。您也可以查看 [錯誤 - 依一般類型分組 ] 欄位下方的資訊,以檢視依錯誤類型細分的詳細資訊:服務例外狀況 (大部分由失敗的呼叫或發生錯誤的呼叫所引起) 或使用者定義的錯誤。若要取得有關錯誤或例外狀況的詳細資訊,您可以按一下其中一個服務連結,以顯示 [追蹤的事件] 頁面。

注意

若您的服務 X 是前五個服務之一,就會在這裡顯示。在這個案例中,您可以按一下它的服務連結,以顯示 [追蹤的事件] 頁面。若服務 X 不是前五個服務之一,您可以按一下區段中任何一個衡量標準,以顯示 [追蹤的事件] 頁面。該頁面顯示時,您可以對應地修改現有的查詢 (亦即,增加適當的服務名稱條件)。

[追蹤的事件] 頁面會以發生在 IIS 階層 X 中特定範圍的例外狀況歷程記錄檢視填入。您可以按一下清單 (仍然在 [追蹤的事件] 頁面中) 中的其中一個 WCF 例外狀況事件,以在頁面底部的 [詳細資料] 窗格中顯示特定例外狀況。在 [詳細資料] 窗格中,您可以在 [概觀]、[追蹤的變數] 或 [錯誤] 索引標籤中檢視關於例外狀況的資訊。[概觀] 索引標籤包含關於事件的一般資訊,例如 [E2EActivityID] (使用於端對端追蹤中的相互關聯)、[EventType]、[ExceptionTypeName]、[EventSourceId],以及其他事件相關資訊。[追蹤的變數] 索引標籤會顯示儲存在事件中的任何明確追蹤變數的值。[錯誤] 索引標籤會顯示有關失敗的例外狀況資訊 (若該資訊可用)。您可以使用此資訊,來深入了解 WCF 例外狀況以及對例外狀況進行疑難排解。

如需關於 WCF 例外狀況的額外內容,您可以在清單中的事件上按一下滑鼠右鍵,然後按一下 [檢視追蹤的 WF 執行個體]。此功能只支援從「工作流程服務」產生的 WCF 服務例外狀況,其中 [追蹤的 WF 執行個體] 頁面會顯示父系執行個體的所有可用事件。您也可以從內容功能表選擇 [檢視所有相關事件],以檢視 WCF 呼叫的所有相關事件。這樣會重新整理 [追蹤的事件] 頁面,並以與初始事件相關的所有事件填入。

注意

若要使用 [檢視所有相關事件] 選項,應用程式的監控等級必須設定為 [端對端監控] 以上。這個等級會指示監控基礎結構收集將端對端活動識別碼 (E2EActivityId) 與另一個端對端活動識別碼關聯的傳送事件。

或者,您可以查看 [服務例外狀況 - 依服務 (前 5 個) 分組] 欄位,並檢視 [呼叫失敗] 或 [呼叫發生錯誤] 的數目。區段摘要窗格中顯示的 [WCF 例外狀況] 總數包含 [呼叫失敗] 或 [呼叫發生錯誤] 的總數。按一下這些連結,也會顯示 [追蹤的事件] 頁面。視您按下的連結而定,您會看到 [WCF 失敗的呼叫] 或 [WCF 發生錯誤的呼叫] 的事件列舉清單。如前所述,選擇列舉清單中的其中一個呼叫事件,會在 [詳細資料] 窗格中產生額外的資訊。如果適用的話,您也可以按一下滑鼠右鍵,並選取 [檢視所有相關事件] 或 [檢視追蹤的 WF 執行個體] 選項。

如需如何取得更多追蹤事件特定資訊以協助解決問題的相關資訊,請參閱 Tracked Events Page

顯示 WCF 錯誤資訊

只有當應用程式的監控等級設定為 [端對端監控] 等級以上時,AppFabric 才會顯示 WCF 錯誤資訊。這個等級會擷取服務之間的 WCF 訊息流量,以及 WF 和 WCF 事件之間的關係。對於上述等級以下的監控等級 (包含 [健康情況監控]),下列區段不會顯示任何 WCF 錯誤資訊:

  • [AppFabric 儀表板] 頁面之 [WCF 呼叫歷程記錄] 區段中的 [錯誤] 或 [服務例外狀況] 欄位。

  • [追蹤的事件] 頁面之 [詳細資料] 窗格中的 [錯誤] 索引標籤。

  • [追蹤的事件] 頁面上顯示 WCF 事件做為查詢條件結果的任何區段。

例如,[追蹤的事件] 頁面上的 [錯誤] 索引標籤使用 WCF 傳送事件,從對應至 WCF 失敗的呼叫事件或發生錯誤的呼叫事件的「服務模型」例外狀況事件收集例外狀況資訊。若要監控的應用程式是設定為使用低於「端對端監控」等級的監控等級,則不會擷取 WCF 傳送事件。這樣會導致 [詳細資料] 窗格中的 [錯誤] 索引標籤不會顯示任何值。

若使用「端對端監控」等級來擷取傳送事件,且不想要收集額外的 WF 事件,以下是確保完成這個動作的步驟:

  1. 開啟位於 C:\Windows\Microsoft.NET\Framework(64)\v4.0.xxx\CONFIG\Web.config 的伺服器根組態檔。

  2. <trackingProfile name="HealthMonitoring Tracking Profile"></trackingProfile> 項目之間的所有程式碼 (包含這兩個項目) 複製到剪貼簿。您要進行複製的範例如下所示。

    <trackingProfile name="HealthMonitoring Tracking Profile">
       <workflow activityDefinitionId="*">
    <workflowInstanceQueries>
    <workflowInstanceQuery>
       <states>
    <state name="Started" />
    <state name="Completed" />
    <state name="Terminated" />
    <state name="Canceled" />
    <state name="Unsuspended" />
    <state name="Persisted" />
    <state name="Aborted" />
    <state name="UnhandledException" />
       </states>
    </workflowInstanceQuery>
    </workflowInstanceQueries>
    
    <activityStateQueries>
    <activityStateQuery activityName="*">
    <states>
    <state name="Closed" />
    </states>
    </activityStateQuery>
    </activityStateQueries>
    
    <faultPropagationQueries>
       <faultPropagationQuery faultSourceActivityName="*" faultHandlerActivityName="*" />
    </faultPropagationQueries>
    
    <customTrackingQueries>
    <customTrackingQuery name="*" activityName="*" />
    </customTrackingQueries>
    </workflow>
    </trackingProfile>
    
  3. 編輯應用程式的 Web.config 檔案。確認 <system.serviceModel><tracking><profiles><trackingProfile> 的元素巢狀結構完整且有效,您在接下來的步驟將在其中貼上 <trackingProfile> 元素的內容。

  4. <system.serviceModel><tracking><profiles> 區段的開頭處,新增 <remove name=”EndToEndMonitoring Tracking Profile” />

  5. 在相同的區段中,在剛新增之 remove 標記的下方,貼上在步驟 2 中複製到剪貼簿的程式碼片段。

  6. 在應用程式的 Web.config 檔案中,利用 EndToEndMonitoring Tracking Profile 來取代 HealthMonitoring Tracking Profile 文字。儲存檔案,然後結束編輯器。

  7. 使用 [設定應用程式的 WCF 與 WF] 對話方塊中的滑桿控制項,將 [應用程式監控等級] 變更為 [端對端]。AppFabric 會使用來自應用程式 Web.config 檔案的本機「端對端」追蹤設定檔項目,這個 Web.config 檔案只是偽裝為「端對端」追蹤設定檔項目之「健康情況監控」等級的追蹤設定檔。

另請參閱

其他資源

Tracked Events Page

  2012-03-05