Azure 应用服务的应用程序监视概述
现在,可以比以往任何时候更轻松地对 Azure 应用服务中运行的基于 ASP.NET、ASP.NET Core、Java 和 Node.js 的 Web 应用程序启用监视。 以前需要手动检测应用,但现在默认情况下应用服务映像中已内置最新的扩展/代理。
启用 Application Insights
可通过两种方法为应用服务上托管的应用程序启用监视:
自动检测应用程序监视 (ApplicationInsightsAgent)。
此方法最容易实现,无需更改代码或进行高级配置。 这种监视通常称为“运行时”监视。 对于应用服务,我们建议你至少启用此级别的监视。 然后根据具体的方案评估是否需要通过手动检测进行更高级的监视。
启用自动检测后,它会使用默认设置启用 Application Insights(包括采样)。 即使在 Azure AppInsights:采样:所有数据 100% 中设置,此设置也会被忽略。
有关支持的自动检测方案的完整列表,请参阅支持的环境、语言和资源提供程序。
自动检测监视支持以下平台:
安装 Application Insights SDK 以通过代码手动检测应用程序。
此方法更具可自定义性,但它需要以下方法:适用于 .NET Core、.NET、Node.js、Python 的 SDK,以及适用于 Java 的独立代理。 此方法还意味着你必须自己管理软件包最新版本的更新。
如果需要发出自定义 API 调用来跟踪自动检测监视在默认情况下不会捕获的事件/依赖项,则需要使用此方法。 若要了解详细信息,请参阅用于处理自定义事件和指标的 Application Insights API。
如果同时检测到自动检测监视和基于 SDK 的手动检测,则在 .NET 中,只会采用手动检测设置,而在 Java 中,只有自动检测会发出遥测。 此做法是为了防止发送重复数据。
备注
Snapshot Debugger 和 Profiler 仅在 .NET 和 .NET Core 中可用。
发行说明
本部分包含用于使用 Application Insights 进行运行时检测的 Azure Web 应用扩展的发行说明。
若要查找当前使用的扩展版本,请转到 https://<yoursitename>.scm.chinacloudsites.cn/ApplicationInsights
。
发行说明
2.8.44
- .NET/.NET Core:已将 ApplicationInsights .NET SDK 升级到 2.20.1。
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
- JAVA 扩展:从 Java 代理 3.0.2 升级到了 Java 代理 3.1.1(正式发布版)。
- Node.js 扩展:从 AI SDK 1.8.8 更新到了 2.1.3。
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、.NET、Java、Nodejs 或 Python 应用程序启用自动检测应用程序监视。