Настройка Azure Monitor для приложения Python

Внимание

Пакет SDK для Python OpenCensus снят. Мы рекомендуем использовать предложение Python на основе OpenTelemetry и предоставить рекомендации по миграции.

Azure Monitor поддерживает распределенную трассировку, сбор показателей и ведение журнала приложений Python.

Поддерживаемая корпорацией Майкрософт решение для отслеживания и экспорта данных для приложений Python осуществляется через пакет SDK Для Python OpenCensus через экспортеров Azure Monitor.

Корпорация Майкрософт не рекомендует использовать другие пакеты SDK телеметрии для Python в качестве решения телеметрии, так как они не поддерживаются.

OpenCensus конвергентируется в OpenTelemetry. Мы продолжаем рекомендовать OpenCensus, пока OpenTelemetry постепенно созревает.

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

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

Примечание.

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

Знакомство с пакетом SDK для Python OpenCensus

OpenCensus — это набор библиотек с открытым исходным кодом, позволяющий собирать данные телеметрии распределенной трассировки, метрик и ведения журнала. С помощью экспортеров Azure Monitor вы можете отправить собранные данные телеметрии в Application Insights. В этой статье описывается процесс настройки OpenCensus и экспортеров Azure Monitor для Python для отправки данных мониторинга в Azure Monitor.

Инструмент с OpenCensus Python SDK с экспортерами Azure Monitor

Установите средства экспорта OpenCensus Azure Monitor.

python -m pip install opencensus-ext-azure

Пакет SDK использует три экспортера Azure Monitor для отправки различных типов телеметрии в Azure Monitor. traceОни , metricsи logs. Дополнительные сведения об этих типах телеметрии см. в обзоре платформы данных. Используйте следующие инструкции для отправки этих типов телеметрии с помощью трех средств экспорта.

Сопоставление типов данных телеметрии

OpenCensus сопоставляет следующие экспортеры с типами телеметрии, которые отображаются в Azure Monitor.

Аспекты наблюдаемости Данные телеметрии, поддерживаемые в Azure Monitor Описание
Журналы Трассировки, исключения, customEvents Данные телеметрии журналов, телеметрии исключений и телеметрии событий
Метрики customMetrics, performanceCounters Настраиваемые счетчики метрик производительности
Трассировка Зависимости запросов Входящие запросы, исходящие запросы

Журналы

  1. Сначала давайте создадим данные метрик локально.

    
    import logging
    
    logger = logging.getLogger(__name__)
    
    def main():
        """Generate random log data."""
        for num in range(5):
            logger.warning(f"Log Entry - {num}")
    
    if __name__ == "__main__":
        main()
    
  2. Запись журнала создается для каждого числа в диапазоне.

    Log Entry - 0
    Log Entry - 1
    Log Entry - 2
    Log Entry - 3
    Log Entry - 4
    
  3. Мы хотим видеть эти данные журнала в Azure Monitor. Его можно указать в переменной среды. APPLICATIONINSIGHTS_CONNECTION_STRING Вы также можете передать connection_string непосредственно в элемент AzureLogHandlerуправления версиями, но строка подключения не следует добавлять в управление версиями.

    APPLICATIONINSIGHTS_CONNECTION_STRING=<appinsights-connection-string>
    

    Мы рекомендуем использовать строку подключения для создания экземпляров средств экспорта, которые используются для отправки данных телеметрии в Application Insights. Измените код из предыдущего шага, отталкиваясь от следующего примера кода.

    import logging
    from opencensus.ext.azure.log_exporter import AzureLogHandler
    
    logger = logging.getLogger(__name__)
    logger.addHandler(AzureLogHandler())
    
    # Alternatively manually pass in the connection_string
    # logger.addHandler(AzureLogHandler(connection_string=<appinsights-connection-string>))
    
    """Generate random log data."""
    for num in range(5):
        logger.warning(f"Log Entry - {num}")
    
  4. Экспортер отправляет данные журнала в Azure Monitor. Эти данные можно найти в traces.

    traces в этом контексте не совпадает с tracing. traces Здесь приведен тип телеметрии, который отображается в Azure Monitor при использованииAzureLogHandler. Но tracing относится к концепции в OpenCensus и связан с распределенной трассировкой.

    Примечание.

    Корневой средство ведения журнала настроено на уровне warning. Это означает, что все журналы, отправляемые с меньшим уровнем серьезности, игнорируются, и, в свою очередь, не будут отправляться в Azure Monitor. Дополнительные сведения см . в документации по ведению журнала.

  5. Вы также можете добавить настраиваемые свойства в сообщения журнала в аргументе ключевого extra слова с помощью custom_dimensions поля. Эти свойства отображаются в виде пар "ключ-значение" customDimensions в Azure Monitor.

    Примечание.

    Для работы этой функции необходимо передать словарь в custom_dimensions поле. При передаче аргументов любого другого типа средство ведения журнала игнорирует их.

    import logging
    
    from opencensus.ext.azure.log_exporter import AzureLogHandler
    
    logger = logging.getLogger(__name__)
    logger.addHandler(AzureLogHandler())
    # Alternatively manually pass in the connection_string
    # logger.addHandler(AzureLogHandler(connection_string=<appinsights-connection-string>))
    
    properties = {'custom_dimensions': {'key_1': 'value_1', 'key_2': 'value_2'}}
    
    # Use properties in logging statements
    logger.warning('action', extra=properties)
    

