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


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

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

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

Подсказка

Сведения об архивированном классическом API SDK для .NET или Node.js см. в разделе API 2.x.

Используйте пакет средств разработки программного обеспечения Application Insights .NET (SDK) 3.x, чтобы обновить пакет SDK Application Insights .NET с версии 2.x до реализации на основе OpenTelemetry (OTel). Пакет SDK для 3.x сохраняет большинство интерфейсов TelemetryClient и TelemetryConfiguration API и использует Azure Monitor OpenTelemetry Exporter для отправки телеметрии в Application Insights.

Большинство классических Track* вызовов продолжают функционировать после обновления, но они направляются через внутренний слой привязки, который выдает сигналы OpenTelemetry.

Если вы создаете новое приложение или уже используете дистрибутив OpenTelemetry Azure Monitor, используйте вместо этого Azure Monitor OpenTelemetry Distro. Не используйте SDK Application Insights .NET 3.x и дистрибутив Azure Monitor OpenTelemetry в одном приложении.

Обзор пакета SDK 3.x для Application Insights .NET

Пакет SDK 3.x для Application Insights .NET предоставляет следующие пакеты NuGet:

  • Microsoft.ApplicationInsights для TelemetryClient и TelemetryConfiguration
  • Microsoft.ApplicationInsights.AspNetCore для основных веб-приложений ASP.NET (активные страницы сервера .NET)
  • Microsoft.ApplicationInsights.WorkerService для рабочих служб и консольных приложений
  • Microsoft.ApplicationInsights.Web для ASP.NET-приложений на .NET Framework
  • Microsoft.ApplicationInsights.NLogTarget для интеграции NLog (бета-версия)

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

Обновление до версии 3.x

Шаг 1. Удаление ссылок на несовместимые пакеты

Удалите эти пакеты, так как они несовместимы с пакетом SDK 3.x:

  • Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel
  • Microsoft.ApplicationInsights.DependencyCollector
  • Microsoft.ApplicationInsights.EventCounterCollector
  • Microsoft.ApplicationInsights.PerfCounterCollector
  • Microsoft.ApplicationInsights.WindowsServer
  • Microsoft.Extensions.Logging.ApplicationInsights
  • Microsoft.ApplicationInsights.Log4NetAppender
  • Microsoft.ApplicationInsights.TraceListener
  • Microsoft.ApplicationInsights.DiagnosticSourceListener
  • Microsoft.ApplicationInsights.EtwCollector
  • Microsoft.ApplicationInsights.EventSourceListener

Пакет SDK 3.x не публикует версии 3.x этих пакетов. Вместо этого используйте поддерживаемые пакеты 3.x, перечисленные в обзоре Application Insights .NET SDK 3.x. В следующих разделах описаны предполагаемые замены для этих пакетов. В некоторых случаях функциональные возможности встроены в поддерживаемые пакеты 3.x или заменяются API OpenTelemetry.

Замечание

Этот список включает только пакеты Майкрософт. Если вы используете сторонние пакеты, зависящие от Microsoft.ApplicationInsights версии 2.x (например, ), убедитесь, что Serilog.Sinks.ApplicationInsightsэти пакеты поддерживают пакет SDK 3.x перед обновлением. Следуйте рекомендациям от разработчиков пакетов.

Шаг 2. Обновление версий пакетов до 3.x

Обновите все оставшиеся поддерживаемые пакеты Application Insights до последней версии 3.x.

Это важно

Не смешивайте пакеты Application Insights 2.x и 3.x в одном приложении. Обновите все ссылки на пакеты Application Insights вместе.

Шаг 3. Обновление кода и конфигурации для критических изменений

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

2.x API, настройка или шаблон Руководство по версии 3.x
TrackPageView Удалите TrackPageView вызовы. Отслеживание представления страниц удаляется в пакете SDK для .NET 3.x.
TrackEvent, TrackException, и TrackAvailability перегрузки, которые включают IDictionary<string, double> metrics Удалите параметр пользовательских метрик. Отслеживайте метрики по отдельности с помощью TrackMetric().
GetMetric перегрузки, которые используют MetricConfiguration или MetricAggregationScope Используйте упрощенные GetMetric перегрузки. Конфигурация метрик и агрегирование управляются внутренне в пакете SDK 3.x.
InstrumentationKey конфигурация или TelemetryClient.InstrumentationKey Используйте TelemetryConfiguration.ConnectionString и укажите строку подключения вместо ключа инструментирования. Пакет SDK 3.x требует строки подключения и может завершиться ошибкой при запуске, если он не настроен. Для тестовых сценариев можно использовать фиктивную строку подключения, например InstrumentationKey=00000000-0000-0000-0000-000000000000.
TelemetryClient() или TelemetryConfiguration.Active Создайте конфигурацию явным образом с помощью TelemetryConfiguration.CreateDefault(), и передайте ее в new TelemetryClient(config).
TelemetryModule, TelemetryInitializerили TelemetryProcessor настройка Пользовательские инициализаторы или процессоры должны быть перенесены на процессоры на основе OpenTelemetry. Ссылки на встроенные процессоры 2.x, инициализаторы и модули должны быть удалены. Дополнительные сведения см. в руководстве по миграции.
ITelemetryChannel или TelemetryConfiguration.TelemetryChannel Абстракция классического канала удаляется, так как 3.x внутренне включает экспортера Azure Monitor. Для тестов используйте проверку совместимую с OpenTelemetry, например, экспортер в оперативную память.
EnableAdaptiveSampling Замените адаптивную выборку на TracesPerSecond или SamplingRatio.
Microsoft.ApplicationInsights.Web нацеленный на .NET Framework 4.5.2 Требуемая версия .NET Framework 4.6.2 или более поздняя версия.
Соглашения о наименовании метрик и пространствах имен Чтобы следовать синтаксису именования инструментов OpenTelemetry, обновите name, metricId, metricNamespace и значения, используемые с TrackMetric(), GetMetric(), и MetricIdentifier. Имена метрик и пространства имен должны начинаться с буквы и могут содержать только буквы, цифры, _, .-или/. Пробелы не допускаются.

