排查 Application Insights Profiler 问题

本文提供使用 Azure Application Insights Profiler 的故障排除步骤和信息。

请确保使用适当的探查器终结点

目前,需要修改终结点的区域只有 Azure 政府 版和 Azure 中国版

应用设置 美国政府云 中国云
ApplicationInsightsProfilerEndpoint https://profiler.monitor.azure.us https://profiler.monitor.azure.cn
ApplicationInsightsEndpoint https://dc.applicationinsights.us https://dc.applicationinsights.azure.cn

确保应用在正确的版本上运行

高于 版本 4.6.2 的 .NET Framework 支持探查器。

如果 Web 应用是 ASP.NET Core 应用程序,则它必须在 最新支持的 ASP.NET Core 运行时上运行。

确保使用正确的 Azure 服务计划

免费或共享应用服务计划目前不支持探查器。 升级到探查器开始工作的基本计划之一。

注意

不支持 Azure Functions 消耗计划。 有关详细信息,请参阅 使用 Application Insights 分析实时 Azure Functions 应用

请确保在正确的时间范围内搜索探查器数据

如果尝试查看的数据早于几周,请尝试限制时间筛选,然后重试。 跟踪会在七天后删除。

确保可以访问网关

检查代理或防火墙是否未阻止你访问 https://gateway.azureserviceprofiler.net

确保 Profiler 正在运行或尚未超时

仅当分析数据可以附加到在 Profiler 运行时发生的请求时,才会上传该数据。 探查器每小时收集数据两分钟。 还可以通过 启动分析会话来触发探查器。

探查器将跟踪消息和自定义事件写入 Application Insights 资源。 可以使用这些事件来查看 Profiler 的运行方式。

若要搜索 Profiler 发送到 Application Insights 资源的跟踪消息和自定义事件,请执行以下步骤:

  1. 在 Application Insights 资源中,从顶部菜单栏中选择“ 搜索 ”。

    从 Application Insights 资源中选择搜索按钮的屏幕截图。

  2. 使用搜索字符串 stopprofiler OR startprofiler OR upload OR ServiceProfilerSample 查找相关数据。

    上述搜索字符串中搜索结果的屏幕截图。

    上述搜索结果包括两个来自两个 AI 资源的搜索示例:

    • 如果应用程序在 Profiler 运行时未收到请求,则消息会说明上传因没有活动而取消。

    • 探查器在检测到在 Profiler 运行时发生的请求时启动并发送自定义事件。 ServiceProfilerSample如果显示自定义事件,则表示已捕获配置文件并在 Application Insights 性能窗格中可用。

    如果未显示任何记录,则 Profiler 未运行或响应时间过长。 确保 已在 Azure 服务上启用 Profiler

并行线程中的双重计数

当两个或多个并行线程与请求相关联时,堆栈查看器中的总时间指标可能超过请求的持续时间。 在这种情况下,总线程时间大于实际运行时间。

例如,一个线程可能正在等待另一个线程完成。 查看器尝试检测这种情况,并省略此等待。 在这种情况下,它可能会显示过多的信息,而不是忽略潜在的关键信息。

在跟踪中看到并行线程时,请确定哪些线程正在等待,以便确定请求的热路径。 通常,快速进入等待状态的线程只是在其他线程上等待。 专注于其他线程,并忽略等待线程中的时间。

排查特定 Azure 服务上的探查器问题

Azure 应用服务

若要使 Profiler 正常工作,请确保以下事项:

  • Web 应用使用正确的设置启用了 Application Insights

  • ApplicationInsightsProfiler3 webjob 正在运行。 若要检查 Web 作业,请执行以下步骤:

    1. 访问 Kudu 服务

      在 Azure 门户中,转到应用服务。 从左侧菜单中选择“ 高级工具” ,然后选择“ 转到”。

    2. 在顶部菜单中,选择 “工具>”“Web 作业仪表板”。 此时会打开 “Web 作业 ”窗格。

      如果 ApplicationInsightsProfiler3 未显示,请重启应用服务应用程序。

      “Web 作业”窗格的屏幕截图,其中显示了作业的名称、状态和上次运行时间。

    3. 若要查看 Web 作业的详细信息(包括日志),请选择 ApplicationInsightsProfiler3 链接。 “ 连续 Web 作业详细信息 ”窗格随即打开。

      “连续 Web 作业详细信息”窗格的屏幕截图。

如果 Profiler 仍然无法正常工作,可以下载日志并 提交 Azure 支持票证

查看诊断服务站点扩展的状态页

如果通过门户中的 Application Insights 窗格 启用了 Profiler,则它由诊断服务站点扩展管理。 可以通过转到 https://<site-name>.scm.azurewebsites.net/DiagnosticServices来检查此扩展的状态页。

注意

状态页链接的域因云而异。 此域将与应用服务的 Kudu 管理站点相同。

状态页显示 Profiler 和 Snapshot Debugger 代理的安装状态。 如果出现意外错误,将显示状态页,并显示如何修复错误。

可以使用应用服务的 Kudu 管理站点获取此状态页的基 URL。 为此,请按照下列步骤操作:

  1. 从 Azure 门户打开应用服务应用程序。

  2. 选择“ 高级工具>”“转到”。

  3. 进入 Kudu 管理站点后,追加 /DiagnosticServices 到 URL,然后按 Enter

    它将以如下结尾: https://<kudu-url>/DiagnosticServices。 它将显示如下状态页:

    “诊断服务状态”页的屏幕截图。

