使用 Application Insights 查找并诊断运行时异常

Application Insights 从应用程序收集遥测数据,帮助确定和诊断运行时异常。 本教程引导完成对应用程序执行此流程的步骤。 学习如何:

  • 修改项目来实现异常跟踪。
  • 确定应用程序不同组件出现的异常。
  • 查看异常的详细信息。
  • 下载异常的快照以供 Visual Studio 调试。
  • 使用查询语言分析失败请求的详细信息。
  • 新建工作项来更正故障代码。

先决条件

为完成此教程:

  • 使用以下工作负荷安装 Visual Studio 2019
    • ASP.NET 和 Web 开发
    • Azure 开发
  • 下载并安装 Visual Studio Snapshot Debugger
  • 启用 Visual Studio Snapshot Debugger
  • 将 .NET 应用程序部署到 Azure 并启用 Application Insights SDK
  • 修改你的开发或测试环境中的代码以生成异常,因为本教程会跟踪你的应用程序中异常的标识。

登录 Azure

登录 Azure 门户

分析故障

Application Insights 收集应用程序中的任何故障。 它让你可以查看不同操作的故障频率,以帮助你将精力集中在影响最大的问题上。 用户可随后深入探索这些故障的详细信息,从而确定根本原因。

  1. 选择“Application Insights”,然后选择订阅 。

  2. 若要打开“故障”面板,请选择“调查”菜单下的“故障”,或选择“失败的请求”一图。

    显示失败请求的屏幕截图。

  3. 失败的请求”面板将为应用程序的每个操作显示失败请求计数和受影响用户的数量。 通过按用户对此类信息排序,可确定对用户具有最大影响的故障。 在此示例中,GET Employees/CreateGET Customers/Details 是有待调查的可能候选对象,因为其拥有大量失败的请求和受影响的用户。 选择操作后,右侧面板会显示有关此操作的进一步信息。

    显示“失败的请求”窗格的屏幕截图。

  4. 缩短时间范围,详细查看故障率出现峰值的时段。

    显示“失败的请求”窗口的屏幕截图。

  5. 选择包含所筛选结果数目的按钮可查看相关的示例。 “建议”示例中有来自所有组件的相关遥测数据,即使采样可能已经在其中某一个上生效。 选择搜索结果可查看有关失败的详细信息。

    显示失败请求示例的屏幕截图。

  6. 失败请求的详细信息会展示甘特图,该图显示了此事务中有两个依赖项失败,这两个失败所用时间占事务总持续时间的 50% 以上。 此体验提供的所有遥测跨分布式应用程序的多个组件,这些组件与此操作 ID 相关。 可以选择任意项,然后在右侧查看其详细信息。

    显示失败请求详细信息的屏幕截图。

  7. 操作详细信息还显示了一项格式异常,它似乎是故障的原因。 你可以看到,这是邮政编码无效导致的。 可以打开调试快照,在 Visual Studio 中查看代码级别的调试信息。

    显示异常详细信息的屏幕截图。

确定故障代码

Snapshot Debugger 收集应用程序中最频繁出现的异常的快照,帮助在生产中诊断其根本原因。 可在门户中查看调试快照,查看调用堆栈并检查每个调用堆栈帧中的变量。 之后,可以通过下载快照并在 Visual Studio 2019 Enterprise 中打开它来调试源代码。

  1. 在异常的属性中,选择“打开调试快照”。

  2. 此时会打开“调试快照”面板,并显示请求的调用堆栈。 选择任意方法来查看提交请求时所有局部变量的值。 从此示例的第一个方法开始,你会看到没有值的局部变量。

    显示“调试快照”窗格的屏幕截图。

  3. 具有有效值的第一个调用是 ValidZipCode。 可以看到,邮政编码被提供了无法转换为整数的字母。 这看起来是代码中的问题,必须更正。

    显示代码中必须更正的错误的屏幕截图。

  4. 然后,可以将此快照下载到 Visual Studio 中,你可在其中找到必须更正的代码。 为此,请选择“下载快照”。

  5. 快照会加载到 Visual Studio 中。

  6. 现在可在 Visual Studio Enterprise 中运行调试会话,以便快速确定导致异常的代码行。

    显示了代码中的异常的屏幕截图。

使用分析数据

Application Insights 收集的所有数据都存储在 Azure Log Analytics 中,Azure Log Analytics 提供了一种丰富查询语言,方便使用各种方式分析数据。 你可以使用此数据来分析生成了你正在研究的异常的请求。

  1. 选择代码上方的 CodeLens 信息,查看 Application Insights 提供的遥测数据。

    显示 CodeLens 中的代码的屏幕截图。

  2. 选择“分析影响”以打开 Application Insights Analytics。 它具有多个提供失败请求详细信息(比如受影响的用户、浏览器和区域)的查询。

    显示包含多个查询的 Application Insights 窗口的屏幕截图。

添加工作项

如果将 Application Insights 连接到跟踪系统(比如 Azure DevOps 或 GitHub),则可直接通过 Application Insights 创建工作项。

  1. 返回到 Application Insights 中的“异常属性”面板。

  2. 选择“新建工作项”。

  3. 新建工作项”面板将打开,其中包含有关异常的详细信息。 可以在保存之前添加更多信息。

    显示“新建工作项”窗格的屏幕截图。

后续步骤

现在,你已学会如何确定运行时异常,请继续完成下一教程,学习如何确定和诊断性能问题。