Примечание.

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

Настройка ведения журнала для приложений Django

Вы можете явно настроить ведение журнала в коде приложения, например приведенном выше для приложений Django, или указать его в конфигурации ведения журнала Django. Этот код может перейти в любой файл, используемый для конфигурации параметров сайта Django, как правило settings.py.

Сведения о настройке параметров Django см. в разделе "Параметры Django". Дополнительные сведения о настройке ведения журнала см. в разделе "Ведение журнала Django".

LOGGING = {
    "handlers": {
        "azure": {
            "level": "DEBUG",
            "class": "opencensus.ext.azure.log_exporter.AzureLogHandler",
            "connection_string": "<appinsights-connection-string>",
        },
        "console": {
            "level": "DEBUG",
            "class": "logging.StreamHandler",
            "stream": sys.stdout,
        },
      },
    "loggers": {
        "logger_name": {"handlers": ["azure", "console"]},
    },
}

Убедитесь, что используется средство ведения журнала с тем же именем, которое указано в конфигурации.

# views.py

import logging
from django.shortcuts import request

logger = logging.getLogger("logger_name")
logger.warning("this will be tracked")

Отправить исключения

OpenCensus для Python не выполняет автоматическое отслеживание и отправку данных телеметрии exception. Он отправляется AzureLogHandler с помощью исключений через библиотеку ведения журналов Python. Вы можете добавить пользовательские свойства, такие как обычное ведение журнала.

import logging

from opencensus.ext.azure.log_exporter import AzureLogHandler

logger = logging.getLogger(__name__)
logger.addHandler(AzureLogHandler())
# Alternatively, manually pass in the connection_string
# logger.addHandler(AzureLogHandler(connection_string=<appinsights-connection-string>))

properties = {'custom_dimensions': {'key_1': 'value_1', 'key_2': 'value_2'}}

# Use properties in exception logs
try:
    result = 1 / 0  # generate a ZeroDivisionError
except Exception:
    logger.exception('Captured an exception.', extra=properties)

Так как вы должны регистрировать исключения явным образом, вы можете регистрировать необработанные исключения. OpenCensus не накладывает ограничения на то, как это ведение журнала, но необходимо явно регистрировать данные телеметрии исключений.

Отправка событий

Телеметрию можно отправлять customEvent точно так же, как и телеметрию trace , за исключением использования AzureEventHandler .

