Включение Azure Monitor OpenTelemetry для приложений .NET, Node.js, Python и Java

В этой статье описывается, как включить и настроить сбор данных на основе OpenTelemetry для обеспечения возможностей в Аналитика приложения Azure Monitor. Мы рассмотрим, как установить дистрибутив OpenTelemetry в Azure Monitor. Дистрибутив OpenTelemetry в Azure Monitor предоставляет дистрибутив OpenTelemetry, который включает поддержку функций, относящихся к Azure Monitor. Дистрибутив обеспечивает автоматическую телеметрию, включая библиотеки инструментирования OpenTelemetry для сбора трассировок, метрик, журналов и исключений, а также позволяет собирать пользовательские данные телеметрии. Вы также можете использовать функцию динамических метрик, включенную в дистрибутив, для мониторинга и сбора дополнительных данных телеметрии из динамических веб-приложений. Дополнительные сведения о преимуществах использования дистрибутива OpenTelemetry в Azure Monitor см. в статье "Почему следует использовать дистрибутив OpenTelemetry Azure Monitor"? в Разделе "Вопросы и ответы по OpenTelemetry".

Дополнительные сведения о сборе данных с помощью OpenTelemetry см. в статье "Основы сбора данных" или "Вопросы и ответы о OpenTelemetry".

Состояние выпуска OpenTelemetry

Предложения OpenTelemetry доступны для приложений .NET, Node.js, Python и Java.

Примечание.

Сведения о состоянии выпуска компонента по функциям см. в разделе часто задаваемых вопросов.

Начать

Выполните действия, описанные в этом разделе, для инструментирования приложения с помощью OpenTelemetry.

Необходимые компоненты

Установка клиентской библиотеки

Установите последний пакет NuGet Azure.Monitor.OpenTelemetry.AspNetCore :

dotnet add package Azure.Monitor.OpenTelemetry.AspNetCore 

Включение Application Insights в Azure Monitor

Чтобы включить Аналитика приложений Azure Monitor, необходимо внести незначительные изменения в приложение и задать строку Подключение ion. Строка Подключение ion сообщает приложению, где отправлять данные телеметрии, собираемые дистрибутивом, и это уникально для вас.

Изменение приложения

Добавьте UseAzureMonitor() в запуск приложения, расположенный в program.cs классе.

// Import the Azure.Monitor.OpenTelemetry.AspNetCore namespace.
using Azure.Monitor.OpenTelemetry.AspNetCore;

// Create a new WebApplicationBuilder instance.
var builder = WebApplication.CreateBuilder(args);

// Add OpenTelemetry and configure it to use Azure Monitor.
builder.Services.AddOpenTelemetry().UseAzureMonitor();

// Build the application.
var app = builder.Build();

// Run the application.
app.Run();

Скопируйте строку Подключение ion из ресурса приложения Аналитика

Совет

Если у вас еще нет этого ресурса, теперь вы можете создать Аналитика ресурс приложения. Здесь мы рекомендуем создать приложение Аналитика resource и использовать существующий.

Чтобы скопировать уникальную строку Подключение ion:

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

  1. Перейдите в область обзора ресурса приложения Аналитика.
  2. Найдите строку Подключение ion.
  3. Наведите указатель мыши на строка подключения и щелкните значок копирования в буфер обмена.

Вставьте строку Подключение ion в среду

Чтобы вставить строку Подключение ion, выберите из следующих параметров:

А. Установка с помощью переменной среды (рекомендуется)

Замените <Your Connection String> в следующей командеуникальным строка подключения.

APPLICATIONINSIGHTS_CONNECTION_STRING=<Your Connection String>

B. Настройка с помощью файла конфигурации — только Java (рекомендуется)

Создайте файл конфигурации с именем applicationinsights.jsonи поместите его в тот же каталог, что applicationinsights-agent-3.5.1.jar и в следующем содержимом:

{
  "connectionString": "<Your Connection String>"
}

Замените <Your Connection String> предыдущий код JSON уникальным строка подключения.

C. Настройка с помощью кода — ASP.NET Core, Node.js и Python (не рекомендуется)

Пример настройки строки Подключение ion String см. в разделе Подключение ion String с помощью кода.

Примечание.

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

  1. Код
  2. Переменная среды
  3. Файл конфигурации

Подтверждение передачи данных

Запустите приложение и откройте вкладку Ресурс Application Insights на портале Azure. Отображение данных на портале может занять несколько минут.

