Прочитать на английском

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


Настройка Azure Monitor OpenTelemetry

В этом руководстве объясняется, как настроить OpenTelemetry (OTel) в Azure Monitor Application Insights с помощью дистрибутива OpenTelemetry в Azure Monitor. Правильная конфигурация обеспечивает согласованную сбор данных телеметрии в .NET, Java, Node.jsи приложениях Python, что обеспечивает более надежный мониторинг и диагностику.

строка подключения

Строка подключения в Application Insights определяет целевое расположение для отправки данных телеметрии.

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

  • Задайте переменную среды.

    APPLICATIONINSIGHTS_CONNECTION_STRING=<Your Connection String>
    
  • Использовать функцию configure_azure_monitor.

# Import the `configure_azure_monitor()` function from the `azure.monitor.opentelemetry` package.
from azure.monitor.opentelemetry import configure_azure_monitor

# Configure OpenTelemetry to use Azure Monitor with the specified connection string.
# Replace `<your-connection-string>` with the connection string of your Azure Monitor Application Insights resource.
configure_azure_monitor(
    connection_string="<your-connection-string>",
)

Настройка имени облачной роли и экземпляра облачной роли

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

Задайте имя и экземпляр облачной роли с помощью атрибутов Resource. Имя облачной роли использует атрибуты service.namespace и service.name, хотя и возвращается к service.name, если service.namespace не задано. Экземпляр облачной роли использует значение атрибута service.instance.id. Сведения о стандартных атрибутах ресурсов см. в разделе "Семантические соглашения OpenTelemetry".

Задайте атрибуты ресурса с помощью OTEL_RESOURCE_ATTRIBUTES переменных среды и /или OTEL_SERVICE_NAME среды. OTEL_RESOURCE_ATTRIBUTES принимает ряд пар "ключ-значение", разделенных запятыми. Например, чтобы задать имя my-namespace.my-helloworld-service облачной роли и задать для my-instanceэкземпляра облачной роли значение, можно задать OTEL_RESOURCE_ATTRIBUTES и OTEL_SERVICE_NAME так:

export OTEL_RESOURCE_ATTRIBUTES="service.namespace=my-namespace,service.instance.id=my-instance"
export OTEL_SERVICE_NAME="my-helloworld-service"

Если атрибут resource не задан, можно также задать имя облачной service.namespace роли только с переменной среды OTEL_SERVICE_NAME или атрибутом service.name Resource. Например, чтобы задать имя my-helloworld-service облачной роли и задать для my-instanceэкземпляра облачной роли значение, можно задать OTEL_RESOURCE_ATTRIBUTES и OTEL_SERVICE_NAME так:

export OTEL_RESOURCE_ATTRIBUTES="service.instance.id=my-instance"
export OTEL_SERVICE_NAME="my-helloworld-service"

Включение выборки

Вы можете включить выборку, чтобы уменьшить объем приема данных, что снижает затраты. Azure Monitor предоставляет настраиваемый выборщик фиксированной частоты , заполняющий события коэффициентом выборки, в который Application Insights преобразуется ItemCount. Сэмплер фиксированной ставки обеспечивает точные результаты и количество событий. Пример предназначен для сохранения трассировок между службами и взаимодействия с более старыми пакетами средств разработки программного обеспечения Application Insights (SDK). Дополнительные сведения см. в разделе " Дополнительные сведения о выборке".

Примечание

Метрики и журналы не влияют на выборку. Если вы видите непредвиденные расходы или высокие затраты в Application Insights, это руководство может помочь. В ней рассматриваются распространенные причины, такие как высокий объем телеметрии, пики приема данных и неправильно настроенная выборка. Особенно полезно, если вы устраняете проблемы, связанные с резким увеличением затрат, объемом телеметрии, неисправной выборкой, ограничениями данных, высокой нагрузкой на прием данных или неожиданными счетами. Чтобы начать, ознакомьтесь с материалом по устранению неполадок в случае высокого объёма поступающих данных в Application Insights.

Функция configure_azure_monitor() автоматически использует ApplicationInsightsSampler для совместимости с пакетами SDK Application Insights и примерами данных телеметрии. Переменная OTEL_TRACES_SAMPLER_ARG среды может использоваться для указания частоты выборки с допустимым диапазоном от 0 до 1, где 0 — 0% и 1 — 100 %. Например, значение 0,1 означает, что 10 % трассировки отправляются.

export OTEL_TRACES_SAMPLER_ARG=0.1

Совет

При использовании фиксированной скорости и процентной выборки, и вы не уверены, что задать частоту выборки как, начните с 5%. (коэффициент выборки 0,05) Настройте частоту на основе точности операций, отображаемых в панелях ошибок и производительности. Более высокая скорость обычно приводит к повышению точности. Однако любой отбор данных влияет на точность, поэтому мы рекомендуем уведомление о метриках OpenTelemetry, которые не зависят от отбора.

Динамические метрики

