使用 Application Insights 进行事件分析和可视化

作为 Azure Monitor 的一部分,Application Insights 是用于应用程序监视和诊断的可扩展平台。 它具有强大的分析和查询工具、可自定义的仪表板和可视化效果,以及包括自动报警在内的其他选项。 Application Insights 与 Service Fabric 的集成包括 Visual Studio 和 Azure 门户的工具体验,以及 Service Fabric 特定的指标,从而提供综合性的现成日志记录体验。 尽管使用 Application Insights 时会自动创建和收集许多日志,但我们建议将更多的自定义日志记录添加到应用程序以创建更丰富的诊断体验。

本文帮助解决以下常见问题:

  • 如何知道应用程序和服务中发生的情况,如何收集遥测数据?
  • 如何排查应用程序问题,尤其是服务之间相互通信的问题?
  • 如何获取与服务性能相关的指标,例如页面加载时间和 HTTP 请求数?

本文旨在介绍如何从 Application Insights 获取见解和进行故障排除。 如果想要了解如何使用 Service Fabric 设置和配置 Application Insights,请查看此教程

Application Insights 中的监视

使用 Service Fabric 时,可以直接使用 Application Insights。 在概述页中,Application Insights 提供有关服务的重要信息,例如响应时间和处理的请求数。 单击顶部的“搜索”按钮可以看到应用程序中最近请求的列表。 此外,可在此处查看失败的请求数,以及诊断可能发生的错误。

Application Insights Overview

在上图的右侧面板上,列表中有两种主要类型的条目:请求和事件。 在本例中,请求是通过 HTTP 请求对应用 API 发出的调用,事件是自定义事件,充当可以添加到代码中任意位置的遥测数据。 可以在用于处理自定义事件和指标的 Application Insights API 中进一步了解如何检测应用程序。 单击某个请求会显示下图所示的更多详细信息,包括 Application Insights Service Fabric NuGet 包中收集的特定于 Service Fabric 的数据。 在排查和了解应用程序的状态时,此信息非常有用;所有这些信息都可以在 Application Insights 中搜索

Screenshot that shows further details, including data specific to Service Fabric, which is collected in the Application Insights Service Fabric NuGet package.

Application Insights 提供指定的视图用于查询所有传入的数据。 选择“概述”页顶部的“指标资源管理器”可导航到 Application Insights 门户。 在此处,可以使用 Kusto 查询语言,针对前面所述的自定义事件、请求、异常、性能计数器和其他指标运行查询。 以下示例演示过去 1 小时内的所有请求。

Application Insights Request Details

若要进一步了解 Application Insights 门户的功能,请转到 Application Insights 门户文档

使用 EventFlow 配置 Application Insights

若正在使用 EventFlow 聚合事件,请务必导入 Microsoft.Diagnostics.EventFlow.Outputs.ApplicationInsights NuGet 包。 需要在 eventFlowConfig.jsonoutputs 节中包含以下代码:

"outputs": [
    {
        "type": "ApplicationInsights",
        "instrumentationKey": "***ADD INSTRUMENTATION KEY HERE***"
    }
]

请确保在筛选器中应用必要的更改,并包含任何其他输入(及其各自的 NuGet 包)。

Application Insights SDK

建议使用 EventFlow 和 WAD 作为聚合解决方案,因为它们允许使用更加模块化的方法,方便诊断和监视。也就是说,若要更改 EventFlow 的输出,不需要更改实际检测,仅需对配置文件进行简单修改。 如果决定投资使用 Application Insights,且不太可能改用其他平台,则应考虑使用 Application Insights 的新 SDK 来聚合事件并将这些事件发送到 Application Insights。 这意味着不再非得配置 EventFlow 将数据发送到 Application Insights,而是安装 Application Insight 的 Service Fabric NuGet 包。 可在此处找到此包的详细信息。

微服务和容器的 Application Insights 支持会显示一些开发中的新功能(当前仍为 beta 版本),通过它们可以使用更加丰富的现成 Application Insights 监视选项。 这包含依赖项跟踪(用于生成群集中所有服务和应用程序的 AppMap 以及它们之间的通信),以及来自服务更好的跟踪关联(有助于更好地查明应用程序或服务的工作流中的问题)。

若在 .NET 中进行开发,将来可能会使用一些 Service Fabric 编程模型,且愿意使用 Application Insights 作为可视化和分析事件和日志数据的平台,那我们建议选取 Application Insights SDK 途径作为监视和诊断工作流。 阅读 Application Insights 文档跟踪日志文档,开始使用 Application Insights 收集和显示日志。

配置 Application Insights 作为事件和日志输出的数分钟后,Application Insights 资源中应开始显示信息。 导航到 Application Insights 资源,此时会转到 Application Insights 资源仪表板。 选择 Application Insights 任务栏中的“搜索”,这样就可以查看它收到的最新跟踪,并通过这些跟踪进行筛选。

指标资源管理器 是非常有用的工具,能够基于应用程序、服务和群集报告的指标创建自定义仪表板。 请参阅了解 Application Insights 中的指标,基于收集的数据为自身设置数个图表。

单击“分析”会转到 Application Insights 分析门户,可在此处基于更广的范围和可选性查询事件和跟踪。 若要阅读详细信息,请转到 Application Insights 中的分析

后续步骤