Снимок экрана вкладки

Теперь для приложения включена Аналитика приложения. Все указанные ниже действия являются необязательными и позволяют дополнительно настраивать.

Внимание

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

В рамках использования инструментирования Application Insights мы собираем диагностические данные и отправляем их в корпорацию Майкрософт. Эти данные помогают нам использовать и улучшать Application Insights. Дополнительные сведения см. в разделе Statsbeat в Azure Application Insights.

Примеры

Примеры приложений OpenTelemetry в Azure Monitor доступны для всех поддерживаемых языков.

Следующие шаги

Часто задаваемые вопросы

В этом разделы приводятся ответы на часто задаваемые вопросы.

Что такое OpenTelemetry?

Это новый стандарт с открытым исходным кодом для наблюдения. Дополнительные сведения см. в openTelemetry.

Почему Microsoft Azure Monitor инвестирует в OpenTelemetry?

Корпорация Майкрософт — один из крупнейших инвесторов OpenTelemetry.

Ключевыми ценными особенностями OpenTelemetry являются независимость от поставщика и согласованность интерфейсов API и пакетов SDK для различных языков.

Со временем мы считаем, что OpenTelemetry позволит клиентам Azure Monitor наблюдать за приложениями, написанными на языках за пределами поддерживаемых языков. Он также расширяет типы данных, которые можно собирать с помощью расширенного набора библиотек инструментирования. Кроме того, пакеты SDK OpenTelemetry, как правило, являются более производительными, чем их предшественники, пакеты SDK для приложений Аналитика.

Наконец, OpenTelemetry соответствует стратегии корпорации Майкрософт по работе с открытым исходным кодом.

Что такое состояние OpenTelemetry?

См. сведения о состоянии OpenTelemetry.

Что такое дистрибутив Azure Monitor OpenTelemetry?

Вы можете подумать о нем как тонкой оболочке, которая объединяет все компоненты OpenTelemetry для первого класса в Azure. Эта оболочка также называется распределением в OpenTelemetry.

Почему следует использовать дистрибутив Azure Monitor OpenTelemetry?

Существует несколько преимуществ использования дистрибутива OpenTelemetry в Azure Monitor по сравнению с собственной платформой OpenTelemetry из сообщества:

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

  • Экспортер протокола OpenTelemetry (OTLP) и отправка в другое место одновременно
  • Другие библиотеки инструментирования, не включенные в дистрибутив

Так как дистрибутив предоставляет распределение OpenTelemetry, дистрибутив поддерживает все, что поддерживается OpenTelemetry. Например, можно добавить дополнительные процессоры телеметрии, экспортеры или библиотеки инструментирования, если OpenTelemetry поддерживает их.

Примечание.

Дистрибутив задает образец для пользовательского с фиксированной скоростью выборки для приложения Аналитика. Это можно изменить на другой образец, но это может отключить некоторые из включенных возможностей дистрибутива. Дополнительные сведения о поддерживаемом образце см. в разделе "Включение выборки " в разделе "Настройка Azure Monitor OpenTelemetry".

Для языков без поддерживаемого автономного экспортера OpenTelemetry дистрибутив Azure Monitor OpenTelemetry является единственным поддерживаемым в настоящее время способом использования OpenTelemetry с Azure Monitor. Для языков с поддерживаемым автономным экспортером OpenTelemetry вы можете использовать дистрибутив Azure Monitor OpenTelemetry или соответствующий автономный экспортер OpenTelemetry в зависимости от сценария телеметрии. Дополнительные сведения см. в статье "Когда следует использовать экспортер OpenTelemetry Azure Monitor?".

Как протестировать дистрибутив OpenTelemetry в Azure Monitor?

Ознакомьтесь с нашими документами по включению для .NET, Java, JavaScript (Node.js) и Python.

Следует ли использовать OpenTelemetry или пакет SDK для приложений Аналитика?

Мы рекомендуем использовать дистрибутив OpenTelemetry, если вам не требуется функция, доступная только с официальной поддержкой в пакете SDK для приложений Аналитика.

Внедрение OpenTelemetry теперь предотвращает перенос на более позднюю дату.

Когда следует использовать экспортер OpenTelemetry в Azure Monitor?

Для ASP.NET Core, Java, Node.js и Python рекомендуется использовать дистрибутив OpenTelemetry в Azure Monitor. Это одна строка кода для начала работы.