import logging
from opencensus.ext.azure.log_exporter import AzureEventHandler

logger = logging.getLogger(__name__)
logger.addHandler(AzureEventHandler())
# Alternatively manually pass in the connection_string
# logger.addHandler(AzureEventHandler(connection_string=<appinsights-connection-string>))

logger.setLevel(logging.INFO)
logger.info('Hello, World!')

Образец

Сведения о выборке в OpenCensus см. в разделе "Выборка" в OpenCensus.

Корреляция журнала

Сведения о том, как дополнить журналы данными контекста трассировки, см. в статье Об интеграции журналов Python OpenCensus.

Изменение телеметрии

Дополнительные сведения об изменении отслеживаемой телеметрии перед отправкой в Azure Monitor см. в разделе об обработчиках телеметрии OpenCensus для Python.

Метрики

OpenCensus.stats поддерживает четыре метода агрегирования, но обеспечивает частичную поддержку Azure Monitor:

  • Число. Число точек измерения. Это значение является накопительным, может увеличиваться только и сбрасывается до 0 при перезапуске.
  • Сумма. Сумма точек измерения. Это значение является накопительным, может увеличиваться только и сбрасывается до 0 при перезапуске.
  • LastValue: сохраняет последнее записанное значение и удаляет все остальное.
  • Распределение: экспортер Azure не поддерживает распределение гистограммы точек измерения.

Пример агрегирования счетчиков

  1. Сначала давайте создадим данные метрик локально. Мы создадим метрику для отслеживания количества раз, когда пользователь выбирает клавишу ВВОД .

    
    from datetime import datetime
    from opencensus.stats import aggregation as aggregation_module
    from opencensus.stats import measure as measure_module
    from opencensus.stats import stats as stats_module
    from opencensus.stats import view as view_module
    from opencensus.tags import tag_map as tag_map_module
    
    stats = stats_module.stats
    view_manager = stats.view_manager
    stats_recorder = stats.stats_recorder
    
    prompt_measure = measure_module.MeasureInt("prompts",
                                               "number of prompts",
                                               "prompts")
    prompt_view = view_module.View("prompt view",
                                   "number of prompts",
                                   [],
                                   prompt_measure,
                                   aggregation_module.CountAggregation())
    view_manager.register_view(prompt_view)
    mmap = stats_recorder.new_measurement_map()
    tmap = tag_map_module.TagMap()
    
    def main():
        for _ in range(4):
            mmap.measure_int_put(prompt_measure, 1)
            mmap.record(tmap)
            metrics = list(mmap.measure_to_view_map.get_metrics(datetime.utcnow()))
            print(metrics[0].time_series[0].points[0])
    
    if __name__ == "__main__":
        main()
    
  2. Метрики создаются для отслеживания много раз. При каждом нажатии ее значение увеличивается, и сведения метрики отображаются в консоли. Эти сведения включают текущее значение и текущую отметку времени при обновлении метрики.

    Point(value=ValueLong(5), timestamp=2019-10-09 20:58:04.930426)
    Point(value=ValueLong(6), timestamp=2019-10-09 20:58:05.170167)
    Point(value=ValueLong(7), timestamp=2019-10-09 20:58:05.438614)
    Point(value=ValueLong(7), timestamp=2019-10-09 20:58:05.834216)
    
  3. Ввод значений полезен для демонстрационных целей, но мы хотим вывести данные метрик в Azure Monitor. Передайте строку подключения непосредственно в экспортер. Или можно указать его в переменной среды. APPLICATIONINSIGHTS_CONNECTION_STRING Мы рекомендуем использовать строку подключения для создания экземпляров средств экспорта, которые используются для отправки данных телеметрии в Application Insights. Измените код из предыдущего шага, отталкиваясь от следующего примера кода.

    from datetime import datetime
    from opencensus.ext.azure import metrics_exporter
    from opencensus.stats import aggregation as aggregation_module
    from opencensus.stats import measure as measure_module
    from opencensus.stats import stats as stats_module
    from opencensus.stats import view as view_module
    from opencensus.tags import tag_map as tag_map_module
    
    stats = stats_module.stats
    view_manager = stats.view_manager
    stats_recorder = stats.stats_recorder
    
    prompt_measure = measure_module.MeasureInt("prompts",
                                               "number of prompts",
                                               "prompts")
    prompt_view = view_module.View("prompt view",
                                   "number of prompts",
                                   [],
                                   prompt_measure,
                                   aggregation_module.CountAggregation())
    view_manager.register_view(prompt_view)
    mmap = stats_recorder.new_measurement_map()
    tmap = tag_map_module.TagMap()
    
    exporter = metrics_exporter.new_metrics_exporter()
    # Alternatively manually pass in the connection_string
    # exporter = metrics_exporter.new_metrics_exporter(connection_string='<appinsights-connection-string>')
    
    view_manager.register_exporter(exporter)
    
    def main():
        for _ in range(10):
            input("Press enter.")
            mmap.measure_int_put(prompt_measure, 1)
            mmap.record(tmap)
            metrics = list(mmap.measure_to_view_map.get_metrics(datetime.utcnow()))
            print(metrics[0].time_series[0].points[0])
    
    if __name__ == "__main__":
        main()
    
  4. Программа экспорта отсылает данные метрики в Azure Monitor через фиксированные интервалы. Это значение должно быть равно 60 секундам, так как серверная часть Application Insights предполагает агрегирование точек метрик на 60-секундном интервале времени. Мы отслеживаем одну метрику, поэтому данные этой метрики, вне зависимости от содержащихся значений и отметок времени, отправлены через каждый интервал. Данные являются накопительными, могут увеличиваться только и сбрасывать значение 0 при перезапуске.

    Данные можно найти customMetricsв разделе , но customMetrics свойства valueCount, valueSum, valueMinи valueMaxvalueStdDev не используются эффективно.

