Microsoft Dataverse 的遙測事件
資料流程目前提供 Dataverse API 傳入呼叫、Dataverse 外掛程式執行呼叫和 Dataverse SDK 呼叫相關的效能資料。 它也提供外掛程式和 Dataverse SDK 作業失敗的資料。
Dataverse API 撥入電話
以下是對 Dataverse API 進行的呼叫。 它們可以來自整合介面 (UCI)、舊版 Web 用戶端、使用 SDK 的自訂用戶端等。 您可以在的 Application Insights 的要求資料表中找到它們,其中包含以下欄位。
Name:請求的類型。 這分為兩個類別:
- Web API 請求:對整合介面和新式用戶端常用的 OData v4 端點的請求。 此要求會被轉換成兩者通用的作業。 Web API 啟用 RESTful 程式設計模型的「包裝」,但是在接收資料之後,所有的資料都會在伺服器中變得相同。 當回覆傳回時,如果該要求來自 Web API,則將其轉換為 JSON。
- 組織服務請求:對 SDK 用戶端或舊版 Web 用戶端使用的組織 API 端點的請求。
持續時間:伺服器回應請求所花費的時間。
Url:進行調用的 URL。
CustomDimensions:
UserAgent: Application Insights 當這些日誌是從數據中心的伺服器推送時,自動用 PC 填充使用者代理字段。 Application Insights 不允許覆寫使用者代理程式欄位。 有時會無法填入使用者代理程式欄位。 使用以下查詢,查看提出呼叫的使用者代理程式:
requests | summarize count() by tostring(customDimensions.userAgent)
Operation_Name:要在視圖 (如端到端事務檢視) 上顯示的操作的可讀名稱。
Dataverse 外掛程式執行記錄
這些針對指定作業執行之自訂外掛程式的記錄可在相依性資料表中找到。 以下是範例查詢:
dependencies
| where type == "Plugin"
| take 100
- Name/Target:正在執行的外掛程式的完全限定類型名稱。
- Duration (持續時間):執行外掛程式所花費的時間。
- CustomDimensions:
- Depth:調用堆疊中執行的當前 Depth 。
- EntityName:外掛程式所作用於的實體的名稱。
- IsolationType:一個 值 ,該值指示是否在沙盒中執行外掛程式:
- 1:無
- 2:沙箱
- 3:外部
- PluginName:外掛程式的使用者友好名稱。
- PluginType:正在執行的外掛程式類型的名稱。
- PluginVersion:已發佈外掛程式的版本。 這裡的目的是為了能使用此資訊來疑難排解版本更新。
- Stage:映射到以下值:
- PreValidation = 10
- PreOperation = 20
- PreOperationBeforeExternalPlugins = 15
- PreOperationAfterExternalPlugins = 25
- MainOperation = 30
- PostOperationBeforeExternalPlugins = 35
- PostOperationAfterExternalPlugins = 45
- PostOperation = 40
- PostOperationDeprecated = 50
- StepName:SDK 消息處理步驟的名稱。 這通常是由外掛程式註冊工具使用 PluginName、PluginType 以及執行個體 ErrorMessageTest.ThrowException: Creation of account 作業名稱的相關資訊所產生的。
外掛程式程式碼中的遙測
要瞭解外掛程式代碼中 發生 的情況,您可以使用 . MicrosoftXrm.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。
- Name/Target (名稱/目標):這是 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>