Для всех других сценариев .NET, включая классические ASP.NET, консольные приложения и т. д., мы рекомендуем использовать экспортер OpenTelemetry .NET в Azure Monitor: Azure.Monitor.OpenTelemetry.Exporter

Для более сложных сценариев телеметрии Python, требующих расширенной настройки, рекомендуется использовать экспортер OpenTelemetry Для Python Monitor.

Что такое текущее состояние выпуска функций в дистрибутиве OpenTelemetry в Azure Monitor?

На следующей диаграмме описана поддержка функций OpenTelemetry для каждого языка.

Функция .NET Node.js Python Java
Распределенная трассировка
Пользовательские метрики
Стандартные метрики (точность в настоящее время влияет на выборку)
Выборка с фиксированной частотой
Автономное хранилище и автоматические повторные попытки
Отчеты об исключениях
Коллекция журналов ⚠️
Пользовательские события ⚠️ ⚠️ ⚠️
Проверка подлинности Microsoft Entra
Динамические метрики
Определение контекста ресурсов для vm/VMSS и Служба приложений
Определение контекста ресурсов для AKS и функций
Фильтрация диапазона тестирования доступности
Автоматическое заполнение идентификатора пользователя, идентификатора пользователя с проверкой подлинности и IP-адреса пользователя
Переопределение или задание имени операции вручную, идентификатора пользователя или идентификатора пользователя с проверкой подлинности
Адаптивная выборка
Profiler ⚠️
Отладчик моментальных снимков

Ключ

  • ✅ Эта функция доступна всем клиентам с официальной поддержкой.
  • ⚠️ Эта функция доступна как общедоступная предварительная версия. Дополнительные условия использования для предварительных версий Microsoft Azure.
  • ❌ Эта функция недоступна или не применима.

Можно ли использовать OpenTelemetry для веб-браузеров?

Да, но мы не рекомендуем его, и Azure не поддерживает его. JavaScript OpenTelemetry оптимизирован для Node.js. Вместо этого рекомендуется использовать пакет SDK javaScript для приложений Аналитика.

Когда можно ожидать, что пакет SDK OpenTelemetry будет доступен для использования в веб-браузерах?

Веб-пакет SDK OpenTelemetry не имеет определенной доступности временная шкала. Скорее всего, несколько лет от пакета SDK для браузера, который является жизнеспособной альтернативой пакету SDK JavaScript для приложений Аналитика.

Можно ли протестировать OpenTelemetry в веб-браузере сегодня?

Веб-песочница OpenTelemetry — это вилка, предназначенная для работы OpenTelemetry в браузере. Пока невозможно отправить данные телеметрии в приложение Аналитика. Пакет SDK не определяет общие события клиента.

Поддерживается ли приложение Аналитика вместе с агентами конкурентов, такими как AppDynamics, DataDog и NewRelic?

№ Эта практика не является тем, что мы планируем протестировать или поддерживать, хотя наши дистрибутивы позволяют экспортировать в конечную точку OTLP вместе с Azure Monitor одновременно.

Можно ли использовать предварительные версии функций в рабочих средах?

Это не рекомендуемый вариант. Дополнительные условия использования для предварительных версий Microsoft Azure.

Какова разница между ручной и автоматической инструментированием?

Ознакомьтесь с обзором OpenTelemetry.

Можно ли использовать сборщик OpenTelemetry?

Некоторые клиенты используют сборщик OpenTelemetry в качестве альтернативы агенту, хотя корпорация Майкрософт официально не поддерживает подход на основе агента для мониторинга приложений. В то же время сообщество с открытым исходным кодом внесло вклад в сборщик Azure Monitor OpenTelemetry, который некоторые клиенты используют для отправки данных в Аналитика приложения Azure Monitor. Это не поддерживается корпорацией Майкрософт.

Чем отличается OpenCensus от OpenTelemetry?

OpenCensus — это предшественник OpenTelemetry. Корпорация Майкрософт способствовала объединению OpenTracing с OpenCensus для создания OpenTelemetry, единого в мире стандарта наблюдаемости. Текущий рабочий пакет SDK для Python для Azure Monitor основан на OpenCensus. Корпорация Майкрософт стремится сделать Azure Monitor на основе OpenTelemetry.

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

Не работает? Ознакомьтесь со страницей устранения неполадок для ASP.NET Core.

Поддержка

Выберите вкладку для выбранного языка, чтобы узнать параметры поддержки.

Отзывы по OpenTelemetry

Чтобы оставить отзыв, сделайте следующее: