依赖项是由应用程序调用的组件。 它通常是使用 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 存储库中阅读和贡献代码,或者报告问题。
后续步骤
- 查看依赖项跟踪常见问题解答中的常见问题。
- 如要了解 Application Insights 相关信息,请参阅数据模型。
- 查看 Application Insights 支持的平台。