Поделиться через


Переход с пакетов SDK Application Insights на Azure Monitor OpenTelemetry

В этом руководстве приведены пошаговые инструкции по миграции приложений с использования пакетов SDK Application Insights (классический API) на Azure Monitor OpenTelemetry.

Ожидается аналогичный опыт инструментирования OpenTelemetry в Azure Monitor, как и с пакетами SDK Application Insights. Дополнительные сведения и сравнение функций по функциям см. в разделе о состоянии выпуска компонентов.

Если вы начинаете работу с 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

  1. Удаление пакетов NuGet

    Microsoft.ApplicationInsights.AspNetCore Удалите пакет из вашего csprojприложения.

    dotnet remove package Microsoft.ApplicationInsights.AspNetCore
    
  2. Удалите код инициализации и кастомизации

    Удалите все ссылки на типы Application Insights в базе кода.

    Подсказка

    После удаления пакета Application Insights вы можете повторно создать приложение, чтобы получить список ссылок, которые необходимо удалить.

    • Удалите Application Insights из вашей ServiceCollection строки, удалив следующую строку:

      builder.Services.AddApplicationInsightsTelemetry();
      
    • Удалите раздел ApplicationInsights из вашего appsettings.json.

      {
          "ApplicationInsights": {
              "ConnectionString": "<YOUR-CONNECTION-STRING>"
          }
      }
      
  3. Очистка и сборка

    Проверьте каталог bin, чтобы убедиться, что все ссылки на Microsoft.ApplicationInsights.* были удалены.

  4. Тестирование приложения

    Убедитесь, что приложение не имеет непредвиденных последствий.

ASP.NET

  1. Удаление пакетов NuGet

    Удалите Microsoft.AspNet.TelemetryCorrelation пакет и все Microsoft.ApplicationInsights.* пакеты из вашего csproj и packages.config.

  2. Удалите файл ApplicationInsights.config.

  3. Удалите раздел из файла приложения 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.

  4. Удаление кода инициализации и настроек

    Удалите все ссылки на типы Application Insights в базе кода.

    Подсказка

    После удаления пакета Application Insights вы можете повторно создать приложение, чтобы получить список ссылок, которые необходимо удалить.

    • Удаление ссылок на TelemetryConfiguration или TelemetryClient. Это часть запуска приложения для инициализации пакета SDK Application Insights.

    • Следующие сценарии являются необязательными и предназначены для опытных пользователей.

      • Если у вас есть ссылки на TelemetryClient, которые используются для вручную записывать телеметрию, их следует удалить.
      • Если вы добавили любую пользовательскую фильтрацию или обогащение в виде пользовательского TelemetryProcessor или TelemetryInitializer, их следует удалить. Вы можете найти их упомянутыми в вашей конфигурации.
      • Если в вашем проекте в каталоге App_Start есть FilterConfig.cs, проверьте наличие пользовательских обработчиков исключений, ссылающихся на Application Insights, и удалите их.
  5. Удаление фрагмента кода JavaScript

    Если вы добавили пакет SDK JavaScript для сбора данных телеметрии на стороне клиента, его также можно удалить, хотя он продолжает работать без пакета SDK для .NET. Полные примеры кода для удаления см. в руководстве по подключению пакета SDK для JavaScript.

  6. Удалите любые артефакты 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>
      
  7. Очистка и сборка

    Проверьте каталог bin, чтобы убедиться, что все ссылки на Microsoft.ApplicationInsights. были удалены.

  8. Тестирование приложения

    Убедитесь, что приложение не имеет непредвиденных последствий.

Console

  1. Удаление пакетов NuGet

    Удалите все Microsoft.ApplicationInsights.* пакеты из ваших csproj и packages.config.

    dotnet remove package Microsoft.ApplicationInsights
    

    Подсказка

    Если вы использовали Microsoft.ApplicationInsights.WorkerService, перейдите на вкладки WorkerService.

  2. Удалите код и кастомизации инициализации

    Удалите все ссылки на типы Application Insights в базе кода.

    Подсказка

    После удаления пакета Application Insights вы можете повторно создать приложение, чтобы получить список ссылок, которые необходимо удалить.

    • Удаление ссылок на TelemetryConfiguration или TelemetryClient. Оно должно быть частью запуска приложения, чтобы инициализировать пакет SDK Application Insights.

      var config = TelemetryConfiguration.CreateDefault();
      var client = new TelemetryClient(config);
      

    Подсказка

    Если вы использовали AddApplicationInsightsTelemetryWorkerService() для добавления Application Insights в ServiceCollection, обратитесь к вкладкам WorkerService.

  3. Очистка и сборка

    Проверьте каталог bin, чтобы убедиться, что все ссылки на Microsoft.ApplicationInsights. были удалены.

  4. Тестирование приложения

    Убедитесь, что приложение не имеет непредвиденных последствий.

