哪些数据可用于模型驱动应用?

与页面加载和统一接口 (UCI) 出站网络请求有关的性能数据可用于模型驱动应用。

哪种页面加载可用?

Type 性能和诊断数据可用
仪表板加载 (UCI) – 浏览器
仪表板加载 (UCI) – 嵌入式
仪表板加载 (UCI) - MobileApplication
仪表板加载 (UCI) – MailApp
仪表板加载 (UCI) - MobileApplication
EditForm 加载 (UCI) – 浏览器
EditForm 加载 (UCI) – 嵌入式
EditForm 加载 (UCI) – MailApp
EditForm 加载 (UCI) - MobileApplication
EntityList 加载 (UCI) – 浏览器
EntityList 加载 (UCI) - 嵌入式
EntityList 加载 (UCI) – MailApp
EntityList 加载 (UCI) - MobileApplication
启动应用 - (UCI) – 浏览器
启动应用 - (UCI) - 嵌入式
启动应用 - (UCI) – MailApp
启动应用 - (UCI) – MobileApplication
QuickCreateForm 加载 (UCI) – 浏览器
QuickCreateForm 加载 (UCI) – 嵌入式
QuickCreateForm 加载 (UCI) – MailApp
QuickCreateForm 加载 (UCI) – MobileApplication
SaveForm 目前不可用
CommandButton 操作 目前不可用

页面加载数据位于何处?

这些数据位于 Application Insights 中的 pageViews 表内。 用户每次在统一接口中加载页面时,都会记录一个条目。 记录的数据中仅包含“干净”加载。 不包含无法精确度量其持续时间的加载—快速导航、切换离开应用和警报消息。 因此,建议不要将这些数据用于与使用情况分析相关的精确数字。

customDimensions 中还有一些属性,用于提供统一接口页面加载的更多详细信息。 例如,下面的查询将返回 pageViews 表中所有属性的值。

pageViews
| take 1

Application Insights pageViews 表。

pageViews 表属性包括:

  • appModule:应用模块名称。
  • entityName:此属性在相关时存在。 当其已绑定到实体时,在 EditForm、EntityList 和 Dashboards 之类页面类型上提供。 在某些情况下,窗体未绑定到实体,因此值显示为未定义。
  • formIdformId 唯一标识表单,可用于关联影响该特定表单的问题。
  • 主机类型:浏览器/移动应用程序/嵌入式
  • isBoot:这是会话的第一次加载吗?
  • loadType
    • 0:首次访问特定页面类型(例如,首次访问窗体)。
    • 1:首次访问特定配置(例如,首次访问帐户窗体)。
    • 2:首次访问特定记录(例如,首次访问帐户记录 A2)。
    • 3:之前访问过这个 URL。
  • navigationOrigin:用户从中导航的页面类型。
  • networkConnectivityState:设备是否有连接。
  • pageName:页面加载的类型。
  • serverConnectivityState:App 是否连接到服务器。
  • syncRequestTime:等待同步请求所花费的时间。
  • coldLatency:网络延迟的第一次估计值,其中包括 SSL 握手时间。
  • warmLatency:网络延迟的后续估计值,即每个请求的典型预期延迟。
  • warmThroughput:网络的估计吞吐量,以 Kbps 为单位。

对于 Microsoft Dataverse 事件,Application Insights 中的 ID 字段或 operation_ParentIdx-ms-service-request-idoperationId 为失败诊断目的和支持请求在后端映射到 activityId

为 UCI 出站网络请求提供哪种类型的数据?

这些是为了呈现特定页面由统一接口对进行的其他依赖项进行的调用。 它们可能是对 Dataverse 或对 Azure DevOps 或 Office 之类其他集成的传出调用。 请使用以下查询获取这些数据(位于 UCI 请求依赖项表中):

dependencies
| where type == "UCI REQUEST"

UCI 请求依赖项表中有以下字段:

  • 名称:统一界面调用的 URL。

  • 目标:当前与 名称 相同。

  • 成功:调用是成功还是失败。

  • UserId: Dataverse 已登录用户的系统用户 ID。

  • Duration:通话的持续时间。

  • customDimensions:包含以下属性:

    Application Insights UCI 请求。

    • appModule:进行调用的 appModule。
    • bodySize:回复的大小,经过编码和解码。
    • cached:请求是转到本地缓存还是必须转到服务器。 如果最终用户在使用 Internet Explorer 浏览器,这不会正常工作。
    • download:下载回复所花费的时间。
    • stall:请求在浏览器队列中等待的时间。
    • ttfb:等待初始响应所花费的时间,也称为“第一个字节的时间”。除了等待服务器传递回复所花费的时间外,此时间还会捕获往返服务器的延迟。
    • coldLatency:网络延迟的第一次估计值,其中包括 SSL 握手时间。
    • warmLatency:网络延迟的后续估计值,即每个请求的典型预期延迟。
    • warmThroughput:网络的估计吞吐量,以 Kbps 为单位。