Настройка пользовательских измерений в метриках

Пакет SDK для Python OpenCensus позволяет добавлять пользовательские измерения в данные телеметрии метрик с помощью tagsсловаря пар "ключ-значение".

  1. Вставьте теги, которые вы хотите использовать, в карту тегов. Карта тегов действует как своего рода "пул" всех доступных тегов, которые вы можете использовать.

    ...
    tmap = tag_map_module.TagMap()
    tmap.insert("url", "http://example.com")
    ...
    
  2. Для конкретного Viewзадания укажите теги, которые необходимо использовать при записи метрик с этим представлением с помощью ключа тега.

    ...
    prompt_view = view_module.View("prompt view",
                                "number of prompts",
                                ["url"], # <-- A sequence of tag keys used to specify which tag key/value to use from the tag map
                                prompt_measure,
                                aggregation_module.CountAggregation())
    ...
    
  3. Не забудьте использовать карту тегов при записи на карте измерений. Ключи тегов, указанные в View, должны быть найдены в карте тегов, используемой для записи.

    ...
    mmap = stats_recorder.new_measurement_map()
    mmap.measure_int_put(prompt_measure, 1)
    mmap.record(tmap) # <-- pass the tag map in here
    ...
    
  4. В таблице все записи метрик, создаваемые customMetrics с помощью prompt_view пользовательских измерений {"url":"http://example.com"}.

  5. Чтобы создать теги с разными значениями с помощью одних и того же ключа, создайте для них карты тегов.

    ...
    tmap = tag_map_module.TagMap()
    tmap2 = tag_map_module.TagMap()
    tmap.insert("url", "http://example.com")
    tmap2.insert("url", "https://www.wikipedia.org/wiki/")
    ...
    

Счетчики производительности

По умолчанию, экспортер метрик отправляет набор счетчиков производительности на Azure Monitor. Эту возможность можно отключить, задав enable_standard_metrics флаг False в конструкторе экспортера метрик.