WorkerService

  1. Удаление пакетов NuGet

    Удалите Microsoft.ApplicationInsights.WorkerService пакет из вашего csproj.

    dotnet remove package Microsoft.ApplicationInsights.WorkerService
    
  2. Удалите код и настройки инициализации

    Удалите все ссылки на типы Application Insights в базе кода.

    Подсказка

    После удаления пакета Application Insights вы можете повторно создать приложение, чтобы получить список ссылок, которые необходимо удалить.

    • Удалите Application Insights из вашей ServiceCollection строки, удалив следующую строку:

      builder.Services.AddApplicationInsightsTelemetryWorkerService();
      
    • Удалите секцию ApplicationInsights из вашего appsettings.json.

      {
          "ApplicationInsights": {
              "ConnectionString": "<YOUR-CONNECTION-STRING>"
          }
      }
      
  3. Очистка и сборка

    Проверьте каталог bin, чтобы убедиться, что все ссылки на Microsoft.ApplicationInsights.* были удалены.

  4. Тестирование приложения

    Убедитесь, что приложение не имеет непредвиденных последствий.

Подсказка

Наша группа продуктов активно ищет отзывы об этой документации. Предоставьте отзыв [email protected] или просмотрите раздел Поддержки.

Включение OpenTelemetry

Мы рекомендуем создать ресурс разработки и использовать его строку подключения при выполнении этих инструкций.

Снимок экрана: обзор Application Insights и строка подключения.

Запланируйте обновление строки подключения для отправки телеметрии исходному ресурсу после подтверждения успешной миграции.

ASP.NET Core

  1. Установка дистрибутива Azure Monitor

    Наш дистрибутив Azure Monitor обеспечивает автоматическую телеметрию, включая библиотеки инструментирования OpenTelemetry для сбора трассировок, метрик, журналов и исключений, а также позволяет собирать пользовательские данные телеметрии.

    Установка дистрибутива Azure Monitor включает пакет SDK OpenTelemetry в качестве зависимости.

    dotnet add package Azure.Monitor.OpenTelemetry.AspNetCore
    
  2. Добавление и настройка 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

  1. Установка пакета SDK OpenTelemetry с помощью Azure Monitor

    Установка экспортера Azure Monitor предоставляет пакет SDK OpenTelemetry в качестве зависимости.

    dotnet add package Azure.Monitor.OpenTelemetry.Exporter
    
  2. Настройка 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

  1. Установка пакета SDK OpenTelemetry с помощью Azure Monitor

    Установка экспортера Azure Monitor включает пакет SDK OpenTelemetry как зависимость.

    dotnet add package Azure.Monitor.OpenTelemetry.Exporter
    
  2. Настройка OpenTelemetry в рамках запуска приложения

    Пакет SDK OpenTelemery должен быть настроен при запуске приложения, как правило, в .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();
    }
}

WorkerService

  1. Установка пакета SDK OpenTelemetry с помощью Azure Monitor

    Установка экспортера Azure Monitor добавляет SDK OpenTelemetry в качестве зависимости.

    dotnet add package Azure.Monitor.OpenTelemetry.Exporter
    

    Также необходимо установить пакет OpenTelemetry Extensions Hosting.

    dotnet add package OpenTelemetry.Extensions.Hosting
    
  2. Настройка 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

Библиотеки инструментирования можно добавить в проект для автоматического сбора данных телеметрии о конкретных компонентах или зависимостях. Рекомендуется использовать следующие библиотеки:

  1. 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

  2. OpenTelemetry.Instrumentation.Http можно использовать для сбора данных телеметрии для исходящих зависимостей HTTP. Azure Monitor сопоставляет его с телеметрией зависимостей.

    dotnet add package OpenTelemetry.Instrumentation.Http
    

    Полное руководство по началу работы доступно здесь: OpenTelemetry.Instrumentation.Http Readme

  3. 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

Библиотеки инструментирования можно добавить в проект для автоматического сбора данных телеметрии о конкретных компонентах или зависимостях. Рекомендуется использовать следующие библиотеки:

  1. OpenTelemetry.Instrumentation.Http можно использовать для сбора данных телеметрии для исходящих зависимостей HTTP. Azure Monitor сопоставляет его с телеметрией зависимостей.

    dotnet add package OpenTelemetry.Instrumentation.Http
    

    Полное руководство по началу работы доступно здесь: OpenTelemetry.Instrumentation.Http Readme

  2. 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

Библиотеки инструментирования можно добавить в проект для автоматического сбора данных телеметрии о конкретных компонентах или зависимостях. Рекомендуется использовать следующие библиотеки:

  1. OpenTelemetry.Instrumentation.Http можно использовать для сбора данных телеметрии для исходящих зависимостей HTTP. Azure Monitor сопоставляет его с телеметрией зависимостей.

    dotnet add package OpenTelemetry.Instrumentation.Http
    

    Полное руководство по началу работы доступно здесь: OpenTelemetry.Instrumentation.Http Readme

  2. 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] или просмотрите раздел Поддержка.

Дальнейшие шаги

Примеры проектов

Подсказка

Наша группа продуктов активно ищет отзывы об этой документации. Предоставьте отзыв [email protected] или просмотрите раздел Поддержки.

Support