注意

Application Insights Profiler 的无代码安装遵循 .NET Core 支持策略。 有关支持的运行时的详细信息,请参阅 .NET Core 支持策略

手动安装

配置 Profiler 时,更新将应用于 Web 应用的设置。 如有必要,可以 手动应用更新

活动分析会话过多

在 Azure 应用服务中,一次只能有 一个分析会话。 此限制在 VM 级别对应用服务计划中运行的所有应用程序和部署槽强制实施。

此限制同样适用于通过 诊断和解决问题、Kudu 和 Application Insights Profiler 启动的分析会话。

如果 Profiler 尝试在另一个会话已在运行时启动会话,则会在应用程序日志中记录错误,以及 ApplicationInsightsProfiler3 的连续 WebJob 日志。

你可能会在日志中看到以下消息之一:

  • Microsoft.ServiceProfiler.Exceptions.TooManyETWSessionException
  • Error: StartProfiler failed. Details: System.Runtime.InteropServices.COMException (0xE111005E): Exception from HRESULT: 0xE111005E

错误代码 0xE111005E 指示分析会话无法启动,因为另一个会话已在运行。

若要避免此错误,请将某些 Web 应用移到其他应用服务计划,或在某些应用程序上禁用 Profiler。 如果使用部署槽位,请确保停止任何未使用的槽。

部署错误:目录不为空“D:\home\site\wwwroot\App_Data\jobs”

如果将 Web 应用重新部署到启用了 Profiler 的 Web 应用资源,可能会看到以下消息:

目录不为空 'D:\home\site\wwwroot\App_Data\jobs'

如果从脚本或 Azure Pipelines 运行 Web 部署,则会发生此错误。 若要解决此问题,请将以下部署参数添加到 Web 部署任务:

  • -skip:Directory='.*\\App_Data\\jobs\\continuous\\ApplicationInsightsProfiler.*'

  • -skip:skipAction=Delete,objectname='dirPath',absolutepath='.*\\App_Data\\jobs\\continuous$'

  • -skip:skipAction=Delete,objectname='dirPath',absolutepath='.*\\App_Data\\jobs$'

  • -skip:skipAction=Delete,objectname='dirPath',absolutepath='.*\\App_Data$'

这些参数将删除 Application Insights Profiler 使用的文件夹,并取消阻止重新部署过程。 它们不会影响当前正在运行的 Profiler 实例。

探查器是否正在运行?

探查器在 Web 应用中作为连续 Web 作业运行。 可以在 Azure 门户中打开 Web 应用资源。 在 “WebJobs ”窗格中,检查 ApplicationInsightsProfiler 的状态。 如果它未运行,请打开 “日志” 以获取详细信息。

虚拟机和云服务

若要查看 Azure 诊断是否正确配置了 Profiler,请执行以下步骤:

  1. 验证部署的 Azure 诊断配置的内容是否为预期内容。

  2. 确保 Azure 诊断在探查器命令行上通过正确的 iKey

  3. 检查探查器日志文件,查看 Profiler 是否运行但返回了错误。

若要检查用于配置 Azure 诊断的设置,请执行以下步骤:

  1. 登录到虚拟机。

  2. 打开此位置的日志文件。 计算机上的插件版本可能较新。

    • 对于 VM:

      C:\WindowsAzure\logs\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics\1.11.3.12\DiagnosticsPlugin.log

    • 对于云服务:

      C:\logs\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics\1.11.3.12\DiagnosticsPlugin.log

  3. 在 文件中,搜索字符串 WadCfg 以查找传递给 VM 以配置 Azure 诊断的设置。

  4. 检查 Profiler 使用的 是否正确 iKey

  5. 检查启动 Profiler 的命令行。 命令行参数位于以下文件中, (驱动器可以是 c:d: ,并且目录可能隐藏) :

    • 对于 VM:

      C:\ProgramData\ApplicationInsightsProfiler\config.json

    • 对于云服务:

      D:\ProgramData\ApplicationInsightsProfiler\config.json

  6. 确保 iKey Profiler 命令行上的 正确。

  7. 使用在前面的 config.json 文件中找到的路径,检查名为 BootstrapN.log 的 Profiler 日志文件。 它显示以下信息:

    • 指示 Profiler 正在使用的设置的调试信息。
    • 来自 Profiler 的状态和错误消息。

    可按以下说明找到文件:

    • 对于 VM:

      C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics\1.17.0.6\ApplicationInsightsProfiler

    • 对于云服务:

      C:\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics\1.17.0.6\ApplicationInsightsProfiler

  8. 如果 Profiler 在应用程序接收请求时正在运行,则会显示“从 iKey 检测到的活动”消息。

  9. 上传跟踪后,将显示“开始上传跟踪”消息。

编辑网络代理或防火墙规则

如果应用程序通过代理或防火墙连接到 Internet,则可能需要更新规则以与 Profiler 服务通信。

Application Insights Profiler 使用的 IP 包含在 Azure Monitor 服务标记中。 有关详细信息,请参阅 服务标记文档

如果所有其他操作都失败

在 Azure 门户中提交支持票证。 包括错误消息中的相关 ID。

联系我们寻求帮助

如果你有任何疑问或需要帮助,请创建支持请求联系 Azure 社区支持。 还可以向 Azure 反馈社区提交产品反馈。