...
exporter = metrics_exporter.new_metrics_exporter(
  enable_standard_metrics=False,
  )
...

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

  • Объем доступной памяти (в байтах)
  • Процессорное время ЦП (в процентах)
  • Частота входящих запросов (в секунду)
  • Среднее время выполнения входящего запроса (в миллисекундах)
  • Использования ЦП процессом (процент)
  • Количество байтов исключительного использования процесса (в байтах)

Эти метрики должны быть доступны в performanceCounters. Дополнительные сведения см. в разделе счетчиков производительности.

Изменение телеметрии

Дополнительные сведения об изменении отслеживаемой телеметрии перед отправкой в Azure Monitor см. в разделе об обработчиках телеметрии OpenCensus для Python.

Трассировка

Примечание.

В OpenCensus tracingотносится к распределенной трассировке. Параметр AzureExporter отправляет requests и dependency телеметрию в Azure Monitor.

  1. Сначала давайте создадим данные трассировки локально. В Python IDLE или любом выбранном текстовом редакторе введите следующий код:

    from opencensus.trace.samplers import ProbabilitySampler
    from opencensus.trace.tracer import Tracer
    
    tracer = Tracer(sampler=ProbabilitySampler(1.0))
    
    def main():
        with tracer.span(name="test") as span:
            for value in range(5):
                print(value)
    
    
    if __name__ == "__main__":
        main()
    
  2. При каждом вводе значение выводится на оболочку. Модуль Python OpenCensus создает соответствующую часть SpanData. Проект OpenCensus определяет трассировку в виде дерева диапазонов.

    0
    [SpanData(name='test', context=SpanContext(trace_id=8aa41bc469f1a705aed1bdb20c342603, span_id=None, trace_options=TraceOptions(enabled=True), tracestate=None), span_id='15ac5123ac1f6847', parent_span_id=None, attributes=BoundedDict({}, maxlen=32), start_time='2019-06-27T18:21:22.805429Z', end_time='2019-06-27T18:21:44.933405Z', child_span_count=0, stack_trace=None, annotations=BoundedList([], maxlen=32), message_events=BoundedList([], maxlen=128), links=BoundedList([], maxlen=32), status=None, same_process_as_parent_span=None, span_kind=0)]
    1
    [SpanData(name='test', context=SpanContext(trace_id=8aa41bc469f1a705aed1bdb20c342603, span_id=None, trace_options=TraceOptions(enabled=True), tracestate=None), span_id='2e512f846ba342de', parent_span_id=None, attributes=BoundedDict({}, maxlen=32), start_time='2019-06-27T18:21:44.933405Z', end_time='2019-06-27T18:21:46.156787Z', child_span_count=0, stack_trace=None, annotations=BoundedList([], maxlen=32), message_events=BoundedList([], maxlen=128), links=BoundedList([], maxlen=32), status=None, same_process_as_parent_span=None, span_kind=0)]
    2
    [SpanData(name='test', context=SpanContext(trace_id=8aa41bc469f1a705aed1bdb20c342603, span_id=None, trace_options=TraceOptions(enabled=True), tracestate=None), span_id='f3f9f9ee6db4740a', parent_span_id=None, attributes=BoundedDict({}, maxlen=32), start_time='2019-06-27T18:21:46.157732Z', end_time='2019-06-27T18:21:47.269583Z', child_span_count=0, stack_trace=None, annotations=BoundedList([], maxlen=32), message_events=BoundedList([], maxlen=128), links=BoundedList([], maxlen=32), status=None, same_process_as_parent_span=None, span_kind=0)]
    
  3. Просмотр выходных данных полезен для демонстрационных целей, но мы хотим отправить SpanData в Azure Monitor. Передайте строку подключения непосредственно в экспортер. Или можно указать его в переменной среды. APPLICATIONINSIGHTS_CONNECTION_STRING Мы рекомендуем использовать строку подключения для создания экземпляров средств экспорта, которые используются для отправки данных телеметрии в Application Insights. Измените код из предыдущего шага, отталкиваясь от следующего примера кода.

    from opencensus.ext.azure.trace_exporter import AzureExporter
    from opencensus.trace.samplers import ProbabilitySampler
    from opencensus.trace.tracer import Tracer
    
    tracer = Tracer(
        exporter=AzureExporter(),
        sampler=ProbabilitySampler(1.0),
    )
    # Alternatively manually pass in the connection_string
    # exporter = AzureExporter(
    #   connection_string='<appinsights-connection-string>',
    #   ...
    # )
    
    def main():
        with tracer.span(name="test") as span:
            for value in range(5):
                print(value)
    
    if __name__ == "__main__":
        main()
    
  4. Теперь при запуске скрипта Python в оболочке печатается только значение. Созданный фрагмент SpanData будет отправлен в Azure Monitor. Выданные данные диапазонов можно найти в разделе dependencies.

    Дополнительные сведения об исходящих запросах см. в разделе зависимостей OpenCensus для Python. Дополнительные сведения о входящих запросах см. в разделе запросов OpenCensus для Python.

