你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure 应用服务的应用程序监视概述

现在,可以比以往任何时候更轻松地对 Azure 应用服务中运行的基于 ASP.NET、ASP.NET Core、Java 和 Node.js 的 Web 应用程序启用监视。 以前需要手动检测应用,但现在默认情况下应用服务映像中已内置最新的扩展/代理。

启用 Application Insights

可通过两种方法为应用服务上托管的应用程序启用监视:

  • 自动检测应用程序监视 (ApplicationInsightsAgent)。

    此方法最容易实现,无需更改代码或进行高级配置。 这种监视通常称为“运行时”监视。 对于应用服务,我们建议你至少启用此级别的监视。 然后根据具体的方案评估是否需要通过手动检测进行更高级的监视。

    启用自动检测后,它会使用默认设置启用 Application Insights(包括采样)。 即使在 Azure AppInsights:采样:所有数据 100% 中设置,此设置也会被忽略。

    有关支持的自动检测方案的完整列表,请参阅支持的环境、语言和资源提供程序

    自动检测监视支持以下平台:

  • 安装 Application Insights SDK 以通过代码手动检测应用程序

    此方法更具可自定义性,但它需要以下方法:适用于 .NET Core.NETNode.jsPython 的 SDK,以及适用于 Java 的独立代理。 此方法还意味着你必须自己管理软件包最新版本的更新。

    如果需要发出自定义 API 调用来跟踪自动检测监视在默认情况下不会捕获的事件/依赖项,则需要使用此方法。 若要了解详细信息,请参阅用于处理自定义事件和指标的 Application Insights API

如果同时检测到自动检测监视和基于 SDK 的手动检测,则在 .NET 中,只会采用手动检测设置,而在 Java 中,只有自动检测会发出遥测。 此做法是为了防止发送重复数据。

备注

Snapshot Debugger 和 Profiler 仅在 .NET 和 .NET Core 中可用。

发行说明

本部分包含用于使用 Application Insights 进行运行时检测的 Azure Web 应用扩展的发行说明。

若要查找当前使用的扩展版本,请转到 https://<yoursitename>.scm.azurewebsites.net/ApplicationInsights

发行说明

2.8.44

2.8.43

  • 将 .NET/.NET Core、Java 和 Node.js 包分离到不同的应用服务 Windows 站点扩展中。

2.8.42

  • JAVA 扩展:从 Java 代理 2.5.1 升级到了 3.2.0
  • Node.js 扩展:从 AI SDK 2.1.7 更新到了 2.1.8。 增加了对用户和系统分配的 Microsoft Entra 托管标识的支持。
  • .NET Core:添加了使用 .NET 启动挂钩的自包含部署和 .NET 6.0 支持。

2.8.41

  • Node.js 扩展:从 AI SDK 2.1.3 更新到了 2.1.7
  • .NET Core:删除了不支持的版本 (2.1)。 支持的版本为 3.1 和 5.0。

2.8.40

2.8.39

  • .NET Core:添加了 .NET Core 5.0 支持。

2.8.38

  • JAVA 扩展:已从 Java 代理 2.5.1 升级到 Java 代理 3.0.2(正式发布版)
  • Node.js 扩展:已将 AI SDK 从 1.8.7 更新到 1.8.8
  • .NET Core:删除了不支持的版本(2.0、2.2、3.0)。 支持的版本为 2.1 和 3.1。

2.8.37

  • AppSvc Windows 扩展:让 .NET Core 可以与任何版本的 System.Diagnostics.DiagnosticSource.dll 一起使用。

2.8.36

  • AppSvc Windows 扩展:在 .NET Core 中启用了与 AI SDK 的互操作。

2.8.35

  • AppSvc Windows 扩展:添加了 .NET Core 3.1 支持。

2.8.33

  • .NET、.NET Core、Java 和 Node.js 代理以及 Windows 扩展:支持主权云。 可使用连接字符串向主权云发送数据。

2.8.31

  • ASP.NET Core 代理修复了 Application Insights SDK 的问题。 如果运行时加载的 System.Diagnostics.DiagnosticSource.dll 版本不正确,则无代码扩展不会使应用程序崩溃,它会退出。 若要解决此问题,客户应从 bin 文件夹中删除 System.Diagnostics.DiagnosticSource.dll,或者通过设置 ApplicationInsightsAgent_EXTENSIONVERSION=2.8.24 来使用较早版本的扩展。 如果未启用,则不会启用应用程序监视。