Замена удаленных точек расширяемости

2.x SDK для .NET для Application Insights предоставляет специфические для Application Insights типы расширяемости, такие как модули телеметрии, инициализаторы, процессоры и каналы. Пакет SDK для Application Insights .NET 3.x вместо этого использует расширяемость OpenTelemetry.

Подробные рекомендации по замене точек расширяемости 2.x, включая пограничные варианты, см. в руководстве по миграции.

Подсказка

Ресурсные значения, такие как метаданные роли, могут передаваться через ресурсные сопоставления OpenTelemetry, а не отображаться на каждом элементе телеметрии. Если вам нужна пара "ключ-значение" для каждого элемента телеметрии, используйте GlobalProperties или пользовательский процессор.

Настройка выборки

Пакет SDK .NET Application Insights 3.x поддерживает два режима выборки для трассировок (запросов и зависимостей):

  • Установите SamplingRatio (от 0,0 до 1,0) для выборки на основе процентов.
  • Установите TracesPerSecond для выборки с ограничением скорости (по умолчанию: пять трассировок в секунду).

Пакет SDK 3.x применяет те же параметры выборки к запросам и зависимостям. Пакет SDK 3.x не поддерживает отдельные параметры выборки для запросов и зависимостей.

При включении запроса или зависимости в выборку SDK 3.x по умолчанию применяет решение о выборке родительской трассировки к связанным журналам. Чтобы отключить это поведение, установите значение EnableTraceBasedLogsSamplerfalse.

Можно задать SamplingRatio, TracesPerSecondа также EnableTraceBasedLogsSampler в TelemetryConfiguration, appsettings.jsonили applicationinsights.config.

Устранение неполадок при обновлении

Чтобы проверить данные телеметрии во время обновления до пакета SDK 3.x, выполните следующие действия.

  • Убедитесь, что перед запуском настроена полная строка подключения. Если вы проверяете данные телеметрии в тестах без реального ресурса, используйте фиктивную строку подключения.
  • Сбор журналов самостоятельной диагностики Application Insights для выявления ошибок конфигурации и сбоев экспортера.
  • Добавьте экспортер в консоль OpenTelemetry, чтобы убедиться, что трассировки, метрики и логи выдаются должным образом, прежде чем полагаться на прием Azure Monitor.
  • Если вы ранее применяли модульное тестирование телеметрии с использованием имитаций ITelemetryChannel, перейдите на проверку, совместимую с OpenTelemetry, например с помощью экспортеров в оперативной памяти или других тестовых экспортеров в непроизводственных средах.
  • Убедитесь, что параметры выборки работают должным образом, проверяя решения о трассировке в отношениях родитель-потомок.
  • Проверьте атрибуты ресурсов, такие как имя службы, имя роли, экземпляр роли и среда, чтобы обеспечить правильную атрибуцию в Application Insights.
  • Если вы перенесли пользовательское обогащение, убедитесь, что свойства отображаются там, где вы этого ожидаете. Сопоставления на основе ресурсов могут отличаться от поведения версий 2.x.

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

Терминология OpenTelemetry

Для получения информации о терминологии смотрите глоссарий в спецификациях OpenTelemetry.

В следующей таблице выделены устаревшие термины, используемые в Application Insights, и их замены OpenTelemetry.

Аналитика приложений OpenTelemetry
Автосборщики Библиотеки инструментирования
Канал Экспортер
Бескодовое / На основе агента Автоинструментирование
Traces Logs
Запросы Диапазоны серверов
Зависимости Другие типы диапазонов (клиент, внутренний и т. д.)
Идентификатор операции Идентификатор трассировки
Идентификатор или родительский идентификатор операции Идентификатор диапазона