事务搜索和诊断

Azure Monitor Application Insights 提供事务搜索,用于查明特定的遥测项和事务诊断,以便进行全面的端到端事务分析。

事务搜索:借助此体验,用户能够查找和检查各个遥测项,例如页面视图、异常和 Web 请求。 此外,它还提供查看已编码到应用程序中的日志跟踪和事件的功能。 它标识应用程序中的性能问题和错误。

事务诊断:通过全面深入了解端到端事务详细信息(包括依赖项和异常)快速识别组件中的问题。 通过搜索界面从搜索结果中选择一个项目来访问此功能。

统一诊断体验自动将所有受 Application Insights 监视的组件中的服务器端遥测关联到一个单独的视图。 如果你有多项资源,也没关系。 Application Insights 可检测基础关系,并可用于轻松诊断导致事务缓慢或失败的应用程序组件、依赖项或异常。

什么是组件?

组件是分布式或微服务应用程序的可独立部署的部件。 开发者或操作团队具有代码级可见性,或有权访问由这些应用程序组件生成的遥测。

  • 组件不同于“观察到的”外部依赖项,例如 SQL 和事件中心,你的团队或组织可能无权访问这些依赖项(代码或遥测)。
  • 组件在任意数目的服务器、角色或容器实例上运行。
  • 即使订阅不同,组件也可以是单独的 Application Insights 检测密钥。 组件还可以是向单个 Application Insights 检测密钥报告的不同角色。 新体验显示了所有组件的详细信息,而不论其设置方式。

备注

是否缺少相关的项链接? 所有相关的遥测都位于左侧的顶部底部部分。

事务诊断体验

此视图有四个关键部分:

  • 结果列表
  • 跨组件事务图
  • 与此操作相关的所有遥测的时序列表
  • 任何所选遥测项的细节窗格

显示视图的四个关键部分的屏幕截图。

跨组件事务图

此图提供使用水平条的时间线,表示请求的持续时间及各组件间的依赖项。 收集的任何异常也会标记在时间线上。

  • 此图表上的顶行表示入口点。 它是对此事务中调用的第一个组件的传入请求。 持续时间是指完成事务所用的总时间。
  • 对外部依赖项的任何调用都是简单的不可折叠行,以图标表示依赖项类型。
  • 对其它组件的调用均属于可折叠行。 每一行都与在组件处调用的特定操作对应。
  • 默认情况下,所选择的请求、依赖项或异常显示在一侧。 选择任意行以查看其详细信息

备注

对其他组件的调用有两行。 一行表示来自调用方组件的出站调用(依赖项)。 另一行对应于被调用组件上的入站请求。 可通过前导图标和样式不同的持续时间条来区分它们。

所有使用此操作 ID 的遥测

本部分以与此事务相关的所有遥测的时间序列显示平面列表视图。 它还显示自定义事件以及未在事务图中显示的跟踪。 可以将此列表筛选为由特定组件或调用生成的遥测。 可以在此列表中选择任意遥测项,并在一侧查看相应的详细信息

显示所有遥测的时间序列的屏幕截图。

所选遥测数据的详细信息

此可折叠窗格显示事务图或列表中任何所选项的详细信息。 “全部显示”列出了收集的所有标准属性。 任何自定义属性都在标准集下单独列出。 选择“调用堆栈”跟踪窗口下的省略号按钮 (...) 以获取复制跟踪的选项。 单击“打开探查器跟踪”和“打开调试快照”,在相应的详细信息窗格中查看代码级诊断信息。

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

搜索结果

此可折叠窗格会显示符合筛选条件的其他结果。 选择任何结果以更新前三个部分的相应详细信息。 我们试图找到最可能从所有组件中获得详细信息的样本,即使在任何一个组件中采样都是有效的。 这些示例显示为建议。

显示搜索结果的屏幕截图。

.NET Profiler 和 Snapshot Debugger

.NET ProfilerSnapshot Debugger 有助于对性能和失败问题进行代码级诊断。 通过此体验,仅需选择一次即可查看任意组件的 .NET Profiler 跟踪或快照。

如果无法让 .NET Profiler 正常工作,请联系 serviceprofilerhelp@microsoft.com。

如果无法让 Snapshot Debugger 正常工作,请联系 snapshothelp@microsoft.com。

显示 .NET Profiler 集成的屏幕截图。

常见问题解答

本部分提供常见问题的解答。

为什么我在图表上看到单个组件,而其他组件仅显示为外部依赖项,而没有任何详细信息?

可能的原因:

  • 是否使用 Application Insights 检测了其他组件?
  • 是否使用了最新的稳定 Application Insights SDK?
  • 如果这些组件是单独的 Application Insights 资源,验证你是否具有访问权限。 如果确实具有访问权限,并且使用了最新的 Application Insights SDK 来检测组件,请通过右上角的反馈通道告知我们。

依赖项具有重复的行。 这是预期行为吗?

当前,出站依赖项调用与入站请求分开显示。 通常情况下,这两种调用大致相同,但持续时间值因网络往返而不同。 可通过前导图标和样式不同的持续时间条来区分它们。 这份数据演示文稿是否包含令人困惑的内容? 欢迎提供反馈!

不同组件实例间的时钟偏差情况如何?

在事务图中针对时钟偏差调整了时间线。 可以在详细信息窗格中查看确切的时间戳,或使用 Log Analytics 进行查看。

此行为是设计使然。 所有组件的全部相关项都已显示在左侧(顶部和底部)。 新体验中有两个左侧未包含的相关项:此事件发生前后五分钟内的所有遥测,以及用户时间线。

有没有办法在使用 Application Insights JavaScript SDK 时减少每个事务的事件?

事务诊断体验显示共享操作 ID单个操作中的所有遥测数据。 默认情况下,Application Insights SDK for JavaScript 为每个唯一的页面视图创建一个新操作。 在单页应用程序 (SPA) 中,将仅生成一个页面视图事件,并对生成的所有遥测数据使用单个操作 ID。 这会导致许多事件与相同操作相关联。

在这些情况下,可以使用自动路由跟踪来自动创建新操作,以便在 SPA 中进行导航。 必须打开 enableAutoRouteTracking,以便在每次更新 URL 路由(逻辑页面视图出现)时生成页面视图。 若要手动刷新操作 ID,请调用 appInsights.properties.context.telemetryTrace.traceID = Microsoft.ApplicationInsights.Telemetry.Util.generateW3CId()。 手动触发 PageView 事件还将重置操作 ID。

为什么事务详细信息持续时间加起来不等于最高请求持续时间?

甘特图中未说明的时间是跟踪的依赖项未涵盖的时间。 出现此问题的原因是未自动或手动检测外部调用。 也可能是因为时间花在了处理上,而不是因为外部调用。

如果所有调用都已检测,则进程中可能是所花时间的根本原因。 .NET Profiler 是用于诊断进程的有用工具。

如果我在 Azure 门户中导航 Application Insights 时看到消息“错误检索数据”该怎么办?

此错误表示浏览器无法调用所需的 API 或 API 返回了失败响应。 若要解决此问题,请打开浏览器 InPrivate 窗口禁用正在运行的任何浏览器扩展,然后确定是否仍可以重现门户行为。 如果门户错误仍然发生,请尝试使用其他浏览器或其他计算机进行测试,从 API 调用失败的客户端计算机调查 DNS 或其他与网络相关的问题。 如果门户错误仍然存在并需要进一步调查,请在重现意外的门户行为并从 Azure 门户打开支持案例时收集浏览器网络跟踪

另请参阅