发现和分析方案

为什么我的某些用户在统一接口中时遇到性能低下?

发现和分析可能有用的一种情况是,某个区域(如亚洲)的用户报告某个窗体执行速度慢。 亚洲的这个用户可能正在访问北美地区的环境或组织。 详细信息除了显示与网络有关的持续时间,还将显示总加载时间。 这很可能是用户发现性能低下的原因。

可以使用 warmLatencywarmThroughputcoldLatency 属性了解页面加载和其他统一接口请求所用时间的明细,如下图中所示。

Application Insights UCI 慢。

在上面的请求中,统一接口请求所用时间比实际的 Dataverse API (Web API) 请求所用时间长。 此示例中的明细是 Dataverse API 调用的持续时间(56 毫秒)加上 CustomDimensions.warmLatency 的值(89 毫秒),总和接近整个运行的持续时间(144 毫秒)。 warmLatency 值是这个具体客户端速度慢的指标,可能是您可以使用以下查询在用户级别分析的问题:

dependencies
| where ['type'] == "UCI REQUEST"
| summarize avg(toint(customDimensions.warmLatency)), avg(toint(customDimensions.coldLatency)), avg(toint(customDimensions.warmThroughput)) by user_Id

pageViews
| summarize avg(toint(customDimensions.warmLatency)), avg(toint(customDimensions.coldLatency)), avg(toint(customDimensions.warmThroughput)) by user_Id

我能否确定用户如何访问系统?

Application Insights requests 表中 customDimensions 字段内的 userAgent 属性中有此数据。 可使用以下查询获取用户从中访问系统的不同来源的概况:

pageViews
| summarize count() by tostring(customDimensions.userAgent), user_Id

dependencies
| where ['type'] == "UCI REQUEST"
当 customDimensions.userAgent 值的开头为 用户是从何处访问系统的?
Mozilla 浏览器类型、版本
azure-logic-apps Azure 逻辑应用
PowerApps Power Apps
Microsoft Office Excel Office Excel
门户 门户
DynamicsDataIntegration 动态数据集成
XrmToolBox.exe XrmToolBox
PluginRegistration 插件注册
LogicAppsDesigner 逻辑应用设计器
Apache-HttpClient Apache HTTP 客户端
Microsoft Flow Power Automate
UnifiedServiceDesk Unified Service Desk
PostmanRuntime Postman
OfficeGroupsConnector Office 组连接器
Microsoft.Data.Mashup 插件 Power Query
Apache-Olingo Apache Olingo
Dalvik Android
Jakarta Commons-Http Jakarta
Informatica Informatica
axios Axios
node-fetch NodeJS
LinkedInBot LinkedInBot

如何获取从浏览器、移动设备或嵌入式应用程序进行访问的一些用户?

pageViews
| summarize count() by tostring(customDimensions.hostType)

下图显示此查询返回的示例结果集。

Application Insights 示例结果集。

如果将范围缩小到某个具体用户?

pageViews
| where user_Id == "[userid]"
| summarize count() by tostring(customDimensions.hostType)

如何在 Monitor 中使用 Application Insights?

Azure Monitor 有助于从统一界面端对会话进行实时故障排除。 Application Insights 中可能将提供端到端的事务请求。 若要查看给定操作的日志,请注意 Monitor 中事件详细信息页内某行汇中的活动 ID。 可使用以下查询找到日志:

union *
| where operation_Id contains "[ActivityIdHere]"

Monitor 是实时调试工具;但是,数小时内其中可能无数据。

用户为什么会遇到特定窗体有问题?

用户可共享自己在特定组织的统一接口中关于部分内的会话 ID。

设置 > 关于。

设置 > 关于会话 ID。

然后可使用此 ID 通过查看该会话中所有活动来查找问题。 使用以下查询:

union *
| where session_Id == '[sessionIdHere]'

不同位置中正在使用哪些窗体,这些位置中的窗体的加载性能如何?

pageViews
| summarize avg(duration) by name, client_City, client_CountryOrRegion

是否外部 API 调用发生了问题,是否可向下钻取到错误堆栈来帮助进行调试?

失败面板的浏览器视图中包含统一接口传出请求。 传输到 Dataverse 或组织的请求中包含组织 URL。 可能还有其他请求在传输到其他 URL(例如,在下图中,组织有一个向外调用到 dc.services.visualstudio.com 的自定义项)。 可查看端到端事务以进一步检查这些外部传出调用的失败。

浏览“失败”面板的视图。

是否可为特定窗体操作的性能阈值设置警报? 收到警报时,是否允许制作者对问题进行诊断和故障排除?

是的。 可在 Application Insights 中设置警报来监控应用程序的运行状况。