Образец

Сведения о выборке в OpenCensus см. в разделе "Выборка" в OpenCensus.

Корреляция трассировки

Дополнительные сведения о корреляции телеметрии в данных трассировки см. в статье о корреляции телеметрии OpenCensus Python.

Изменение телеметрии

Дополнительные сведения об изменении отслеживаемой телеметрии перед отправкой в Azure Monitor см. в разделе об обработчиках телеметрии OpenCensus для Python.

Настройка экспортеров в Azure Monitor

Как показано ниже, существуют три разных экспортера Azure Monitor, которые поддерживают OpenCensus. Каждый из них отправляет различные типы данных телеметрии в Azure Monitor. Сведения о типах телеметрии, отправляемых каждым экспортером, см. в следующей таблице.

Каждый из этих экспортеров принимает те же аргументы для конфигурации, которые передаются через конструкторы. Здесь можно просмотреть сведения о каждом из них:

Экспорт данных телеметрии Description
connection_string Строка подключения, используемый для подключения к ресурсу Azure Monitor. Она имеет приоритет над instrumentation_key.
credential Класс учетных данных, используемый проверкой подлинности Azure Active Directory. См. раздел "Проверка подлинности", приведенный ниже.
enable_standard_metrics Используется для AzureMetricsExporter. Оповещает экспортер о том, что метрики счетчиков производительности автоматически отправляются в Azure Monitor. По умолчанию — True.
export_interval Используется для указания частоты в секундах экспорта. По умолчанию — 15s. Для метрик необходимо задать значение 60 секунд или в противном случае агрегаты метрик не должны иметь смысла в обозревателе метрик.
grace_period Используется для указания времени ожидания завершения работы экспортеров в секундах. По умолчанию — 5s.
instrumentation_key Ключ инструментирования, используемый для подключения к ресурсу Azure Monitor.
logging_sampling_rate Используется для AzureLogHandler и AzureEventHandler. Предоставляет частоту выборки [0, 1.0] для экспорта журналов и событий. По умолчанию — 1.0.
max_batch_size Указывает максимальный размер телеметрии, экспортируемой одновременно.
proxies Указывает последовательность прокси-серверов, используемых для отправки данных в Azure Monitor. Дополнительные сведения см. на странице прокси-серверов.
storage_path Путь к расположению локальной папки хранилища (неотступная телеметрия). Начиная с opencensus-ext-azure версии 1.0.3, путь по умолчанию — это временный каталог ОС + opencensus-python + your-ikey. До версии 1.0.3 по умолчанию используется $USER.azurepython-file-name + .opencensus + + путь.
timeout Указывает время ожидания сети для отправки телеметрии в службу приема в секундах. По умолчанию — 10s.

