本指南提供将各种 .NET 应用程序从 Application Insights 软件开发工具包 (SDK) 迁移到 Azure Monitor OpenTelemetry 的分步说明。
预期 Azure Monitor OpenTelemetry 检测与 Application Insights SDK 类似。 有关详细信息和功能比较,请参阅功能的发布状态。
如果刚开始使用 Application Insights 且不需要从 Classic API 迁移,请参阅启用 Azure Monitor OpenTelemetry。
先决条件
- 已使用 Application Insights 检测、无需进行任何自定义的 ASP.NET Core Web 应用程序
-
.NET 的主动支持版本
- 已使用 Application Insights 检测、无需进行任何自定义的 WorkerService 应用程序
-
.NET 的主动支持版本
提示
我们的产品组正在积极寻求有关本文档的反馈。 向 otel@microsoft.com 提供反馈或查看“支持”部分。
删除 Application Insights SDK
注意
在继续执行这些步骤之前,应确认应用程序当前有备份。
删除 NuGet 包
从 Microsoft.ApplicationInsights.AspNetCore
中删除 csproj
包。
dotnet remove package Microsoft.ApplicationInsights.AspNetCore
删除初始化代码和自定义项
删除对代码库中 Application Insights 类型的任何引用。
提示
删除 Application Insights 包后,可以重新构建应用程序以获取需要删除的引用列表。
通过删除以下行从 ServiceCollection
中删除 Application Insights:
builder.Services.AddApplicationInsightsTelemetry();
从 ApplicationInsights
中删除 appsettings.json
分区。
{
"ApplicationInsights": {
"ConnectionString": "<Your Connection String>"
}
}
清理和构建
检查 bin 目录,验证是否删除了对 Microsoft.ApplicationInsights.*
的所有引用。
测试应用程序
验证应用程序是否没有意外的后果。
删除 NuGet 包
从 Microsoft.AspNet.TelemetryCorrelation
和Microsoft.ApplicationInsights.*
中删除 csproj
包和任何 packages.config
包。
删除 ApplicationInsights.config
文件
从应用程序的 Web.config
文件中删除分区
首次将 ApplicationInsights 添加到项目时,会自动将两个 HttpModule 添加到 web.config。
应删除对 TelemetryCorrelationHttpModule
和 ApplicationInsightsWebTracking
的任何引用。
如果将 Application Insights 添加到 Internet Information Server (IIS) 模块,则也应将其删除。
<configuration>
<system.web>
<httpModules>
<add name="TelemetryCorrelationHttpModule" type="Microsoft.AspNet.TelemetryCorrelation.TelemetryCorrelationHttpModule, Microsoft.AspNet.TelemetryCorrelation" />
<add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" />
</httpModules>
</system.web>
<system.webServer>
<modules>
<remove name="TelemetryCorrelationHttpModule" />
<add name="TelemetryCorrelationHttpModule" type="Microsoft.AspNet.TelemetryCorrelation.TelemetryCorrelationHttpModule, Microsoft.AspNet.TelemetryCorrelation" preCondition="managedHandler" />
<remove name="ApplicationInsightsWebTracking" />
<add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" preCondition="managedHandler" />
</modules>
</system.webServer>
</configuration>
另请查看添加到 web.config 的任何程序集版本重定向。
删除初始化代码和自定义项
删除对代码库中 Application Insights 类型的任何引用。
提示
删除 Application Insights 包后,可以重新构建应用程序以获取需要删除的引用列表。
- 移除了对
TelemetryConfiguration
或 TelemetryClient
的引用。 它是应用程序启动的一部分,用于初始化 Application Insights SDK。
以下方案是可选方案,适用于高级用户。
- 如果对用于
TelemetryClient
的 的引用有任何多余,则应删除这些多余引用。
- 如果以自定义 或
TelemetryProcessor
形式添加了任何TelemetryInitializer
,则应将其删除。 你会看到它们在配置中被引用。
- 如果项目在
FilterConfig.cs
目录中有一个 App_Start
,请检查引用 Application Insights 的任何自定义异常处理程序并将其删除。
删除 JavaScript 代码片段
如果添加了 JavaScript SDK 以收集客户端遥测数据,也可以将其删除,尽管它会在不使用 .NET SDK 的情况下继续工作。
有关要删除的内容的完整代码示例,请查看 JavaScript SDK 的加入指南。
删除任何 Visual Studio 项目
如果使用 Visual Studio 载入 Application Insights,则可以在项目中留下更多文件。
ConnectedService.json
可能引用 Application Insights 资源。
[Your project's name].csproj
可能引用 Application Insights 资源:
<ApplicationInsightsResourceId>/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/Default-ApplicationInsights-ChinaNorth/providers/microsoft.insights/components/WebApplication4</ApplicationInsightsResourceId>
清理和构建
检查 bin 目录,验证是否删除了对 Microsoft.ApplicationInsights.
的所有引用。
测试应用程序
验证应用程序是否没有意外的后果。
删除 NuGet 包
从 Microsoft.ApplicationInsights.*
和 csproj
中删除任何 packages.config
包。
dotnet remove package Microsoft.ApplicationInsights
删除初始化代码和自定义项
删除对代码库中 Application Insights 类型的任何引用。
提示
删除 Application Insights 包后,可以重新构建应用程序以获取需要删除的引用列表。
提示
如果曾经用 AddApplicationInsightsTelemetryWorkerService()
将 Application Insights 添加到你的 ServiceCollection
,请参阅 WorkerService 选项卡。
清理和构建
检查 bin 目录,验证是否删除了对 Microsoft.ApplicationInsights.
的所有引用。
测试应用程序
验证应用程序是否没有意外的后果。
删除 NuGet 包
从 Microsoft.ApplicationInsights.WorkerService
中删除 csproj
包。
dotnet remove package Microsoft.ApplicationInsights.WorkerService
删除初始化代码和自定义项
删除对代码库中 Application Insights 类型的任何引用。
提示
删除 Application Insights 包后,可以重新构建应用程序以获取需要删除的引用列表。
通过删除以下行从 ServiceCollection
中删除 Application Insights:
builder.Services.AddApplicationInsightsTelemetryWorkerService();
从 ApplicationInsights
中删除 appsettings.json
分区。
{
"ApplicationInsights": {
"ConnectionString": "<Your Connection String>"
}
}
清理和构建
检查 bin 目录,验证是否删除了对 Microsoft.ApplicationInsights.*
的所有引用。
测试应用程序
验证应用程序是否没有意外的后果。
提示
我们的产品组正在积极寻求有关本文档的反馈。 向 otel@microsoft.com 提供反馈或查看“支持”部分。
启用 OpenTelemetry
建议按照以下说明创建开发资源并使用其连接字符串。
计划更新连接字符串,以便在确认迁移成功后将遥测数据发送到原始资源。
安装 Azure Monitor 发行版
Azure Monitor 发行版通过包含用于收集跟踪、指标、日志和异常的 OpenTelemetry 检测库来实现自动遥测,并允许收集自定义遥测数据。
安装 Azure Monitor 发行版时,系统会将 OpenTelemetry SDK 作为依赖项。
dotnet add package Azure.Monitor.OpenTelemetry.AspNetCore
同时添加和配置 OpenTelemetry 和 Azure Monitor
OpenTelemery SDK(通常位于 ServiceCollection
中)必须在应用程序启动时配置为 Program.cs
的一部分。
OpenTelemetry 有一个关于以下三个信号的概念:跟踪、指标和日志。
Azure Monitor 发行版配置其中每个信号。
Program.cs
下面的代码示例演示基础原理。
using Azure.Monitor.OpenTelemetry.AspNetCore;
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
public class Program
{
public static void Main(string[] args)
{
var builder = WebApplication.CreateBuilder(args);
// Call AddOpenTelemetry() to add OpenTelemetry to your ServiceCollection.
// Call UseAzureMonitor() to fully configure OpenTelemetry.
builder.Services.AddOpenTelemetry().UseAzureMonitor();
var app = builder.Build();
app.MapGet("/", () => "Hello World!");
app.Run();
}
}
建议在环境变量中设置连接字符串:
APPLICATIONINSIGHTS_CONNECTION_STRING=<Your Connection String>
如要详细了解配置连接字符串的更多选项,请参阅配置 Application Insights 连接字符串。
通过 Azure Monitor 安装 OpenTelemetry SDK
安装 Azure Monitor 导出程序时,系统会将 OpenTelemetry SDK 作为依赖项。
dotnet add package Azure.Monitor.OpenTelemetry.Exporter
将 OpenTelemetry 配置为应用程序启动的一部分
OpenTelemery SDK(通常位于 Global.asax.cs
中)必须在应用程序启动时配置。
OpenTelemetry 有一个关于以下三个信号的概念:跟踪、指标和日志。
每个信号都需要配置为应用程序启动的一部分。
TracerProvider
、MeterProvider
和 ILoggerFactory
应为应用程序创建一次,并在应用程序关闭时释放。
Global.asax.cs
下面的代码示例演示了一个简单的示例,仅用于展示基础原理。
此时不会收集任何遥测数据。
using Microsoft.Extensions.Logging;
using OpenTelemetry;
using OpenTelemetry.Metrics;
using OpenTelemetry.Trace;
public class Global : System.Web.HttpApplication
{
private TracerProvider? tracerProvider;
private MeterProvider? meterProvider;
// The LoggerFactory needs to be accessible from the rest of your application.
internal static ILoggerFactory loggerFactory;
protected void Application_Start()
{
this.tracerProvider = Sdk.CreateTracerProviderBuilder()
.Build();
this.meterProvider = Sdk.CreateMeterProviderBuilder()
.Build();
loggerFactory = LoggerFactory.Create(builder =>
{
builder.AddOpenTelemetry();
});
}
protected void Application_End()
{
this.tracerProvider?.Dispose();
this.meterProvider?.Dispose();
loggerFactory?.Dispose();
}
}
通过 Azure Monitor 安装 OpenTelemetry SDK
安装 Azure Monitor 导出程序时,系统会将 OpenTelemetry SDK 作为依赖项。
dotnet add package Azure.Monitor.OpenTelemetry.Exporter
将 OpenTelemetry 配置为应用程序启动的一部分
OpenTelemery SDK(通常位于 Program.cs
中)必须在应用程序启动时配置。
OpenTelemetry 有一个关于以下三个信号的概念:跟踪、指标和日志。
每个信号都需要配置为应用程序启动的一部分。
TracerProvider
、MeterProvider
和 ILoggerFactory
应为应用程序创建一次,并在应用程序关闭时释放。
下面的代码示例演示了一个简单的示例,仅用于展示基础原理。
此时不会收集任何遥测数据。
Program.cs
using Microsoft.Extensions.Logging;
using OpenTelemetry;
using OpenTelemetry.Metrics;
using OpenTelemetry.Trace;
internal class Program
{
static void Main(string[] args)
{
TracerProvider tracerProvider = Sdk.CreateTracerProviderBuilder()
.Build();
MeterProvider meterProvider = Sdk.CreateMeterProviderBuilder()
.Build();
ILoggerFactory loggerFactory = LoggerFactory.Create(builder =>
{
builder.AddOpenTelemetry();
});
Console.WriteLine("Hello, World!");
// Dispose tracer provider before the application ends.
// It will flush the remaining spans and shutdown the tracing pipeline.
tracerProvider.Dispose();
// Dispose meter provider before the application ends.
// It will flush the remaining metrics and shutdown the metrics pipeline.
meterProvider.Dispose();
// Dispose logger factory before the application ends.
// It will flush the remaining logs and shutdown the logging pipeline.
loggerFactory.Dispose();
}
}
通过 Azure Monitor 安装 OpenTelemetry SDK
安装 Azure Monitor 导出程序时,系统会将 OpenTelemetry SDK 作为依赖项。
dotnet add package Azure.Monitor.OpenTelemetry.Exporter
必须还安装 OpenTelemetry 扩展托管包。
dotnet add package OpenTelemetry.Extensions.Hosting
将 OpenTelemetry 配置为应用程序启动的一部分
OpenTelemery SDK(通常位于 Program.cs
中)必须在应用程序启动时配置。
OpenTelemetry 有一个关于以下三个信号的概念:跟踪、指标和日志。
每个信号都需要配置为应用程序启动的一部分。
TracerProvider
、MeterProvider
和 ILoggerFactory
应为应用程序创建一次,并在应用程序关闭时释放。
下面的代码示例演示了一个简单的示例,仅用于展示基础原理。
此时不会收集任何遥测数据。
Program.cs
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
public class Program
{
public static void Main(string[] args)
{
var builder = Host.CreateApplicationBuilder(args);
builder.Services.AddHostedService<Worker>();
builder.Services.AddOpenTelemetry()
.WithTracing()
.WithMetrics();
builder.Logging.AddOpenTelemetry();
var host = builder.Build();
host.Run();
}
}
提示
我们的产品组正在积极寻求有关本文档的反馈。 向 otel@microsoft.com 提供反馈或查看“支持”部分。
可以向项目添加检测库,以便自动收集有关特定组件或依赖项的遥测数据。
发行版中包含以下库。
自定义检测库
Azure Monitor 发行版包括适用于 ASP.NET Core、HttpClient 和 SQLClient 的 .NET OpenTelemetry 检测。
可以使用 OpenTelemetry API 自定义这些包含的检测,或自行手动添加额外的检测。
下面是有关如何自定义检测的一些示例:
自定义 AspNetCoreTraceInstrumentationOptions
builder.Services.AddOpenTelemetry().UseAzureMonitor();
builder.Services.Configure<AspNetCoreTraceInstrumentationOptions>(options =>
{
options.RecordException = true;
options.Filter = (httpContext) =>
{
// only collect telemetry about HTTP GET requests
return HttpMethods.IsGet(httpContext.Request.Method);
};
});
自定义 HttpClientTraceInstrumentationOptions
builder.Services.AddOpenTelemetry().UseAzureMonitor();
builder.Services.Configure<HttpClientTraceInstrumentationOptions>(options =>
{
options.RecordException = true;
options.FilterHttpRequestMessage = (httpRequestMessage) =>
{
// only collect telemetry about HTTP GET requests
return HttpMethods.IsGet(httpRequestMessage.Method.Method);
};
});
自定义 SqlClientInstrumentationOptions
我们在包中提供 SQLClient 检测(仍为 beta 版)。 当它成为稳定版时,我们会将其作为标准包引用添加进去。 在此之前,若要自定义 SQLClient 检测,请将 OpenTelemetry.Instrumentation.SqlClient
包引用添加到项目并使用其公共 API。
dotnet add package --prerelease OpenTelemetry.Instrumentation.SqlClient
builder.Services.AddOpenTelemetry().UseAzureMonitor().WithTracing(builder =>
{
builder.AddSqlClientInstrumentation(options =>
{
options.SetDbStatementForStoredProcedure = false;
});
});
可以向项目添加检测库,以便自动收集有关特定组件或依赖项的遥测数据。 建议使用以下库:
OpenTelemetry.Instrumentation.AspNet 可用于收集传入请求的遥测数据。 Azure Monitor 将其映射到请求遥测。
dotnet add package OpenTelemetry.Instrumentation.AspNet
它需要向 Web.config
添加额外的 HttpModule:
<system.webServer>
<modules>
<add
name="TelemetryHttpModule"
type="OpenTelemetry.Instrumentation.AspNet.TelemetryHttpModule,
OpenTelemetry.Instrumentation.AspNet.TelemetryHttpModule"
preCondition="integratedMode,managedHandler" />
</modules>
</system.webServer>
此处提供了完整的入门指南:OpenTelemetry.Instrumentation.AspNet 自述文件
OpenTelemetry.Instrumentation.Http 可用于收集出站 http 依赖项的遥测数据。 Azure Monitor 将其映射到依赖项遥测。
dotnet add package OpenTelemetry.Instrumentation.Http
此处提供了完整的入门指南:OpenTelemetry.Instrumentation.Http 自述文件
OpenTelemetry.Instrumentation.SqlClient 可用于收集 MS SQL 依赖项的遥测数据。 Azure Monitor 将其映射到依赖项遥测。
dotnet add package --prerelease OpenTelemetry.Instrumentation.SqlClient
此处提供了完整的入门指南:OpenTelemetry.Instrumentation.SqlClient 自述文件
Global.asax.cs
以下代码示例扩展了上一个示例。
它现在收集遥测数据,但尚未发送到 Application Insights。
using Microsoft.Extensions.Logging;
using OpenTelemetry;
using OpenTelemetry.Metrics;
using OpenTelemetry.Trace;
public class Global : System.Web.HttpApplication
{
private TracerProvider? tracerProvider;
private MeterProvider? meterProvider;
internal static ILoggerFactory loggerFactory;
protected void Application_Start()
{
this.tracerProvider = Sdk.CreateTracerProviderBuilder()
.AddAspNetInstrumentation()
.AddHttpClientInstrumentation()
.AddSqlClientInstrumentation()
.Build();
this.meterProvider = Sdk.CreateMeterProviderBuilder()
.AddAspNetInstrumentation()
.AddHttpClientInstrumentation()
.Build();
loggerFactory = LoggerFactory.Create(builder =>
{
builder.AddOpenTelemetry();
});
}
protected void Application_End()
{
this.tracerProvider?.Dispose();
this.meterProvider?.Dispose();
loggerFactory?.Dispose();
}
}
可以向项目添加检测库,以便自动收集有关特定组件或依赖项的遥测数据。 建议使用以下库:
OpenTelemetry.Instrumentation.Http 可用于收集出站 http 依赖项的遥测数据。 Azure Monitor 将其映射到依赖项遥测。
dotnet add package OpenTelemetry.Instrumentation.Http
此处提供了完整的入门指南:OpenTelemetry.Instrumentation.Http 自述文件
OpenTelemetry.Instrumentation.SqlClient 可用于收集 MS SQL 依赖项的遥测数据。 Azure Monitor 将其映射到依赖项遥测。
dotnet add package --prerelease OpenTelemetry.Instrumentation.SqlClient
此处提供了完整的入门指南:OpenTelemetry.Instrumentation.SqlClient 自述文件
以下代码示例扩展了上一个示例。
它现在收集遥测数据,但尚未发送到 Application Insights。
Program.cs
using Microsoft.Extensions.Logging;
using OpenTelemetry;
using OpenTelemetry.Metrics;
using OpenTelemetry.Trace;
internal class Program
{
static void Main(string[] args)
{
TracerProvider tracerProvider = Sdk.CreateTracerProviderBuilder()
.AddHttpClientInstrumentation()
.AddSqlClientInstrumentation()
.Build();
MeterProvider meterProvider = Sdk.CreateMeterProviderBuilder()
.AddHttpClientInstrumentation()
.Build();
ILoggerFactory loggerFactory = LoggerFactory.Create(builder =>
{
builder.AddOpenTelemetry();
});
Console.WriteLine("Hello, World!");
tracerProvider.Dispose();
meterProvider.Dispose();
loggerFactory.Dispose();
}
}
可以向项目添加检测库,以便自动收集有关特定组件或依赖项的遥测数据。 建议使用以下库:
OpenTelemetry.Instrumentation.Http 可用于收集出站 http 依赖项的遥测数据。 Azure Monitor 将其映射到依赖项遥测。
dotnet add package OpenTelemetry.Instrumentation.Http
此处提供了完整的入门指南:OpenTelemetry.Instrumentation.Http 自述文件
OpenTelemetry.Instrumentation.SqlClient 可用于收集 MS SQL 依赖项的遥测数据。 Azure Monitor 将其映射到依赖项遥测。
dotnet add package --prerelease OpenTelemetry.Instrumentation.SqlClient
此处提供了完整的入门指南:OpenTelemetry.Instrumentation.SqlClient 自述文件
以下代码示例扩展了上一个示例。
它现在收集遥测数据,但尚未发送到 Application Insights。
Program.cs
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
public class Program
{
public static void Main(string[] args)
{
var builder = Host.CreateApplicationBuilder(args);
builder.Services.AddHostedService<Worker>();
builder.Services.AddOpenTelemetry()
.WithTracing(builder =>
{
builder.AddHttpClientInstrumentation();
builder.AddSqlClientInstrumentation();
})
.WithMetrics(builder =>
{
builder.AddHttpClientInstrumentation();
});
builder.Logging.AddOpenTelemetry();
var host = builder.Build();
host.Run();
}
}
Application Insights 通过 ApplicationInsightsServiceOptions
提供更多配置选项。
Application Insights 设置 |
OpenTelemetry 替代项 |
AddAutoCollectedMetricExtractor |
空值 |
应用程序版本 |
在资源上设置“service.version” |
ConnectionString |
请参阅有关配置连接字符串的说明。 |
依赖收集选项 |
不适用。 若要自定义依赖项,请查看适用的检测库的可用配置选项。 |
开发者模式 |
空值 |
启用主动遥测配置设置 |
空值 |
启用自适应采样 |
不适用。 仅支持固定速率采样。 |
启用应用服务心跳遥测模块 |
空值 |
启用身份验证跟踪JavaScript |
空值 |
启用Azure实例元数据遥测模块 |
空值 |
启用依赖追踪遥测模块 |
请参阅有关筛选跟踪的说明。 |
启用诊断遥测模块 |
空值 |
启用事件计数器收集模块 |
空值 |
EnableHeartbeat |
空值 |
启用性能计数器收集模块 |
空值 |
启用快速脉冲指标流 |
Azure监控选项.启用实时指标 |
启用请求跟踪遥测模块 (EnableRequestTrackingTelemetryModule) |
请参阅有关筛选跟踪的说明。 |
终端地址 |
使用 ConnectionString。 |
仪表密钥 |
使用 ConnectionString。 |
请求集合选项 |
不适用。 请参阅 OpenTelemetry.Instrumentation.AspNetCore 选项。 |
删除自定义配置
以下方案是可选方案,仅适用于高级用户。
如果对可用于TelemetryClient
的 的引用有任何多余,则应删除这些多余引用。
如果以自定义 或 TelemetryProcessor
形式添加了任何TelemetryInitializer
,则应将其删除。 可以在你的 ServiceCollection
中找到它们。
builder.Services.AddSingleton<ITelemetryInitializer, MyCustomTelemetryInitializer>();
builder.Services.AddApplicationInsightsTelemetryProcessor<MyCustomTelemetryProcessor>();
删除 JavaScript 代码片段
如果使用 Application Insights .NET SDK 提供的代码片段,则还必须将其删除。
有关要删除的内容的完整代码示例,请查看为 Web 应用程序启用客户端遥测数据指南。
如果添加了 JavaScript SDK 以收集客户端遥测数据,也可以将其删除,尽管它会在不使用 .NET SDK 的情况下继续工作。
有关要删除的内容的完整代码示例,请查看 JavaScript SDK 的加入指南。
删除任何 Visual Studio 项目
如果使用 Visual Studio 载入 Application Insights,则可以在项目中留下更多文件。
-
Properties/ServiceDependencies
目录可能引用 Application Insights 资源。
若要将遥测数据发送到 Application Insights,必须将 Azure Monitor 导出程序添加到所有三个信号的配置中。
Global.asax.cs
以下代码示例扩展了上一个示例。
它现在收集遥测数据并将其发送到 Application Insights。
public class Global : System.Web.HttpApplication
{
private TracerProvider? tracerProvider;
private MeterProvider? meterProvider;
internal static ILoggerFactory loggerFactory;
protected void Application_Start()
{
this.tracerProvider = Sdk.CreateTracerProviderBuilder()
.AddAspNetInstrumentation()
.AddHttpClientInstrumentation()
.AddSqlClientInstrumentation()
.AddAzureMonitorTraceExporter()
.Build();
this.meterProvider = Sdk.CreateMeterProviderBuilder()
.AddAspNetInstrumentation()
.AddHttpClientInstrumentation()
.AddAzureMonitorMetricExporter()
.Build();
loggerFactory = LoggerFactory.Create(builder =>
{
builder.AddOpenTelemetry(logging => logging.AddAzureMonitorLogExporter());
});
}
protected void Application_End()
{
this.tracerProvider?.Dispose();
this.meterProvider?.Dispose();
loggerFactory?.Dispose();
}
}
建议在环境变量中设置连接字符串:
APPLICATIONINSIGHTS_CONNECTION_STRING=<Your Connection String>
如要详细了解配置连接字符串的更多选项,请参阅配置 Application Insights 连接字符串。
若要将遥测数据发送到 Application Insights,必须将 Azure Monitor 导出程序添加到所有三个信号的配置中。
Program.cs
以下代码示例扩展了上一个示例。
它现在收集遥测数据并将其发送到 Application Insights。
using Microsoft.Extensions.Logging;
using OpenTelemetry;
using OpenTelemetry.Metrics;
using OpenTelemetry.Trace;
internal class Program
{
static void Main(string[] args)
{
TracerProvider tracerProvider = Sdk.CreateTracerProviderBuilder()
.AddHttpClientInstrumentation()
.AddSqlClientInstrumentation()
.AddAzureMonitorTraceExporter()
.Build();
MeterProvider meterProvider = Sdk.CreateMeterProviderBuilder()
.AddHttpClientInstrumentation()
.AddAzureMonitorMetricExporter()
.Build();
ILoggerFactory loggerFactory = LoggerFactory.Create(builder =>
{
builder.AddOpenTelemetry(logging => logging.AddAzureMonitorLogExporter());
});
Console.WriteLine("Hello, World!");
tracerProvider.Dispose();
meterProvider.Dispose();
loggerFactory.Dispose();
}
}
建议在环境变量中设置连接字符串:
APPLICATIONINSIGHTS_CONNECTION_STRING=<Your Connection String>
如要详细了解配置连接字符串的更多选项,请参阅配置 Application Insights 连接字符串。
删除自定义配置
以下方案是可选方案,适用于高级用户。
如果对用于TelemetryClient
的 的引用有任何多余,则应删除这些多余引用。
删除作为自定义 或 TelemetryProcessor
添加的TelemetryInitializer
。 配置会引用它们。
删除任何 Visual Studio 项目
如果使用 Visual Studio 载入 Application Insights,则可以在项目中留下更多文件。
ConnectedService.json
可能引用 Application Insights 资源。
[Your project's name].csproj
可能引用 Application Insights 资源:
<ApplicationInsightsResourceId>/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/Default-ApplicationInsights-ChinaNorth/providers/microsoft.insights/components/WebApplication4</ApplicationInsightsResourceId>
若要将遥测数据发送到 Application Insights,必须将 Azure Monitor 导出程序添加到所有三个信号的配置中。
Program.cs
以下代码示例扩展了上一个示例。
它现在收集遥测数据并将其发送到 Application Insights。
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
public class Program
{
public static void Main(string[] args)
{
var builder = Host.CreateApplicationBuilder(args);
builder.Services.AddHostedService<Worker>();
builder.Services.AddOpenTelemetry()
.WithTracing(builder =>
{
builder.AddHttpClientInstrumentation();
builder.AddSqlClientInstrumentation();
builder.AddAzureMonitorTraceExporter();
})
.WithMetrics(builder =>
{
builder.AddHttpClientInstrumentation();
builder.AddAzureMonitorMetricExporter();
});
builder.Logging.AddOpenTelemetry(logging => logging.AddAzureMonitorLogExporter());
var host = builder.Build();
host.Run();
}
}
建议在环境变量中设置连接字符串:
APPLICATIONINSIGHTS_CONNECTION_STRING=<Your Connection String>
如要详细了解配置连接字符串的更多选项,请参阅配置 Application Insights 连接字符串。
更多配置
Application Insights 通过 ApplicationInsightsServiceOptions
提供更多配置选项。
Application Insights 设置 |
OpenTelemetry 替代项 |
AddAutoCollectedMetricExtractor |
空值 |
应用程序版本 |
在资源上设置“service.version” |
ConnectionString |
请参阅有关配置连接字符串的说明。 |
依赖收集选项 |
不适用。 若要自定义依赖项,请查看适用的检测库的可用配置选项。 |
开发者模式 |
空值 |
启用自适应采样 |
不适用。 仅支持固定速率采样。 |
启用应用服务心跳遥测模块 |
空值 |
启用Azure实例元数据遥测模块 |
空值 |
启用依赖追踪遥测模块 |
请参阅有关筛选跟踪的说明。 |
启用诊断遥测模块 |
空值 |
启用事件计数器收集模块 |
空值 |
EnableHeartbeat |
空值 |
启用性能计数器收集模块 |
空值 |
启用快速脉冲指标流 |
Azure监控选项.启用实时指标 |
终端地址 |
使用 ConnectionString。 |
仪表密钥 |
使用 ConnectionString。 |
删除自定义配置
以下方案是可选方案,适用于高级用户。
如果对用于TelemetryClient
的 的引用有任何多余,则应删除这些多余引用。
如果以自定义 或 TelemetryProcessor
形式添加了任何TelemetryInitializer
,则应将其删除。 可以在你的 ServiceCollection
中找到引用。
builder.Services.AddSingleton<ITelemetryInitializer, MyCustomTelemetryInitializer>();
builder.Services.AddApplicationInsightsTelemetryProcessor<MyCustomTelemetryProcessor>();
删除任何 Visual Studio 项目
如果使用 Visual Studio 载入 Application Insights,则可以在项目中留下更多文件。
-
Properties/ServiceDependencies
目录可能引用 Application Insights 资源。
提示
我们的产品组正在积极寻求有关本文档的反馈。 向 otel@microsoft.com 提供反馈或查看“支持”部分。
后续步骤
提示
我们的产品组正在积极寻求有关本文档的反馈。 向 otel@microsoft.com 提供反馈或查看“支持”部分。
支持