Application Insights 从应用程序收集遥测数据,以帮助诊断故障并分析事务处理速度缓慢的原因。 它包括四个基本工具:
故障 - 跟踪错误、异常和故障,为快速解决问题和增强稳定性提供清晰的见解。
性能 - 通过显示响应时间和作计数快速识别和帮助解决应用程序瓶颈。
事务搜索 - 允许用户查找和检查各个遥测项,例如页面视图、异常和自定义事件。
事务诊断 - 通过全面深入了解端到端事务详细信息,帮助快速识别组件中的问题。
这些工具共同确保 Web 应用程序的持续运行状况和效率。 你可以使用它们来确定对用户影响最大的问题或增强功能。
若要访问 Application Insights 中的“失败”视图,请在“概述”窗格上选择“失败的请求”图,或在资源菜单中的“调查”类别下选择“失败”。
注释
可以通过其他三种体验中的任何一种访问 事务诊断 。 有关详细信息,请参阅 分析遥测数据。
概述
注释
除了 Azure Monitor OpenTelemetry 发行版或 JavaScript SDK 发送的默认遥测之外,您可以添加和修改遥测(例如,自定义事件)。
有关详细信息,请参阅 添加和修改适用于 .NET、Java、Node.js和 Python 应用程序的 Azure Monitor OpenTelemetry。
筛选遥测数据
默认筛选器
所有体验都允许按时间范围筛选遥测数据。 此外,每个体验都有其自己的默认筛选器:
可以从“ 角色筛选器” 菜单中选择要查看的服务(云角色名称)或计算机/容器(云角色实例)。 这样,就可以在应用程序的特定部分隔离问题或性能趋势。
若要了解如何设置云角色名称和云角色实例,请参阅配置 Azure Monitor OpenTelemetry。
添加筛选器
可以按事件的属性值筛选事件。 可用属性取决于所选的事件或遥测类型。 添加过滤器:
选择
以添加筛选器。
从左侧下拉列表中选择一个属性。
在中心下拉列表中,选择以下运算符之一:
=
、!=
、或contains
not contains
。从右侧下拉列表中,选择要筛选的所有属性值。
注释
请注意,筛选器值右侧的计数显示当前筛选集合中出现了多少项。
若要添加另一个筛选器,请再次选择
。
搜索遥测
使用分析数据
Application Insights 收集的所有数据都存储在 Log Analytics 中,它提供丰富的查询语言,用于分析生成正在调查的异常的请求。
小窍门
Log Analytics 中的简单模式提供直观的点键界面,用于分析和可视化日志数据。
调查遥测
若要调查错误或异常的根本原因,可以深入分析问题操作,以获取包含依赖项和异常详细信息的详细端到端事务视图。
分析客户端性能和故障
如果将 Application Insights 集成到您的网页中,则可以获取关于页面视图、浏览器操作和依赖项的洞察。 收集此浏览器数据需要 向网页添加脚本。
添加脚本后,可以通过选择“性能”或“失败”视图上的“浏览器”开关来访问页面视图及其关联的性能指标。
此视图从浏览器的角度提供应用程序的各种遥测数据的直观摘要。
对于浏览器操作,端到端事务详细信息视图显示客户端请求页面的页面视图属性,包括浏览器的类型及其位置。 此信息有助于确定是否存在与特定类型的客户端相关的性能问题。
注释
与为服务器性能收集的数据一样,Application Insights 使所有客户端数据都可用于使用日志进行深入分析。
交易诊断体验
事务诊断体验(也称为端到端事务详细信息视图)显示事务的甘特图,其中列出了所有事件及其持续时间和响应代码。
此诊断体验会自动将所有 Application Insights 监视组件中的服务器端遥测数据关联到单个视图中,并支持多个资源。 Application Insights 可检测基础关系,并可用于轻松诊断导致事务缓慢或失败的应用程序组件、依赖项或异常。
选择特定事件可显示其属性,包括基础命令或调用堆栈等其他信息。
此视图有四个关键部分:
此可折叠窗格会显示符合筛选条件的其他结果。 选择任何结果以更新前三个部分的相应详细信息。 我们试图找到可以从所有组件中获得详细信息的样本,即使在其中任何一个组件中已启用采样功能。 这些示例显示为建议。
.NET 分析器 和 快照调试器
.NET Profiler 或 Snapshot Debugger 有助于对性能和失败问题进行代码级诊断。 通过此体验,仅需选择一次即可查看任意组件的 .NET Profiler 跟踪或快照。
探查器跟踪
.NET Profiler 通过显示操作实际运行的代码以及每个步骤所需的时间,帮助进一步进行代码级诊断。 某些操作可能没有被跟踪,因为 Profiler 是周期性运行的。 随着时间的推移,更多的操作应具有跟踪记录。
若要启动 .NET Profiler,请在 性能 视图中选择一个操作,然后转到 探查器跟踪。
或者,可以在 端到端事务详细信息 视图中执行此作。
跟踪显示每个操作的单独事件,以便可以在整个操作过程中诊断根本原因。 选择持续时间最长的最佳示例之一。
选择 性能提示 (在此示例中, CPU 时间)中的链接,获取有关解释事件的文档。
若要进一步分析,请选择 “下载跟踪 ”以下载跟踪。 可以使用 PerfView 查看此数据。
注释
默认情况下,会选择Hot path。 它突出显示了导致要调查的问题的特定事件路径,该路径由事件名称旁边的火焰图标指示。
如果无法让 .NET Profiler 正常工作,请联系 serviceprofilerhelp@microsoft.com。
调试快照
若要查看异常的代码级调试信息,
在甘特图中选择异常,然后 打开调试快照。
快照调试器 显示调用堆栈,并允许检查每个调用堆栈帧中的变量。 通过选择方法,可以在请求时查看所有局部变量的值。
之后,可以通过下载快照并在 Visual Studio 中打开它来调试源代码。
如果无法让 Snapshot Debugger 正常工作,请联系 snapshothelp@microsoft.com。
创建工作项
如果将 Application Insights 连接到跟踪系统(如 Azure DevOps 或 GitHub),则可以直接从 Application Insights 创建包含任何遥测项的详细信息的工作项。
注释
首次执行此步骤时,系统将要求配置指向 Azure DevOps 组织和项目的链接。
转到 端到端事务详细信息 视图并选择事件。
在“ 详细信息 ”部分中,选择“ 创建工作项 ”并创建新模板或选取现有模板。
此时会打开 “新建工作项 ”窗格,其中包含有关已填充的异常的详细信息。 保存之前,可以添加更多信息。
常见问题
本部分提供常见问题的解答。
事务搜索
什么是组件?
组件是分布式或微服务应用程序的可独立部署的部件。 开发人员和运营团队对这些应用程序组件生成的遥测具有代码级可见性或访问权限。
- 组件不同于“观察到的”外部依赖项,例如 SQL 和事件中心,你的团队或组织可能无权访问这些依赖项(代码或遥测)。
- 组件在任意数目的服务器、角色或容器实例上运行。
- 即使订阅不同,组件也可以是单独的 Application Insights 检测密钥。 组件还可以执行不同的角色,这些角色向同一个 Application Insights 检测密钥报告。 新体验显示了所有组件的详细信息,而不论其设置方式。
保留多少数据?
请参阅限制摘要。
如何在服务器请求中查看 POST 数据?
我们不自动记录 POST 数据,但可以使用 TrackTrace 或日志调用。 POST 数据放在消息参数中。 无法像筛选属性一样筛选消息,但消息的大小限制更大。
为什么 Azure 函数搜索不返回任何结果?
Azure Functions 不会记录 URL 查询字符串。
交易事务诊断
为什么在图表上看到单个组件和其他组件仅显示为外部依赖项,而不显示任何详细信息?
可能的原因:
- 是否使用 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 门户打开支持案例。
后续步骤
- 详细了解如何使用 应用程序映射 来发现应用程序的所有组件的性能瓶颈和故障热点。
- 详细了解如何使用 可用性视图 设置定期测试,以监视应用程序的可用性和响应能力。
- 了解如何 在 Analytics 中编写复杂的查询 ,以便从遥测数据中获得更深入的见解。
- 了解如何将 日志和自定义遥测发送到 Application Insights ,以便进行更全面的监视。
- 有关监视运行时间和响应能力简介,请参阅 可用性概述。