2.8.26

  • ASP.NET Core 代理:修复了与更新后的 Application Insights SDK 相关的问题。 如果 ApplicationInsights.dll 已存在于 bin 文件夹中,则代理不会尝试加载 AiHostingStartup。 它通过 Assembly<AiHostingStartup>.GetTypes() 解决了与反射相关的问题。
  • 已知问题:如果加载了 DiagnosticSource dll 的另一个版本,则可能会引发异常“System.IO.FileLoadException: Could not load file or assembly 'System.Diagnostics.DiagnosticSource, Version=4.0.4.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'”。 例如,如果发布文件夹中存在 System.Diagnostics.DiagnosticSource.dll,则可能会发生这种情况。 作为缓解措施,请在应用服务中设置应用设置以使用以前版本的扩展:ApplicationInsightsAgent_EXTENSIONVERSION=2.8.24。

2.8.24

  • 2\.8.21 的重新打包版本。

2.8.23

  • 添加了 ASP.NET Core 3.0 无代码监视支持。
  • 对于运行时版本 2.1、2.2 和 3.0,已将 ASP.NET Core SDK 更新为 2.8.0。 面向 .NET Core 2.0 的应用继续使用 2.1.1 版的 SDK。

2.8.14

  • 对于面向 .NET Core 2.1、2.2 的应用,已将 ASP.NET Core SDK 版本从 2.3.0 更新为最新版 (2.6.1)。 面向 .NET Core 2.0 的应用继续使用 2.1.1 版的 SDK。

2.8.12

  • 支持 ASP.NET Core 2.2 应用。

  • 修复了 ASP.NET Core 扩展中的一个 bug,该 bug 会引发 SDK 的注入,即使已通过 SDK 检测了应用程序。 对于 2.1 和 2.2 版应用,application 文件夹中存在 ApplicationInsights.dll 现在会导致扩展退出。 对于 2.0 版应用,仅当通过 UseApplicationInsights() 调用启用了 ApplicationInsights 时,扩展才会退出。

  • 永久修复了 ASP.NET Core 应用的不完整 HTML 响应。 此修补程序现已扩展为适用于 .NET Core 2.2 应用。

  • 添加了以下支持:为 ASP.NET Core 应用关闭 JavaScript 注入 (APPINSIGHTS_JAVASCRIPT_ENABLED=false appsetting)。 对于 ASP.NET Core,默认情况下,JavaScript 注入处于“选择退出”模式,除非显式关闭。 (进行此默认设置是为了保持当前行为。)

  • 修复了即使 ikey 不存在也会导致注入的 ASP.NET Core 扩展 bug。

  • 修复了 SDK 版本前缀逻辑中导致遥测中的 SDK 版本不正确的 bug。

  • 为 ASP.NET Core 应用添加了 SDK 版本前缀,以识别遥测数据的收集方式。

  • 修复了 SCM- ApplicationInsights 页面,以正确显示预安装的扩展的版本。

2.8.10

  • 修复了 ASP.NET Core 应用的不完整 HTML 响应。

常见问题

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

Application Insights 在我的项目中修改哪些内容?

详细信息取决于项目类型。 对于 Web 应用程序:

  • 将这些文件添加到项目:
    • ApplicationInsights.config
    • ai.js
  • 安装以下 NuGet 包:
    • Application Insights API:核心 API
    • 适用于 Web 应用程序的 Application Insights API:用于从服务器发送遥测
    • 适用于 JavaScript 应用程序的 Application Insights API:用于从客户端发送遥测
  • 这些包包括以下程序集:
    • Microsoft.ApplicationInsights
    • Microsoft.ApplicationInsights.Platform
  • 将项目插入:
    • Web.config
    • packages.config
  • (仅限新项目,手动将 Application Insights 添加到现有项目。)在客户端和服务器代码中插入代码片段,以使用 Application Insights 资源 ID 初始化它们。 例如,在 MVC 应用中,代码插入到主页 Views/Shared/_Layout.cshtml 中。

后续步骤

了解如何为在应用服务上运行的 .NET Core.NETJavaNodejs 应用程序启用自动检测应用程序监视。