Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом руководстве приведены пошаговые инструкции по миграции приложений с использования пакетов SDK Application Insights (классический API) на Azure Monitor OpenTelemetry.
Ожидается аналогичный опыт инструментирования OpenTelemetry в Azure Monitor, как и с пакетами SDK Application Insights. Дополнительные сведения и сравнение функций по функциям см. в разделе о состоянии выпуска компонентов.
- ASP.NET Core миграция на дистрибутив OpenTelemetry от Azure Monitor. (
Azure.Monitor.OpenTelemetry.AspNetCoreПакет NuGet) - Миграция ASP.NET, приложений консольного типа и WorkerService на OpenTelemetry Exporter для Azure Monitor. (
Azure.Monitor.OpenTelemetry.ExporterПакет NuGet)
Если вы начинаете работу с Application Insights и не хотите переноситься из классического API, см. статью "Включить Azure Monitor OpenTelemetry".
Замечание
Сведения о приложениях-функциях Azure см. в статье "Использование OpenTelemetry" с функциями Azure.
Предпосылки
ASP.NET Core
- Веб-приложение ASP.NET Core уже инструментировано с помощью Application Insights без каких-либо настроек.
- Активно поддерживаемая версия .NET.
ASP.NET
- Веб-приложение ASP.NET уже инструментировано с помощью Application Insights.
- Активно поддерживаемая версия .NET Framework.
Console
- Консольное приложение уже инструментировано с помощью Application Insights.
- Активно поддерживаемая версия .NET Framework или .NET.
WorkerService
- Приложение WorkerService уже инструментировано с помощью Application Insights без каких-либо настроек.
- Активно поддерживаемая версия .NET.
Подсказка
Наша группа продуктов активно ищет отзывы об этой документации. Предоставьте отзыв [email protected] или просмотрите раздел Поддержки.
Удаление пакета SDK Application Insights
Замечание
Прежде чем продолжить эти действия, убедитесь, что у вас есть текущая резервная копия приложения.
ASP.NET Core
Удаление пакетов NuGet
Microsoft.ApplicationInsights.AspNetCoreУдалите пакет из вашегоcsprojприложения.dotnet remove package Microsoft.ApplicationInsights.AspNetCoreУдалите код инициализации и кастомизации
Удалите все ссылки на типы Application Insights в базе кода.
Подсказка
После удаления пакета Application Insights вы можете повторно создать приложение, чтобы получить список ссылок, которые необходимо удалить.
Удалите Application Insights из вашей
ServiceCollectionстроки, удалив следующую строку:builder.Services.AddApplicationInsightsTelemetry();Удалите раздел
ApplicationInsightsиз вашегоappsettings.json.{ "ApplicationInsights": { "ConnectionString": "<YOUR-CONNECTION-STRING>" } }
Очистка и сборка
Проверьте каталог bin, чтобы убедиться, что все ссылки на
Microsoft.ApplicationInsights.*были удалены.Тестирование приложения
Убедитесь, что приложение не имеет непредвиденных последствий.
ASP.NET
Удаление пакетов NuGet
Удалите
Microsoft.AspNet.TelemetryCorrelationпакет и всеMicrosoft.ApplicationInsights.*пакеты из вашегоcsprojиpackages.config.Удалите файл
ApplicationInsights.config.Удалите раздел из файла приложения
Web.config.Два httpModules автоматически добавлены в web.config при первом добавлении ApplicationInsights в проект.
Любые ссылки на
TelemetryCorrelationHttpModuleиApplicationInsightsWebTrackingдолжны быть удалены. Если вы добавили Application Insights в модули 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. Это часть запуска приложения для инициализации пакета SDK Application Insights.Следующие сценарии являются необязательными и предназначены для опытных пользователей.
- Если у вас есть ссылки на
TelemetryClient, которые используются для вручную записывать телеметрию, их следует удалить. - Если вы добавили любую пользовательскую фильтрацию или обогащение в виде пользовательского
TelemetryProcessorилиTelemetryInitializer, их следует удалить. Вы можете найти их упомянутыми в вашей конфигурации. - Если в вашем проекте в каталоге
App_StartестьFilterConfig.cs, проверьте наличие пользовательских обработчиков исключений, ссылающихся на Application Insights, и удалите их.
- Если у вас есть ссылки на
Удаление фрагмента кода JavaScript
Если вы добавили пакет SDK JavaScript для сбора данных телеметрии на стороне клиента, его также можно удалить, хотя он продолжает работать без пакета SDK для .NET. Полные примеры кода для удаления см. в руководстве по подключению пакета SDK для JavaScript.
Удалите любые артефакты 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-EastUS/providers/microsoft.insights/components/WebApplication4</ApplicationInsightsResourceId>
Очистка и сборка
Проверьте каталог bin, чтобы убедиться, что все ссылки на
Microsoft.ApplicationInsights.были удалены.Тестирование приложения
Убедитесь, что приложение не имеет непредвиденных последствий.
Console
Удаление пакетов NuGet
Удалите все
Microsoft.ApplicationInsights.*пакеты из вашихcsprojиpackages.config.dotnet remove package Microsoft.ApplicationInsightsПодсказка
Если вы использовали Microsoft.ApplicationInsights.WorkerService, перейдите на вкладки WorkerService.
Удалите код и кастомизации инициализации
Удалите все ссылки на типы Application Insights в базе кода.
Подсказка
После удаления пакета Application Insights вы можете повторно создать приложение, чтобы получить список ссылок, которые необходимо удалить.
Удаление ссылок на
TelemetryConfigurationилиTelemetryClient. Оно должно быть частью запуска приложения, чтобы инициализировать пакет SDK Application Insights.var config = TelemetryConfiguration.CreateDefault(); var client = new TelemetryClient(config);
Подсказка
Если вы использовали
AddApplicationInsightsTelemetryWorkerService()для добавления Application Insights вServiceCollection, обратитесь к вкладкам WorkerService.Очистка и сборка
Проверьте каталог bin, чтобы убедиться, что все ссылки на
Microsoft.ApplicationInsights.были удалены.Тестирование приложения
Убедитесь, что приложение не имеет непредвиденных последствий.
WorkerService
Удаление пакетов NuGet
Удалите
Microsoft.ApplicationInsights.WorkerServiceпакет из вашегоcsproj.dotnet remove package Microsoft.ApplicationInsights.WorkerServiceУдалите код и настройки инициализации
Удалите все ссылки на типы Application Insights в базе кода.
Подсказка
После удаления пакета Application Insights вы можете повторно создать приложение, чтобы получить список ссылок, которые необходимо удалить.
Удалите Application Insights из вашей
ServiceCollectionстроки, удалив следующую строку:builder.Services.AddApplicationInsightsTelemetryWorkerService();Удалите секцию
ApplicationInsightsиз вашегоappsettings.json.{ "ApplicationInsights": { "ConnectionString": "<YOUR-CONNECTION-STRING>" } }
Очистка и сборка
Проверьте каталог bin, чтобы убедиться, что все ссылки на
Microsoft.ApplicationInsights.*были удалены.Тестирование приложения
Убедитесь, что приложение не имеет непредвиденных последствий.
Подсказка
Наша группа продуктов активно ищет отзывы об этой документации. Предоставьте отзыв [email protected] или просмотрите раздел Поддержки.
Включение OpenTelemetry
Мы рекомендуем создать ресурс разработки и использовать его строку подключения при выполнении этих инструкций.
Запланируйте обновление строки подключения для отправки телеметрии исходному ресурсу после подтверждения успешной миграции.
ASP.NET Core
Установка дистрибутива Azure Monitor
Наш дистрибутив Azure Monitor обеспечивает автоматическую телеметрию, включая библиотеки инструментирования OpenTelemetry для сбора трассировок, метрик, журналов и исключений, а также позволяет собирать пользовательские данные телеметрии.
Установка дистрибутива Azure Monitor включает пакет SDK OpenTelemetry в качестве зависимости.
dotnet add package Azure.Monitor.OpenTelemetry.AspNetCoreДобавление и настройка OpenTelemetry и Azure Monitor
SDK OpenTelemetry должен быть настроен при запуске приложения в качестве части вашей
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.
ASP.NET
Установка пакета SDK OpenTelemetry с помощью Azure Monitor
Установка экспортера Azure Monitor предоставляет пакет SDK OpenTelemetry в качестве зависимости.
dotnet add package Azure.Monitor.OpenTelemetry.ExporterНастройка OpenTelemetry в рамках запуска приложения
Пакет SDK OpenTelemetry должен быть настроен при запуске приложения, как правило, в
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();
}
}
Console
Установка пакета SDK OpenTelemetry с помощью Azure Monitor
Установка экспортера Azure Monitor включает пакет SDK OpenTelemetry как зависимость.
dotnet add package Azure.Monitor.OpenTelemetry.ExporterНастройка OpenTelemetry в рамках запуска приложения
Пакет SDK OpenTelemery должен быть настроен при запуске приложения, как правило, в .
Program.csOpenTelemetry включает концепцию трех сигналов: трассировки, метрики и журналы. Каждый из этих сигналов необходимо настроить как часть запуска приложения.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();
}
}
WorkerService
Установка пакета SDK OpenTelemetry с помощью Azure Monitor
Установка экспортера Azure Monitor добавляет SDK OpenTelemetry в качестве зависимости.
dotnet add package Azure.Monitor.OpenTelemetry.ExporterТакже необходимо установить пакет OpenTelemetry Extensions Hosting.
dotnet add package OpenTelemetry.Extensions.HostingНастройка OpenTelemetry в рамках запуска приложения
SDK OpenTelemetry должен быть настроен при запуске приложения, как правило, в
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();
}
}
Подсказка
Наша группа продуктов активно ищет отзывы об этой документации. Предоставьте отзыв [email protected] или просмотрите раздел Поддержки.
Установка и настройка библиотек инструментирования
ASP.NET Core
Библиотеки инструментирования можно добавить в проект для автоматического сбора данных телеметрии о конкретных компонентах или зависимостях.
В дистрибутив включены следующие библиотеки.
Настройка библиотек инструментирования
Дистрибутив Azure Monitor включает инструментирование .NET OpenTelemetry для ASP.NET Core, HttpClient и SQLClient. Эти встроенные инструменты можно настроить или вручную добавить дополнительные инструментальные средства с помощью API OpenTelemetry.
Ниже приведены некоторые примеры настройки инструментирования.
Настройка 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 в рамках нашего пакета, пока оно еще находится в бета-версии. Когда он достигнет стабильного выпуска, мы будем включать его в качестве стандартной ссылки на пакет. До тех пор, чтобы настроить инструментирование SQLClient, добавьте OpenTelemetry.Instrumentation.SqlClient ссылку на пакет в проект и используйте его общедоступный API.
dotnet add package --prerelease OpenTelemetry.Instrumentation.SqlClient
builder.Services.AddOpenTelemetry().UseAzureMonitor().WithTracing(builder =>
{
builder.AddSqlClientInstrumentation(options =>
{
options.SetDbStatementForStoredProcedure = false;
});
});
ASP.NET
Библиотеки инструментирования можно добавить в проект для автоматического сбора данных телеметрии о конкретных компонентах или зависимостях. Рекомендуется использовать следующие библиотеки:
OpenTelemetry.Instrumentation.AspNet можно использовать для сбора данных телеметрии для входящих запросов. Azure Monitor сопоставляет его с Request Telemetry.
dotnet add package OpenTelemetry.Instrumentation.AspNetЧтобы это сделать, требуется добавить дополнительный HttpModule в ваш
Web.config.<system.webServer> <modules> <add name="TelemetryHttpModule" type="OpenTelemetry.Instrumentation.AspNet.TelemetryHttpModule, OpenTelemetry.Instrumentation.AspNet.TelemetryHttpModule" preCondition="integratedMode,managedHandler" /> </modules> </system.webServer>Полное руководство по началу работы доступно здесь: OpenTelemetry.Instrumentation.AspNet Readme
OpenTelemetry.Instrumentation.Http можно использовать для сбора данных телеметрии для исходящих зависимостей HTTP. Azure Monitor сопоставляет его с телеметрией зависимостей.
dotnet add package OpenTelemetry.Instrumentation.HttpПолное руководство по началу работы доступно здесь: OpenTelemetry.Instrumentation.Http Readme
OpenTelemetry.Instrumentation.SqlClient можно использовать для сбора данных телеметрии для зависимостей MS SQL. Azure Monitor сопоставляет его с телеметрией зависимостей.
dotnet add package --prerelease OpenTelemetry.Instrumentation.SqlClientПолное руководство по началу работы доступно здесь: OpenTelemetry.Instrumentation.SqlClient Readme
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();
}
}
Console
Библиотеки инструментирования можно добавить в проект для автоматического сбора данных телеметрии о конкретных компонентах или зависимостях. Рекомендуется использовать следующие библиотеки:
OpenTelemetry.Instrumentation.Http можно использовать для сбора данных телеметрии для исходящих зависимостей HTTP. Azure Monitor сопоставляет его с телеметрией зависимостей.
dotnet add package OpenTelemetry.Instrumentation.HttpПолное руководство по началу работы доступно здесь: OpenTelemetry.Instrumentation.Http Readme
OpenTelemetry.Instrumentation.SqlClient можно использовать для сбора данных телеметрии для зависимостей MS SQL. Azure Monitor сопоставляет его с телеметрией зависимостей.
dotnet add package --prerelease OpenTelemetry.Instrumentation.SqlClientПолное руководство по началу работы доступно здесь: OpenTelemetry.Instrumentation.SqlClient Readme
Следующий пример кода развивает предыдущий пример. Теперь она собирает данные телеметрии, но пока не отправляется в 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();
}
}
WorkerService
Библиотеки инструментирования можно добавить в проект для автоматического сбора данных телеметрии о конкретных компонентах или зависимостях. Рекомендуется использовать следующие библиотеки:
OpenTelemetry.Instrumentation.Http можно использовать для сбора данных телеметрии для исходящих зависимостей HTTP. Azure Monitor сопоставляет его с телеметрией зависимостей.
dotnet add package OpenTelemetry.Instrumentation.HttpПолное руководство по началу работы доступно здесь: OpenTelemetry.Instrumentation.Http Readme
OpenTelemetry.Instrumentation.SqlClient можно использовать для сбора данных телеметрии для зависимостей MS SQL. Azure Monitor сопоставляет его с телеметрией зависимостей.
dotnet add package --prerelease OpenTelemetry.Instrumentation.SqlClientПолное руководство по началу работы доступно здесь: OpenTelemetry.Instrumentation.SqlClient Readme
Следующий пример кода расширяет предыдущий пример. Теперь она собирает данные телеметрии, но пока не отправляется в 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();
}
}
Настройка Azure Monitor
ASP.NET Core
Application Insights предлагает множество дополнительных параметров конфигурации с помощью ApplicationInsightsServiceOptions.
| Настройка Application Insights | Альтернатива OpenTelemetry |
|---|---|
| ДобавитьАвтоматическиСобранныйМетрическийЭкстрактор | N/A |
| Версия приложения | Задайте значение "service.version" в ресурсе |
| ConnectionString | См. инструкции по настройке строки подключения. |
| ОпцииСборкиЗависимостей | N/A. Чтобы настроить зависимости, просмотрите доступные параметры конфигурации для применимых библиотек инструментирования. |
| DeveloperMode | N/A |
| ВключитьНастройкуАктивногоТелеучётаКонфигурации | N/A |
| Включить адаптивную выборку | N/A. Поддерживается только выборка фиксированной частоты. |
| Включить модуль телеметрии Heartbeat для служб приложений | N/A |
| ВключитьОтслеживаниеАутентификацииJavaScript | N/A |
| Включить модуль телеметрии метаданных экземпляра Azure | N/A |
| Включить модуль телеметрии отслеживания зависимостей | Инструкции по фильтрации трассировок. |
| ВключитьМодульДиагностическойТелеметрии (EnableDiagnosticsTelemetryModule) | N/A |
| EnableEventCounterCollectionModule (Модуль сбора счётчиков событий) | N/A |
| Включить HeartBeat | N/A |
| Включить Модуль Сбора Счетчиков Производительности | N/A |
| Включить QuickPulseMetricStream | AzureMonitorOptions.EnableLiveMetrics |
| Модуль телеметрии отслеживания запросов (EnableRequestTracking) | Инструкции по фильтрации трассировок. |
| Адрес конечной точки | Используйте ConnectionString. |
| Ключ инструментирования | Используйте ConnectionString. |
| ПараметрыЗапросаКоллекции | N/A. См. параметры OpenTelemetry.Instrumentation.AspNetCore. |
Удаление пользовательских конфигураций
Следующие сценарии являются необязательными и применяются только к расширенным пользователям.
Если у вас есть какие-либо упоминания о
TelemetryClient, которые можно использовать для ручной записи телеметрии, их следует удалить.Если вы добавили любую пользовательскую фильтрацию или обогащение в виде пользовательского
TelemetryProcessorилиTelemetryInitializer, их следует удалить. Их можно найти в вашемServiceCollection.builder.Services.AddSingleton<ITelemetryInitializer, MyCustomTelemetryInitializer>();builder.Services.AddApplicationInsightsTelemetryProcessor<MyCustomTelemetryProcessor>();Удаление фрагмента кода JavaScript
Если вы использовали фрагмент кода, предоставленный пакетом SDK для .NET Application Insights, он также должен быть удален. Полные примеры кода для удаления см. в руководстве по включению телеметрии на стороне клиента для веб-приложений.
Если вы добавили пакет SDK JavaScript для сбора данных телеметрии на стороне клиента, его также можно удалить, хотя он продолжает работать без пакета SDK для .NET. Полные примеры кода для удаления см. в руководстве по подключению пакета SDK для JavaScript.
Удалите любые артефакты Visual Studio
Если вы использовали Visual Studio для подключения к Application Insights, в проекте может быть больше файлов.
-
Properties/ServiceDependenciesВ каталоге может быть ссылка на ресурс Application Insights.
-
ASP.NET
Чтобы отправить данные телеметрии в 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.
Console
Чтобы отправить данные телеметрии в 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-EastUS/providers/microsoft.insights/components/WebApplication4</ApplicationInsightsResourceId>
WorkerService
Чтобы отправить данные телеметрии в 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 |
|---|---|
| ДобавитьАвтоматическиСобранныйМетрическийЭкстрактор | N/A |
| Версия приложения | Задайте значение "service.version" в ресурсе |
| ConnectionString | См. инструкции по настройке строки подключения. |
| ОпцииСбораЗависимостей | N/A. Чтобы настроить зависимости, просмотрите доступные параметры конфигурации для применимых библиотек инструментирования. |
| DeveloperMode | N/A |
| Включить адаптивную выборку | N/A. Поддерживается только выборка фиксированной частоты. |
| Включить модуль телеметрии Heartbeat для служб приложений | N/A |
| Включить модуль телеметрии метаданных экземпляра Azure | N/A |
| Включить модуль телеметрии отслеживания зависимостей | Смотрите инструкции по фильтрации трассировок. |
| ВключитьМодульДиагностическойТелеметрии (EnableDiagnosticsTelemetryModule) | N/A |
| EnableEventCounterCollectionModule (Модуль сбора счётчиков событий) | N/A |
| Включить HeartBeat | N/A |
| Включить Модуль Сбора Счетчиков Производительности | N/A |
| Включить QuickPulseMetricStream | AzureMonitorOptions.EnableLiveMetrics |
| Эндпоинт Адрес | Используйте ConnectionString. |
| InstrumentationKey | Используйте ConnectionString. |
Удаление пользовательских конфигураций
Следующие сценарии являются необязательными и применяются к опытным пользователям.
Если у вас есть другие ссылки на
TelemetryClient, которые используются для ручной записи телеметрии, их следует удалить.Если вы добавили любую пользовательскую фильтрацию или обогащение в виде настраиваемого
TelemetryProcessorилиTelemetryInitializer, то его следует удалить. Ссылки можно найти в вашемServiceCollection.builder.Services.AddSingleton<ITelemetryInitializer, MyCustomTelemetryInitializer>();builder.Services.AddApplicationInsightsTelemetryProcessor<MyCustomTelemetryProcessor>();Удалите любые артефакты Visual Studio
Если вы использовали Visual Studio для подключения к Application Insights, в проекте может быть больше файлов.
-
Properties/ServiceDependenciesВ каталоге может быть ссылка на ресурс Application Insights.
-
Подсказка
Наша группа продуктов активно ищет отзывы об этой документации. Предоставьте отзыв [email protected] или просмотрите раздел Поддержка.
Дальнейшие шаги
- Чтобы ознакомиться с часто задаваемыми вопросами (FAQ), см. статью "Миграция пакетов SDK для .NET Application Insights в Azure Monitor OpenTelemetry"
- Руководство по началу работы с пакетом SDK для OpenTelemetry
- Пример проекта OpenTelemetry ASP.NET Core
- Логирование в C# и .NET
- Руководство по началу работы с Azure Monitor OpenTelemetry в ASP.NET Core
Примеры проектов
- ASP.NET Core: демонстрационный проект дистрибутива Azure Monitor
- ASP.NET: пример проекта ASP.NET OpenTelemetry
- Консоль:
Подсказка
Наша группа продуктов активно ищет отзывы об этой документации. Предоставьте отзыв [email protected] или просмотрите раздел Поддержки.
Support
- Для проблем с поддержкой Azure откройте запрос в службу поддержки Azure.
- Для проблем с OpenTelemetry обратитесь непосредственно к сообществу OpenTelemetry .NET .
- Список открытых проблем, связанных с экспортером Azure Monitor, см. на странице проблем GitHub.