共用方式為

Application Insights 中的依赖项跟踪

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

自动跟踪的依赖项

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

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

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

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

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

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

  • 在受支持的环境(如 Azure 应用服务)中,自动检测功能可用并默认启用,此功能会在运行时注入遥测收集器,而无需更改代码。

  • 在其他环境中,开发人员可以使用 Azure.Monitor.OpenTelemetry.* 包和 OpenTelemetry API 手动配置检测,以控制跟踪哪些依赖项以及如何对其进行扩充或筛选。

手动跟踪依赖项

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

小窍门

对于新项目,我们建议使用 OpenTelemetry 来提高灵活性和未来兼容性。

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

在何处查找依赖项数据

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

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

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

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

诊断慢速请求

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

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

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

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

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

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

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

分析实时站点

.NET Profiler 可跟踪对实时站点的 HTTP 调用,并显示代码中有哪些函数花费了最长的时间。

失败的请求

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

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

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

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

日志(分析)

可以跟踪 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 一样,依赖项收集模块也是开源的。 请在官方 GitHub 存储库中阅读和贡献代码,或者报告问题。

后续步骤