Интеграция с Функциями Azure

Чтобы записать настраиваемую телеметрию в Функции Azure средах, используйте расширение Функции Azure OpenCensus Python. Дополнительные сведения см. в руководстве разработчика python Функции Azure.

Аутентификация (предварительная версия)

Примечание.

Функция проверки подлинности доступна начиная с opencensus-ext-azure версии 1.1b0.

Каждый из экспортеров Azure Monitor поддерживает настройку безопасной отправки полезных данных телеметрии с помощью проверки подлинности OAuth с помощью Azure Active Directory. Дополнительные сведения см. в документации по проверке подлинности.

Фильтрация данных с помощью запросов

Данные телеметрии, отправленные из приложения, можно просмотреть на вкладке Журналы (аналитика).

Снимок экрана: панель

В списке в разделе Активные

  • Для данных телеметрии, отправляемых с помощью средства экспорта трассировки Azure Monitor, входящие запросы отображаются в разделе requests. Исходящие или внутрипроцессные запросы отображаются в разделе dependencies.
  • Для данных телеметрии, отправляемых с помощью средства экспорта метрик Azure Monitor, отправленные метрики отображаются в разделе customMetrics.
  • Для данных телеметрии, отправляемых с помощью средства экспорта журналов Azure Monitor, журналы отображаются в разделе traces. Исключения отображаются в exceptions.

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

Настройка и включение проверки подлинности на основе идентификатора Microsoft Entra

Примечание.

Проверка подлинности Microsoft Entra доступна только для Python версии 2.7, версии 3.6 и версии 3.7. Поддержка идентификатора Microsoft Entra в пакете SDK Для Python Для Application Insights OpenCensus включается начиная с бета-версии opencensus-ext-azure 1.1b0.

Примечание.

Пакет SDK для Python OpenCensus устарел, но корпорация Майкрософт поддерживает его до выхода на пенсию 30 сентября 2024 г. Теперь мы рекомендуем предложение Python на основе OpenTelemetry и предоставить рекомендации по миграции.

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

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

Управляемое удостоверение, назначаемое системой

from azure.identity import ManagedIdentityCredential

from opencensus.ext.azure.trace_exporter import AzureExporter
from opencensus.trace.samplers import ProbabilitySampler
from opencensus.trace.tracer import Tracer

credential = ManagedIdentityCredential()
tracer = Tracer(
    exporter=AzureExporter(credential=credential, connection_string="InstrumentationKey=<your-instrumentation-key>;IngestionEndpoint=<your-ingestion-endpoint>"),
    sampler=ProbabilitySampler(1.0)
)
...

Управляемое удостоверение, назначаемое пользователем

from azure.identity import ManagedIdentityCredential

from opencensus.ext.azure.trace_exporter import AzureExporter
from opencensus.trace.samplers import ProbabilitySampler
from opencensus.trace.tracer import Tracer

credential = ManagedIdentityCredential(client_id="<client-id>")
tracer = Tracer(
    exporter=AzureExporter(credential=credential, connection_string="InstrumentationKey=<your-instrumentation-key>;IngestionEndpoint=<your-ingestion-endpoint>"),
    sampler=ProbabilitySampler(1.0)
)
...

Дополнительные сведения об OpenCensus для Python

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

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

Пакеты SDK и агенты Application Insights отправляют данные телеметрии для приема в качестве вызовов REST к конечным точкам приема. Вы можете проверить подключение с веб-сервера или хост-компьютера приложения к конечным точкам службы приема с помощью необработанных клиентов REST из Команд PowerShell или curl. Сведения об устранении неполадок с отсутствующими данными телеметрии приложений в Azure Monitor Application Insights.

Заметки о выпуске

Последние заметки о выпуске см. в статье "Экспортер Azure Monitor для Python"

Обновления службы также обобщают основные улучшения Application Insights.

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

видны узлы