使用 Application Insights 分析系统生成的日志

您可以将画布应用程序连接到 Application Insights,这是 Azure Monitor的一项功能。 Application Insights 包含功能强大的分析工具,可以帮助您诊断问题,并可以了解用户实际对您的应用执行的操作。 您可以收集信息来帮助您做出更好的业务决策,并提高应用的质量。

在此快速入门中,我们使用一个名为 Kudos 的画布应用来探索画布应用中系统生成日志的概念,并将其应用于您的应用。 示例 Kudos 应用是员工参与应用套件的一部分,可从员工体验初学者套件中下载。

先决条件

备注

若要查看遥测信息,租户管理员必须启用画布应用见解。 在 Power Platform 管理中心中以管理员身份登录。 转到设置 > 租户设置 > 画布应用见解。 在画布应用见解窗格中,将开关设置为并保存您的更改。 有关详细信息,请参阅租户设置

可选

创建 Application Insights 资源

您需要创建一个 Application Insights 资源来存储事件,然后才能从应用发送系统生成的日志。

  1. 登录到 Azure 门户

  2. 搜索 Application Insights:

    Application Insights。

  3. 创建 Application Insights 资源:

    添加 Application Insights 资源。

  4. 输入合适的值,然后选择查看 + 创建

    有关更多详细信息,请参阅创建 Application Insights 资源

    创建资源。

  5. 创建 Application Insights 实例后,复制实例概览中的检测密钥,以在下一步中使用。

    复制检测密钥。

将您的应用连接到 Application Insights

备注

  • 指定检测密钥时,请注意可以跨租户发送数据。 即使目标 App Insights 实例与您的应用位于不同的租户中,跟踪事件也发送到与为该应用设置的检测密钥对应的 App Insights 资源。
  • 导入现有 .msapp 文件时请小心谨慎,因为可能存在 App Insights 的检测密钥。 导入后手动打开应用以验证正在使用的 App Insights 检测密钥是否正确。
  1. 登录到 Power Apps

  2. 在左侧导航窗格中选择应用。 从应用列表中,选择 Kudos 应用,然后选择编辑

    编辑 Kudos 应用。

    备注

    您也可以创建一个新应用,或编辑任何现有应用。

  3. 在左侧导航树视图中选择应用对象,然后粘贴检测密钥

    添加检测密钥。

  4. 保存发布您的应用。

  5. 播放已发布的应用并浏览不同屏幕。

当您浏览应用屏幕时,事件会自动记录到 Application Insights 中,包括使用情况详细信息,如:

  • 从哪里访问应用
  • 使用哪些设备
  • 使用的浏览器类型

重要

您必须播放发布的应用才能将事件发送到 Application Insights。 在 Power Apps Studio 中预览应用时,事件不会发送到 Application Insights。

在 Application Insights 中查看事件

  1. 登录到 Azure 门户,打开您之前创建的 Application Insights 资源。

  2. 在左侧导航窗格中向下滚动,然后在使用情况部分下选择用户

    备注

    用户视图显示应用的使用情况详细信息,如:

    • 查看应用的用户数
    • 用户会话数
    • 记录的事件数
    • 用户的操作系统和浏览器版本详细信息
    • 用户的区域和位置

    详细了解 Application Insights 中的用户、会话和事件分析

  3. 选择其中一个用户会话来钻取具体详细信息。 您可以看到会话长度和访问的屏幕等信息:

    用户的使用情况详细信息。

  4. 在左侧导航窗格,在使用情况部分下选择事件视图。 您可以看到所有应用会话中查看的所有屏幕的摘要:

    应用的事件详细信息。

提示

还有更多 Application Insights 功能可用,如:

创建自定义跟踪事件

您可以将自定义跟踪直接写入 Application Insights,然后开始分析特定于您的场景的信息。 Trace 函数允许您收集:

  • 屏幕上控件的详细使用情况信息
  • 哪些特定用户正在访问您的应用
  • 发生什么错误

跟踪还可以帮助诊断问题,因为当用户浏览应用和执行不同操作时,您可以发送信息线索。 发送到 Application Insights 的跟踪消息具有以下三种严重性之一:

  • Information
  • 警告
  • Error

