資料流程目前提供 Dataverse API 傳入呼叫、Dataverse 外掛程式執行呼叫和 Dataverse SDK 呼叫相關的效能資料。 還提供外掛程式和 Dataverse SDK 作業中失敗的資料。
Dataverse API 傳入呼叫
以下是對 Dataverse API 進行的呼叫。 它們可以來自整合介面 (UCI)、舊版 Web 用戶端、使用 SDK 的自訂用戶端等。 您可以在 Application Insights 的要求資料表中找到,其中有下列欄位。
名稱:要求的類型。 這分為兩個類別:
- Web API 要求:整合介面和新式用戶端通常用的 OData v4 端點要求。 此要求會被轉換成兩者通用的作業。 Web API 啟用 RESTful 程式設計模型的「包裝」,但是在接收資料之後,所有的資料都會在伺服器中變得相同。 當回覆傳回時,如果該要求來自 Web API,則將其轉換為 JSON。
- 組織服務要求:向 SDK 用戶端或舊版 Web 用戶端使用的組織 API 端點發出的要求。
期間:伺服器回應要求所花費的時間。
URL:進行呼叫的目標 URL。
CustomDimensions:
UserAgent:Application Insights 自動以 PC 填入使用者代理程式欄位,因為這些記錄是從資料中心的伺服器所推送的記錄。 Application Insights 不允許覆寫使用者 Agent 欄位。 有時會無法填入使用者代理程式欄位。 使用以下查詢,查看提出呼叫的使用者代理程式:
requests | summarize count() by tostring(customDimensions.userAgent)
Operation_Name:要顯示在檢視表之作業的易讀名稱,例如端對端交易檢視表。
Dataverse 外掛程式執行記錄
這些針對指定作業執行之自訂外掛程式的記錄可在相依性資料表中找到。 以下是範例查詢:
dependencies
| where type == "Plugin"
| take 100
- 名稱/目標:要執行之外掛程式的完整類型名稱。
- 期間:執行外掛程式所花費的時間。
-
CustomDimensions:
- 深度:呼叫堆疊中目前執行的深度。
- EntityName:外掛程式所處理的實體名稱。
-
IsolationType:指示外掛程式是否要在沙箱中執行的值:
- 1:無
- 2:沙箱
- 3:外部
- PluginName:外掛程式的使用者易記名稱。
- PluginType:要執行的外掛程式類型名稱。
- PluginVersion:發行的外掛程式版本。 這裡的目的是為了能使用此資訊來疑難排解版本更新。
-
階段:對應至下列值:
- 預先驗證 = 10
- 預操作 = 20
- PreOperationBeforeExternalPlugins = 15
- PreOperationAfterExternalPlugins = 25
- 主要作業 = 30
- PostOperationBeforeExternalPlugins = 35
- PostOperationAfterExternalPlugins = 45
- PostOperation = 40
- 「PostOperation」已棄用 = 50
- StepName:SDK 訊息處理步驟的名稱。 這通常是由外掛程式註冊工具使用 PluginName、PluginType 以及執行個體 ErrorMessageTest.ThrowException: Creation of account 作業名稱的相關資訊所產生的。
外掛程式的程式碼中的遙測
若要了解外掛程式的程式碼內部發生的問題,您可在外掛程式的程式碼中使用 Microsoft.Xrm.Sdk.PluginTelemetry.ILogger 介面,將遙測資料直接寫入 Application Insights 資源中,以加入來自外掛程式的自訂遙測。 其他資訊:使用 ILogger 將遙測寫入 Application Insights 資源 (預覽版)
Dataverse SDK 記錄
這些是作為傳入要求一部分觸發的 SDK 作業記錄。 這些會記錄到 Application Insights 中的相依性資料表,因為這些記錄檔會當做執行要求的相依性進行追蹤。 它們是由類型名稱識別,以 SDK 開頭。 以下是範例查詢:
dependencies
| where type startswith "SDK"
| take 10
- 類型:觸發的 SDK 要求類型。 範例包括 Retrieve、RetrieveMultiple、FetchXmlToQueryExpression 和 WhoAmI。
- 名稱/目標:此為 SDK 作業所針對的實體名稱。
-
CustomDimensions:
- ClientType:發出呼叫的用戶端類型。 某些可能的值為 Web、UCIClient 和 OutlookFull。
- EntityId:使用中實體的唯一識別碼。
- EntityName:使用中實體的名稱。
例外狀況
您會在 Application Insights 中看到外掛程式和 SDK 作業中失敗的詳細資料。 Application Insights 中的例外狀況資料表為失敗面板提供支援。 這些失敗詳細資料會與端對端檢視中的外掛程式和 SDK 呼叫中的其餘事件關聯。 盡可能將所有可用的資訊新增至資料行,在沒有完全相符的資料行時新增到 customDimensions。
您會發現例外狀況資料表中的部分欄位並未填入。 這是因為只有在使用 Application Insights SDK 從來源發出記錄時,才能設定這些欄位。 此功能會收集平台遙測,然後依照 Application Insights 結構描述將其發送至 Application Insights 中。
exceptions
| take 10
此查詢將會傳回例外狀況資料表中的所有屬性詳細資料。
- problemId/type:例外狀況的類型。
- outerMessage:例外狀況訊息。
-
customDimensions:
- clientType:發出呼叫的用戶端類型。 某些可能的值為 Web、UCIClient 和 OutlookFull。
- exceptionSource:擲回例外狀況的外掛程式或點。
- entityName:使用中實體的名稱。
- pluginName:擲回例外狀況之外掛程式的名稱。
如果使用者報告錯誤,您可以用使用者識別碼 (Microsoft Entra ID 識別碼) 來了解例外狀況資料表的詳細資料。
exceptions
| where user_Id == '00aa00aa-bb11-cc22-dd33-44ee44ee44ee'
實體識別碼與實體名稱可在相依性資料表的 customDimensions 中使用。
dependencies
| where type == "SDK Retrieve"
常見問題集 (FAQ)
以下是與 Dataverse 的遙測事件相關的常見問題。
如何判斷我的外掛程式升級是否導致效能下降?
dependencies
| where ['type'] == "Plugin"
| where name startswith "[InsertYourPluginName]"
| summarize avg(duration) by name
外掛程式名稱也應包含自訂外掛程式的版本。
根據當天的時間或位置,API 在報告問題之前的表現如何? API 效能是逐步降低或突然降低?
requests
| where url == "https://<URLHere>"
| summarize avg(duration), count() by bin(timestamp, 1h)
| render timechart
在此圖表中,我們可以看到 API 端點在一段時間內的效能與發出要求數量的關係。
您也可以根據 Application Insights 中的特定 API 效能設定警示。
是否可以向下切入特定時間或特定使用者的錯誤或失敗,以瞭解呼叫堆疊?
查看失敗面板,其提供指定時間間隔中失敗的概述。 然後,您可以根據 API 呼叫或相依性類型縮小至特定的失敗,以查看端對端檢視。
我可以建立自訂儀表板嗎?
是。 您可以使用 Application Insights 建置自訂儀表板。
我可以確定使用高峰期間的外掛程式使用效能 (回應時間) 和失敗率嗎?
可以。 請參見以下範例查詢,瞭解外掛程式的執行方式。
dependencies
| where ['type'] == "Plugin"
| where name == "[Plugin name here]"
| summarize avg(duration) by bin(timestamp, 1h)
| render timechart
此遙測可以節流嗎?
是。 目前提供基本的 429 個錯誤詳細資料。
我可以瞭解執行路徑嗎? 外掛程式發出的呼叫是否會降低外掛程式的速度?
可以。 您可以查看針對任何要求執行的所有訊息和外掛程式。
會記錄所有訊息和外掛程式執行的持續時間。 如果有任何外掛程式花費較長的時間,您就能找出該外掛程式。 如果外掛程式要對 Dataverse 進行回撥,則會記錄該呼叫的持續時間。 未來部署規劃使用之外掛程式的更多相關資訊。
外掛程式所進行的任何輸出呼叫都會自動記錄為相依性。
我可以查看特定要求的遙測嗎?
Dataverse 會在對所有要求的標頭回應中傳回 x-ms-service-requestId。 您可以使用此 requestId 查詢所有遙測。
union *
| where operation_ParentId contains <requestId>