事务搜索和诊断
Azure Monitor Application Insights 提供事务搜索,用于查明特定的遥测项和事务诊断,以便进行全面的端到端事务分析。
事务搜索:借助此体验,用户能够查找和检查各个遥测项,例如页面视图、异常和 Web 请求。 此外,它还提供查看已编码到应用程序中的日志跟踪和事件的功能。 它标识应用程序中的性能问题和错误。
事务诊断:通过全面深入了解端到端事务详细信息(包括依赖项和异常)快速识别组件中的问题。 通过搜索界面从搜索结果中选择一个项目来访问此功能。
统一诊断体验自动将所有受 Application Insights 监视的组件中的服务器端遥测关联到一个单独的视图。 如果你有多项资源,也没关系。 Application Insights 可检测基础关系,并可用于轻松诊断导致事务缓慢或失败的应用程序组件、依赖项或异常。
组件是分布式或微服务应用程序的可独立部署的部件。 开发者或操作团队具有代码级可见性,或有权访问由这些应用程序组件生成的遥测。
- 组件不同于“观察到的”外部依赖项,例如 SQL 和事件中心,你的团队或组织可能无权访问这些依赖项(代码或遥测)。
- 组件在任意数目的服务器、角色或容器实例上运行。
- 即使订阅不同,组件也可以是单独的 Application Insights 检测密钥。 组件还可以是向单个 Application Insights 检测密钥报告的不同角色。 新体验显示了所有组件的详细信息,而不论其设置方式。
此视图有四个关键部分:
- 结果列表
- 跨组件事务图
- 与此操作相关的所有遥测的时序列表
- 任何所选遥测项的细节窗格
此图提供使用水平条的时间线,表示请求的持续时间及各组件间的依赖项。 收集的任何异常也会标记在时间线上。
- 此图表上的顶行表示入口点。 它是对此事务中调用的第一个组件的传入请求。 持续时间是指完成事务所用的总时间。
- 对外部依赖项的任何调用都是简单的不可折叠行,以图标表示依赖项类型。
- 对其它组件的调用均属于可折叠行。 每一行都与在组件处调用的特定操作对应。
- 默认情况下,所选择的请求、依赖项或异常显示在一侧。 选择任意行以查看其详细信息。
备注
对其他组件的调用有两行。 一行表示来自调用方组件的出站调用(依赖项)。 另一行对应于被调用组件上的入站请求。 可通过前导图标和样式不同的持续时间条来区分它们。
本部分以与此事务相关的所有遥测的时间序列显示平面列表视图。 它还显示自定义事件以及未在事务图中显示的跟踪。 可以将此列表筛选为由特定组件或调用生成的遥测。 可以在此列表中选择任意遥测项,并在一侧查看相应的详细信息。
此可折叠窗格显示事务图或列表中任何所选项的详细信息。 “全部显示”列出了收集的所有标准属性。 任何自定义属性都在标准集下单独列出。 选择“调用堆栈”跟踪窗口下的省略号按钮 (...) 以获取复制跟踪的选项。 单击“打开探查器跟踪”和“打开调试快照”,在相应的详细信息窗格中查看代码级诊断信息。
此可折叠窗格会显示符合筛选条件的其他结果。 选择任何结果以更新前三个部分的相应详细信息。 我们试图找到最可能从所有组件中获得详细信息的样本,即使在任何一个组件中采样都是有效的。 这些示例显示为建议。
.NET Profiler 或 Snapshot Debugger 有助于对性能和失败问题进行代码级诊断。 通过此体验,仅需选择一次即可查看任意组件的 .NET Profiler 跟踪或快照。
如果无法让 .NET Profiler 正常工作,请联系 serviceprofilerhelp@microsoft.com。
如果无法让 Snapshot Debugger 正常工作,请联系 snapshothelp@microsoft.com。
本部分提供常见问题的解答。
可能的原因:
- 是否使用 Application Insights 检测了其他组件?
- 是否使用了最新的稳定 Application Insights SDK?
- 如果这些组件是单独的 Application Insights 资源,验证你是否具有访问权限。 如果确实具有访问权限,并且使用了最新的 Application Insights SDK 来检测组件,请通过右上角的反馈通道告知我们。
当前,出站依赖项调用与入站请求分开显示。 通常情况下,这两种调用大致相同,但持续时间值因网络往返而不同。 可通过前导图标和样式不同的持续时间条来区分它们。 这份数据演示文稿是否包含令人困惑的内容? 欢迎提供反馈!
在事务图中针对时钟偏差调整了时间线。 可以在详细信息窗格中查看确切的时间戳,或使用 Log Analytics 进行查看。
此行为是设计使然。 所有组件的全部相关项都已显示在左侧(顶部和底部)。 新体验中有两个左侧未包含的相关项:此事件发生前后五分钟内的所有遥测,以及用户时间线。
事务诊断体验显示共享操作 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 是用于诊断进程的有用工具。
此错误表示浏览器无法调用所需的 API 或 API 返回了失败响应。 若要解决此问题,请打开浏览器 InPrivate 窗口并禁用正在运行的任何浏览器扩展,然后确定是否仍可以重现门户行为。 如果门户错误仍然发生,请尝试使用其他浏览器或其他计算机进行测试,从 API 调用失败的客户端计算机调查 DNS 或其他与网络相关的问题。 如果门户错误仍然存在并需要进一步调查,请在重现意外的门户行为并从 Azure 门户打开支持案例时收集浏览器网络跟踪。