Динамические метрики предоставляют панель мониторинга аналитики в режиме реального времени для анализа активности приложений и производительности.

Важно!

См. дополнительные условия использования для предварительных версий Microsoft Azure о правовых условиях, которые применяются к функциям Azure в бета-версии, предварительном просмотре или иначе еще не выпущены в общую доступность.

Вы можете включить динамические метрики с помощью дистрибутива OpenTelemetry в Azure Monitor для Python следующим образом:

...
configure_azure_monitor(
	enable_live_metrics=True
)
...

Включение проверки подлинности Microsoft Entra ID (прежнее название — Azure AD)

Возможно, потребуется включить проверку подлинности Microsoft Entra для более безопасного подключения к Azure, что предотвращает прием неавторизованных данных телеметрии в подписку.

Дополнительные сведения см. на нашей выделенной странице проверки подлинности Microsoft Entra, связанной с каждым поддерживаемым языком.

Дополнительные сведения о настройке аутентификации Entra ID см. в статье Microsoft Entra Authentication for Application Insights

Автономное хранилище и автоматические повторные попытки

Azure Monitor на основе OpenTelemetry осуществляет кэширование телеметрии при разрыве соединения приложения с Application Insights и повторные попытки отправки данных в течение до 48 часов. Рекомендации по обработке данных см. в разделе "Экспорт и удаление частных данных". Приложения с высокой нагрузкой иногда сбрасывают данные телеметрии по двум причинам: превышение допустимого времени или превышение максимального размера файла. При необходимости продукт определяет последние события по сравнению со старыми.

По умолчанию экспортеры Azure Monitor используют следующий путь:

<tempfile.gettempdir()>/Microsoft/AzureMonitor/opentelemetry-python-<your-instrumentation-key>

Чтобы переопределить каталог по умолчанию, необходимо задать storage_directory нужный каталог.

Например:

...
# Configure OpenTelemetry to use Azure Monitor with the specified connection string and storage directory.
# Replace `your-connection-string` with the connection string to your Azure Monitor Application Insights resource.
# Replace `C:\\SomeDirectory` with the directory where you want to store the telemetry data before it is sent to Azure Monitor.
configure_azure_monitor(
    connection_string="your-connection-string",
    storage_directory="C:\\SomeDirectory",
)
...

Чтобы отключить эту функцию, необходимо задать значение disable_offline_storageTrue. По умолчанию — False.

Например:

...
# Configure OpenTelemetry to use Azure Monitor with the specified connection string and disable offline storage.
# Replace `your-connection-string` with the connection string to your Azure Monitor Application Insights resource.
configure_azure_monitor(
    connection_string="your-connection-string",
    disable_offline_storage=True,
)
...

Включение средства экспорта OTLP

Возможно, вы хотите включить экспортер OpenTelemetry Protocol (OTLP) вместе с экспортером Azure Monitor, чтобы отправить данные телеметрии в два расположения.

Примечание

Средство экспорта OTLP отображается только для удобства. Корпорация Майкрософт официально не поддерживает средство экспорта OTLP, а также все подчиненные компоненты и сторонние средства.

  1. Установите пакет opentelemetry-exporter-otlp .

  2. Добавьте приведенный ниже фрагмент кода. В этом примере предполагается, что у вас есть сборщик OpenTelemetry с работающим приемником OTLP. Дополнительные сведения см. в этой статье README.

    # Import the `configure_azure_monitor()`, `trace`, `OTLPSpanExporter`, and `BatchSpanProcessor` classes from the appropriate packages.    
    from azure.monitor.opentelemetry import configure_azure_monitor
    from opentelemetry import trace
    from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
    from opentelemetry.sdk.trace.export import BatchSpanProcessor
    
    # Configure OpenTelemetry to use Azure Monitor with the specified connection string.
    # Replace `<your-connection-string>` with the connection string to your Azure Monitor Application Insights resource.
    configure_azure_monitor(
        connection_string="<your-connection-string>",
    )
    
    # Get the tracer for the current module.
    tracer = trace.get_tracer(__name__) 
    
    # Create an OTLP span exporter that sends spans to the specified endpoint.
    # Replace `http://localhost:4317` with the endpoint of your OTLP collector.
    otlp_exporter = OTLPSpanExporter(endpoint="http://localhost:4317")
    
    # Create a batch span processor that uses the OTLP span exporter.
    span_processor = BatchSpanProcessor(otlp_exporter)
    
    # Add the batch span processor to the tracer provider.
    trace.get_tracer_provider().add_span_processor(span_processor)
    
    # Start a new span with the name "test".
    with tracer.start_as_current_span("test"):
        print("Hello world!")
    

Конфигурации OpenTelemetry

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

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

Строки запроса URL-адреса Redact

Чтобы изменить строки запроса URL-адреса, отключите коллекцию строк запроса. Этот параметр рекомендуется использовать при вызове хранилища Azure с помощью маркера SAS.

Мы активно работаем в сообществе OpenTelemetry для поддержки редакта.


Дополнительные ресурсы