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

В этой статье описывается, как включить и настроить сбор данных на основе OpenTelemetry в Application Insights. Дистрибутив OpenTelemetry в Azure Monitor:

Дополнительные сведения о преимуществах использования дистрибутива OpenTelemetry в Azure Monitor см. в статье "Почему следует использовать дистрибутив Azure Monitor OpenTelemetry".

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

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

Предложения OpenTelemetry доступны для приложений .NET, Node.js, Python и Java. Сведения о состоянии выпуска компонента по функциям см. в разделе часто задаваемых вопросов.

Включение OpenTelemetry с помощью Application Insights

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

Примечание.

.NET охватывает несколько сценариев, включая классические ASP.NET, консольные приложения, Windows Forms (WinForms) и многое другое.

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

Совет

Если вы переносите классический API Application Insights, ознакомьтесь с нашей документацией по миграции.

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

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

dotnet add package Azure.Monitor.OpenTelemetry.AspNetCore 

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

Azure.Monitor.OpenTelemetry.AspNetCore Импортируйте пространство имен, добавьте OpenTelemetry и настройте его для использования Azure Monitor в классеprogram.cs:

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

var builder = WebApplication.CreateBuilder(args);

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

var app = builder.Build();

app.Run();

Скопируйте строка подключения из ресурса Application Insights

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

Совет

Если у вас еще нет ресурса Application Insights, создайте его в этом руководстве. Рекомендуется создать новый ресурс, а не использовать существующий.

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

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

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

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

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

Внимание

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

Для рабочей среды используйте переменную среды или файл конфигурации (только Java).

  • Настройка с помощью рекомендуемой переменной - среды

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

    APPLICATIONINSIGHTS_CONNECTION_STRING=<Your connection string>
    
  • Настройка только с помощью файла - конфигурации Java

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

    {
      "connectionString": "<Your connection string>"
    }
    

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

  • Настройка только с помощью кода - ASP.NET Core, Node.js и Python

    Пример настройки строка подключения с помощью кода см. в разделе строка подключения конфигурации.

Примечание.

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

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

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

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

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

Application Insights теперь включен для приложения. Следующие шаги являются необязательными и позволяют дополнительно настраивать.

Внимание

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

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

Примеры приложений

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

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

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

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

Что такое OpenTelemetry?

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

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

Корпорация Майкрософт инвестирует в OpenTelemetry по следующим причинам:

  • Он нейтрализуется поставщиком и предоставляет согласованные API/пакеты SDK на разных языках.
  • Со временем мы считаем, что OpenTelemetry позволит клиентам Azure Monitor наблюдать за приложениями, написанными на языках за пределами поддерживаемых языков.
  • Он расширяет типы данных, которые можно собирать с помощью расширенного набора библиотек инструментирования.
  • Наборы средств разработки программного обеспечения OpenTelemetry (ПАКЕТЫ SDK), как правило, являются более производительными, чем их предшественники, пакеты SDK Application Insights.
  • OpenTelemetry соответствует стратегии Майкрософт по открытый код.

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

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

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

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

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

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

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

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

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

Примечание.

Дистрибутив задает образец для пользовательского с фиксированной скоростью выборки для Application Insights. Это можно изменить на другой образец, но это может отключить некоторые из включенных возможностей дистрибутива. Дополнительные сведения о поддерживаемом образце см. в разделе "Включение выборки " в разделе "Настройка 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 Application Insights?

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

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

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

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

Для всех других сценариев .NET, включая классические ASP.NET, консольные приложения, Windows Forms (WinForms) и т. д., мы рекомендуем использовать экспортер 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 и Служба приложений
Определение контекста ресурсов для Служба Azure Kubernetes (AKS) и функций
События тестирования доступности, созданные с помощью API отслеживания доступности
Фильтрация запросов, зависимостей, журналов и исключений по анонимному идентификатору пользователя и искусственному источнику
Фильтрация зависимостей, журналов и исключений по имени операции
Адаптивная выборка
Profiler ⚠️
Отладчик моментальных снимков

Ключ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В Grafana, почему я вижу Status: 500. Can't visualize trace events using the trace visualizer?

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

В Application Insights таблица Traces хранит необработанные текстовые журналы для диагностических целей. Они помогают определить и сопоставить трассировки, связанные с запросами пользователей, другими событиями и отчетами об исключениях. Однако таблица Traces не напрямую способствует представлению сквозных транзакций (каскадной диаграмме) в средствах визуализации, таких как Grafana.

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

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

Шаг 1. Включение ведения журнала диагностики

Экспортер Azure Monitor использует EventSource для внутреннего ведения журнала. Журналы экспортера доступны любому EventListener, выбрав источник, который называется OpenTelemetry-AzureMonitor-Exporter. Инструкции по устранению неполадок см. в разделе "Устранение неполадок OpenTelemetry" на сайте GitHub.

Шаг 2. Тестирование подключения между узлом приложения и службой приема

Пакеты SDK и агенты Application Insights отправляют данные телеметрии для приема в качестве вызовов REST в конечных точках приема. Чтобы проверить подключение с веб-сервера или хост-компьютера приложения к конечным точкам службы приема, используйте команды cURL или необработанные запросы REST из PowerShell. Дополнительные сведения см. в статье "Устранение неполадок с отсутствующими данными телеметрии приложения" в Azure Monitor Application Insights.

Известные проблемы

Ниже перечислены известные проблемы для экспортеров OpenTelemetry в Azure Monitor:

  • Имя операции отсутствует в телеметрии зависимостей. Отсутствует имя операции приводит к сбоям и негативно влияет на работу вкладки производительности.

  • Модель устройства отсутствует в телеметрии запросов и зависимостей. Недостающая модель устройства негативно влияет на анализ когорты устройств.

Поддержка

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

Отзывы по OpenTelemetry

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