根据您的场景,您可以选择发送具有适当严重性的跟踪消息。 您可以查询数据并根据严重性执行特定操作。

备注

如果您在记录任何个人数据,请注意您在遵守各种隐私法律和法规方面的义务。 有关详细信息,请参考 Microsoft 信任中心服务信任门户

现在,在您的应用中创建一个新组件来收集每个屏幕上的反馈,并将事件写入 Application Insights。

  1. 登录到 Power Apps

  2. 在左侧导航窗格中选择应用。 从应用列表中,选择 Kudos 应用,然后选择编辑

    备注

    您也可以创建一个新应用,或编辑现有应用。

  3. 树视图上选择组件选项:

    组件。

  4. 选择新建组件,然后将宽度调整为 200,将高度调整为 75:

    高度和宽度。

  5. 从菜单中选择插入,然后选择图标添加表情符号 - 哭脸表情符号 - 微笑

    添加图标。

  6. 选择新建自定义属性创建自定义属性:

    创建自定义属性。

  7. 输入属性名称显示名称,如 FeedbackSceen

  8. 输入属性说明

  9. 属性类型选择输入数据类型选择屏幕

    自定义属性。

    备注

    输入属性使您可以捕获屏幕名称及其组件,这样您可以将这些信息记录到 Application Insights 中。

  10. 树视图上选择组件,选择更多操作 (),然后选择重命名将组件重命名为一个有意义的名称,如 FeedbackComponent

    重命名组件和图标。

  11. 选择图标,选择更多操作 (),然后选择重命名将图标重命名为有意义的名称,如 FrownIconSmileIcon

  12. 选择 FrownIcon,选择 OnSelect 属性,然后在公式栏中输入以下表达式:

    Trace(
       "App Feedback",
       TraceSeverity.Information,
           {
             UserName: User().FullName,
             UserEmail: User().Email,
             Screen: FeedbackComponent.FeedbackScreen.Name,
             FeedbackValue: "-1"
           }
         );
    Notify("Thanks for your feedback!");
    

    哭脸图标公式。

    备注

    公式表达式将 UserNameUserEmailScreenFeedback(值为 -1)发送到 Application Insights。

  13. 选择 SmileIcon,选择 OnSelect 属性,然后在公式栏中输入以下表达式:

    Trace(
       "App Feedback",
       TraceSeverity.Information,
           {
             UserName: User().FullName,
             UserEmail: User().Email,
             Screen: FeedbackComponent.FeedbackScreen.Name,
             FeebackValue: "1"
           }
         );
    Notify("Thanks for your feedback!");
    
  14. 将组件添加到应用的屏幕之一:

    添加反馈组件。

  15. 选择保存,然后选择发布保存并发布您的应用。

  16. 播放发布的应用,然后从屏幕发送微笑和哭脸反馈。

    重要

    您必须播放发布的应用才能将事件发送到 Application Insights。 在 Power Apps Studio 中预览应用时,事件不会发送到 Application Insights。

    播放发布的应用。

在 Application Insights 中分析数据

现在,您可以开始在 Application Insights 中分析使用 Trace 函数从您的应用发送的数据。

  1. 登录到 Azure 门户,打开您之前创建的 Application Insights 资源:

    选择 Application Insights。

  2. 在左侧导航窗格的监视下选择日志

    选择日志。

  3. 输入以下查询并选择运行查看从应用收到的反馈:

    traces
    | where message == "App Feedback"
    | order by timestamp
    

    查看应用反馈。

  4. 在结果中选择一行,然后展开 customDimensions 字段。

    组件中微笑或哭脸图标的 OnSelect 事件的 ScreenUserNameUserEmailFeedbackValue 值已被记录。 还将记录发送到 Application Insights 的每个事件的值,如 appIdappNameappSessionId

    展开自定义维度。

  5. 使用以下示例查询,您可以扩展 JSON 自定义维度的属性,并将列投射到结果视图中。

    traces
        | extend customdims = parse_json(customDimensions)
        | where message == "App Feedback"
        | project timestamp
            , message
            , AppName = customdims.['ms-appName']
            , AppId = customdims.['ms-appId']
            , FeedbackFrom = customdims.UserEmail
            , Screen = customdims.Screen
            , FeedbackValue = customdims.FeedbackValue
        | order by timestamp desc
    

    扩展 customDimensions 查询。

    提示

    日志查询功能非常强大。 您可以使用它们来联接多个表、聚合大量数据以及执行复杂的操作。 详细了解日志查询

监视未处理的错误(试验)

[本部分包含预发行文档,有可能会有所更改。]

重要

  • 这是一项试验功能。
  • 试验功能不适合生产使用且功能可能受限。 这些功能在正式发布之前推出,以便客户可以提前使用并提供反馈。

您无法始终预测应用运行时可能发生的所有错误并进行计划。 未处理的 Power Fx 公式错误将作为横幅消息报告给用户。 也可以将错误报告给 Application Insights,以帮助您了解它的频率和严重性,而无需依赖应用用户报告问题。 您还可以设置在发生运行时错误时发出实时警报,以采取更主动的方法。

允许将错误传递到 Application Insights

您需要启用允许 Power Apps 将未处理的运行时错误传递给 Azure Application Insights 的设置。

警告

启用此设置可能会产生与 Application Insights 日志存储相关的额外成本。

要启用错误传递,请在保持您的画布应用处于打开状态以进行编辑时,转到设置 > 即将推出的功能 > 试验 > 将错误传递到 Azure Application Insights。 保存并发布您的应用。

启用“将错误传递到 Azure Application Insights”设置。

Application Insights 中的错误事件

用户在应用运行时遇到的未处理的 Power Fx 错误将报告给跟踪表。 未处理的错误可以通过事件消息“未处理的错误”来识别并与其他错误事件区分开来。 这些事件的“severityLevel”维度为 3 (TraceSeverity.Error)。

customDimension 属性的“错误”维度中提供了详细的错误消息。 在同一操作中发生多个错误的情况下,这些错误将合并到单个跟踪事件的“errors”维度中。 错误消息与实时调试会话期间监视器中报告的错误消息相同。

以下示例查询识别未处理的错误,并展开跟踪事件中包含的所有错误消息:

traces
    | where message == "Unhandled error"
    | extend customdims = parse_json(customDimensions)
    | extend errors = parse_json(tostring(customdims.['errors']))
    | mv-expand errors
    | project timestamp
        , itemId //unique identifier for the trace event
        , AppName = customdims.['ms-appName']
        , AppId = customdims.['ms-appId']
        , errors = errors.['Message']
    | order by timestamp desc

示例查询的示例输出。

相关性跟踪(试验)

[本部分包含预发行文档,有可能会有所更改。]

重要

  • 这是一项试验功能。
  • 试验功能不适合生产使用且功能可能受限。 这些功能在正式发布之前推出,以便客户可以提前使用并提供反馈。

与外部数据和服务的连接是大多数应用的基础。 相关性跟踪生成并传播上下文信息,以在画布应用及其连接中加入系统生成的日志,但有某些限制。 例如,您的应用可能会调用自定义连接器,而自定义连接器会调用 Azure 函数或其他 REST API。 相关性跟踪允许您将应用中采取的操作与跨层的基础 API 调用相关联。 这对于故障排除很有用。

画布应用相关性跟踪是上下文跟踪的一种实现,遵循 W3C 规范

启用相关性跟踪

警告

启用此设置可能会产生与 Application Insights 日志存储相关的额外成本。

要启用相关性跟踪功能,请转到设置 > 即将推出的功能 > 试验 > 启用 Azure Application Insights 相关性跟踪,同时保持画布应用处于打开状态以进行编辑。 保存并发布您的应用。

启用 Azure Application Insights 相关性跟踪。

限制

  • 相关性跟踪仅可用于自定义连接器。 不支持其他连接器类型。
  • 只有当连接服务也连接到 Application Insights 时,才会在 Application Insights 中捕获 HTTP 请求。

使用相关性跟踪

启用后,相关性跟踪会在画布应用的 Application Insights 实例的依赖项表中添加一个新的系统生成的日志事件。 在接收到来自网络调用的响应时将记录此事件。 依赖事件捕获网络调用的详细信息,包括请求和响应标头、响应状态代码和调用持续时间。

在依赖项表中记录的示例事件。

如果连接服务也连接到 Application Insights,在服务的 Application Insights 实例的请求表中会生成捕获请求的系统生成的额外日志事件。 有些 Azure 服务(如 Azure Functions)可以在没有来自 Azure 门户的任何编码的情况下连接。 画布应用或多个应用和连接服务可以连接到同一个 Application Insights 实例。

在请求表中记录的示例事件。

对支持的连接器的网络调用可以与“operation_Id”维度上的其他系统生成的日志连接。 以下示例查询显示在应用会话期间进行的网络调用以及发出的跟踪事件。

traces | union dependencies | union requests | union pageViews | union customEvents
| project timestamp
    , itemType
    , name
    , operation_Name
    , message
    , severityLevel
    , customDimensions
    , operation_Id
    , operation_ParentId
| where operation_Id == "0a7729e3e83c4e4d93cb4f51149f73b9" //placeholder operation_Id, replace
| order by timestamp asc

较早示例查询的示例输出。

将数据导出到 Power BI

您可以将 Application Insights 数据和查询结果导出到 Power BI 进行分析和数据呈现。

  1. 登录到 Azure 门户,打开您之前创建的 Application Insights 资源:

  2. 在左侧导航窗格的监视下选择日志

  3. 在日志分析查询窗口中,选择导出菜单。

  4. 选择导出到 Power BI(M 查询) 选项下载 Power BI 查询文件:

    导出 Power BI 查询。

  5. 在文本编辑器中打开下载的文件,然后将查询复制到剪贴板。

  6. 打开 Power BI。

  7. 主页功能区中选择获取数据菜单,然后选择空白查询

    Power BI 空白查询。

  8. 在查询窗口中,选择高级编辑器。 将查询粘贴到窗口中,选择完成,然后选择关闭并应用

    Power BI 高级查询。

您还可以在 Power BI 中创建图表和可视化效果来表示在应用中收到的反馈,以及作出基于数据的决策和确定操作。

图表和可视化效果。

默认跟踪事件上下文和维度

还将在每个“跟踪”事件的 customDimensions 属性中添加一组默认维度。 这些维度可用于标识事件发生的应用程序和应用程序会话。 如果您使用跟踪函数记录其他自定义数据,它们还将以自定义维度显示。

维度名称 表示
ms-appId 发送事件的应用的应用程序 ID。
ms-appname 发送事件的应用的应用程序名称。
ms-appSessionId 应用程序会话 ID。 在某些情况下,可能不会填充此值。 可用时,此值将替代标准 Application Insights sessionID 维度。
ms-tenantID 发布应用程序的租户的唯一标识符。
ms-environmentId 发布应用程序的环境的名称。
用户 ID 与会话关联的用户的唯一标识符。
ms-duration 衡量用户从一个屏幕导航到另一个屏幕所需时间的估算值。 此值将替代标准 Application Insights PageView 持续时间维度。
sessionId 可用于关联与单个应用程序会话关联的所有事件的会话 ID。 此值始终存在,建议用它来了解唯一会话计数。 此值取自播放器的会话 ID,在播放应用的过程中查看会话详细信息时显示。 会话 ID 有时可能会是一个默认、随机、唯一的 Application Insights 生成值。 此默认值不可靠,不会与任何特定于应用的参数关联。
持续时间 衡量用户从一个屏幕导航到另一个屏幕所需时间的估算值。 此值与 ms-duration 维度报告的持续时间相同。
ms-isTest 指示会话是否与 Test Studio 测试运行程序相关联。
ms-currentScreenName 用户从其导航出来的页面的名称(用于页面导航事件)。
ms-targetScreenName 用户导航到的页面的名称(用于页面导航事件)。

不受支持的情形

Application Insights 不支持以下情形。

  • 不捕获脱机播放器事件。
  • 在挂起应用时不捕获移动应用(iOS 和 Android)事件。
  • 不支持 GCC 和非公有云。

备注

您能告诉我们您的文档语言首选项吗? 进行简短调查。(请注意,此调查是英文版调查)

此调查大约需要七分钟。 不会收集个人数据(隐私声明)。