Application Insights 中的依赖项跟踪

依赖项是由应用程序调用的组件。 它通常是使用 HTTP、数据库或文件系统调用的服务。 Application Insights 可以度量依赖项调用的持续时间、调用结果是否失败,并收集依赖项名称等信息。 可以调查特定的依赖项调用,并将其与请求和异常相关联。

自动跟踪的依赖项

本节链接到的依赖调用列表会被自动检测为依赖项,而无需对应用程序代码进行任何额外修改。 这些依赖项在 Application Insights 的应用程序映射事务诊断视图中可视化。

如果依赖项不在列表中,你仍然可以手动跟踪,请参阅手动跟踪依赖项

有关所有自动收集的依赖项列表,请参阅添加和修改 .NET、Java、Node.js 和 Python 应用程序的 Azure Monitor OpenTelemetry 的语言特定选项卡

注释

对于网页, Application Insights JavaScript SDK 会自动收集通过 XMLHttpRequest 生成的 AJAX 依赖项。

自动依赖项监视的工作原理

系统会使用以下方法之一自动收集依赖项,具体取决于遥测收集方法。

  • OpenTelemetry 检测库用于自动收集 HTTP、SQL 和Azure SDK调用等依赖项。 这些库使用 DiagnosticSource 或等效机制连接到支持的框架和客户端库。

  • 在受支持的环境中,如 Azure App Servicesautoinstrumentation默认可用并启用,在运行时注入遥测收集器而不更改代码。

  • 在其他环境中,开发人员可以使用 Azure.Monitor.OpenTelemetry.* 包和 OpenTelemetry API 手动配置检测工具,以控制需跟踪的依赖项及其扩展或筛选的方式。

手动跟踪依赖项

当自动收集不满足需求时,可以手动跟踪依赖项。

若要了解如何手动跟踪依赖项,请参阅 添加和修改 Azure Monitor OpenTelemetry,以用于 .NET、Java、Node.js 和 Python 应用程序

注释

对于网页,可以使用 Application Insights JavaScript SDK 启用 真实用户监视

在何处查找依赖项数据

Application Insights 中的以下工具和视图可用于轻松浏览和分析依赖项遥测:

Views Description
应用地图 以直观表现形式展示应用程序依赖项及其与外部服务之间关系。
事务诊断 显示端到端事务详细信息,将服务器端操作与依赖项调用相关联。
故障和性能视图中的“浏览器”选项卡 突出显示来自客户端浏览器的 AJAX 调用。
故障和性能视图中的“服务器”选项卡 允许你深入查看缓慢或失败的服务器请求,并检查相关的依赖项调用。

查看从请求到依赖项的跟踪示例,以及与依赖项调用失败相关的失败请求示例。
Azure Monitor Logs 对依赖项遥测启用高级查询和分析。

请参阅使用 KQL 跟踪依赖项的示例

诊断慢速请求

每个请求事件都与处理请求时跟踪的依赖项调用、异常和其他事件相关联。 因此,如果某些请求的执行状态不佳,可以判断其原因是否为某个依赖项的响应速度缓慢。

从发往依赖项的请求开始跟踪

选择左侧的"性能"选项卡,然后选择顶部的"依赖项"选项卡

在“整体”下选择某个依赖项名称。 选择一个依赖项后,会显示该依赖项的持续时间分布图。

显示打开的“依赖项”选项卡的屏幕截图,在该选项卡的图表中可以选择依赖项名称。

选择右下角的“示例”按钮。 然后选择一个示例以查看端到端事务详细信息。

显示选择示例以查看端到端事务详细信息的屏幕截图。

失败的请求

失败的请求还可能与依赖项的失败调用相关联。

选择左侧的“失败”选项卡,然后选择顶部的“依赖项”选项卡

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

在此处可以看到失败的依赖项计数。 若要获取有关失败项的详细信息,请在底部的表中选择一个依赖项名称。 选择右下方的“依赖项”按钮以查看端到端事务详细信息

日志(分析)

可以跟踪 Kusto 查询语言中的依赖项。 下面是一些示例。

  • 查找所有失败的依赖项调用:

    dependencies | where success != "True" | take 10
    
  • 查找 AJAX 调用:

    dependencies | where client_Type == "Browser" | take 10
    
  • 查找与请求关联的依赖项调用:

    dependencies
    | where timestamp > ago(1d) and  client_Type != "Browser"
    | join (requests | where timestamp > ago(1d))
        on operation_Id  
    
  • 查找与页面视图关联的 AJAX 调用:

    dependencies
    | where timestamp > ago(1d) and  client_Type == "Browser"
    | join (browserTimings | where timestamp > ago(1d))
        on operation_Id
    

开源 SDK

与每个 Application Insights SDK 一样,依赖项收集模块也open source。 查看并参与官方GitHub仓库的代码开发或报告问题。

后续步骤