Миграция из пакета SDK Для Python OpenCensus и экспортера OpenCensus Для Python в Azure Monitor OpenTelemetry Python Distro
Примечание.
Пакет SDK для Python OpenCensus устарел, но корпорация Майкрософт поддерживает его до выхода на пенсию 30 сентября 2024 г. Теперь мы рекомендуем предложение Python на основе OpenTelemetry и предоставить рекомендации по миграции.
Выполните следующие действия, чтобы перенести приложения Python в дистрибутив Azure Monitor Application Insights OpenTelemetry.
Предупреждение
Шаг 1. Удаление библиотек OpenCensus
Удалите все библиотеки, связанные с OpenCensus, включая все пакеты Pypi, начинающиеся с opencensus-*
.
pip freeze | grep opencensus | xargs pip uninstall -y
Шаг 2. Удаление OpenCensus из кода
Удалите все экземпляры пакета SDK OpenCensus и экспортера OpenCensus в Azure Monitor из кода.
Проверьте инструкции импорта, начиная с opencensus
поиска всех интеграций, экспортеров и экземпляров API Или ПАКЕТА SDK OpenCensus, которые должны быть удалены.
Ниже приведены примеры инструкций импорта, которые необходимо удалить.
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.ext.azure.trace_exporter import AzureExporter
from opencensus.trace.samplers import ProbabilitySampler
from opencensus.trace.tracer import Tracer
from opencensus.ext.azure.log_exporter import AzureLogHandler
Шаг 3. Знакомство с API-интерфейсами и пакетами SDK для OpenTelemetry Python
В следующей документации содержатся необходимые знания о API-интерфейсах и пакетах SDK Для OpenTelemetry Python.
- Документация по Python по OpenTelemetry
- Документация по дистрибутиву Azure Monitor по конфигурации и телеметрии
Примечание.
OpenTelemetry Python и OpenCensus Python имеют различные поверхности API, возможности автозаполнения и инструкции по подключению.
Шаг 4. Настройка дистрибутива OpenTelemetry в Azure Monitor
Следуйте инструкциям на странице начала работы , чтобы подключиться к дистрибутиву OpenTelemetry в Azure Monitor.
Изменения и ограничения
При переходе с OpenCensus на OpenTelemetry могут возникнуть следующие изменения и ограничения.
Поддержка Python < 3.7
Решения мониторинга на основе Python в OpenTelemetry поддерживают только Python 3.7 и больше, за исключением ранее поддерживаемых версий Python 2.7, 3.4, 3.5 и 3.6 из OpenCensus. Мы рекомендуем обновить пользователей, которые находятся на более старых версиях Python, так как по мере написания этого документа эти версии уже достигли конца жизни. Пользователи, непреклонные по поводу обновления, могут по-прежнему использовать решения OpenTelemetry, но могут найти непредвиденное или критическое поведение, которое не поддерживается. В любом случае последняя поддерживаемая версия opencensus-ext-azure всегда существует и по-прежнему работает для этих версий, но новые выпуски не создаются для этого проекта.
Конфигурации
OpenCensus Python предоставил некоторые параметры конфигурации , связанные с коллекцией и экспортом телеметрии. Вы достигаете одни и те же конфигурации и многое другое с помощью API и пакета SDK Для OpenTelemetry Python . Дистрибутив Python для OpenTelemetry в Azure Monitor является одним стоп-магазином для наиболее распространенных потребностей мониторинга для приложений Python. Так как дистрибутив инкапсулирует API OpenTelemetry/SDk, некоторые конфигурации для более редких вариантов использования в настоящее время не поддерживаются для дистрибутива. Вместо этого вы можете подключиться к экспортеру OpenTelemetry Azure Monitor, который с помощью API и ПАКЕТОВ SDK OpenTelemetry должен соответствовать вашим потребностям мониторинга. Некоторые из этих конфигураций включают:
- Пользовательские распространители
- Пользовательские примеры
- Добавление дополнительных процессоров диапазонов и модулей чтения метрик
Согласованность с Функции Azure
Чтобы предоставить возможности распределенной трассировки для приложений Python, которые вызывают другие приложения Python в функции Azure, пакет opencensus-extension-azure-functions был предоставлен, чтобы разрешить подключенный распределенный граф.
В настоящее время решения OpenTelemetry для Azure Monitor не поддерживают этот сценарий. В качестве обходного решения можно вручную распространить контекст трассировки в приложении функций Azure, как показано в следующем примере.
from opentelemetry.context import attach, detach
from opentelemetry.trace.propagation.tracecontext import \
TraceContextTextMapPropagator
# Context parameter is provided for the body of the function
def main(req, context):
functions_current_context = {
"traceparent": context.trace_context.Traceparent,
"tracestate": context.trace_context.Tracestate
}
parent_context = TraceContextTextMapPropagator().extract(
carrier=functions_current_context
)
token = attach(parent_context)
...
# Function logic
...
detach(token)
Расширения и экспортеры
Пакет SDK OpenCensus предлагает способы сбора и экспорта данных телеметрии с помощью интеграции OpenCensus и экспортеров соответственно. В OpenTelemetry интеграция теперь называется инструментированием, в то время как экспортеры остались с той же терминологией. Инструментирование и экспортеры OpenTelemetry Python являются супермножеством того, что было предоставлено в OpenCensus, поэтому с точки зрения охвата библиотек и функций библиотек OpenTelemetry являются прямым обновлением. Что касается дистрибутива OpenTelemetry в Azure Monitor, он поставляется с некоторыми популярными инструментированиями Python OpenTelemetry из коробки, поэтому дополнительный код не требуется. Корпорация Майкрософт полностью поддерживает эти инструментирования.
Что касается других инструментирования Python OpenTelemetry, которые не включены в этот список, пользователи по-прежнему могут вручную инструментировать с ними. Однако важно отметить, что стабильность и поведение не гарантированы или поддерживаются в этих случаях. Поэтому используйте их по своему усмотрению.
Если вы хотите предложить библиотеку инструментирования сообщества, чтобы включить в наш дистрибутив, пост или up-голосов идею в нашем сообществе отзывов. Для экспортеров дистрибутив Azure Monitor OpenTelemetry поставляется вместе с экспортером OpenTelemetry Azure Monitor. Если вы также хотите использовать других экспортеров, их можно использовать с дистрибутивом, как показано в этом примере.
TelemetryProcessors
Процессоры телеметрии OpenCensus Python — это мощный механизм, в котором пользователи могут изменять данные телеметрии перед отправкой экспортеру. В мире OpenTelemetryProcessors нет концепции telemetryProcessors, но существуют API и классы, которые можно использовать для репликации того же поведения.
Настройка имени облачной роли и экземпляра облачной роли
Следуйте инструкциям здесь, чтобы задать имя облачной роли и экземпляр облачной роли для телеметрии. Дистрибутив Azure Monitor OpenTelemetry автоматически извлекает значения из переменных среды и заполняет соответствующие поля.
Изменение диапазонов с помощью SpanProcessors
Скоро появится.
Изменение метрик с помощью представлений
Скоро появится.
Счетчики производительности
Экспортер Azure Monitor OpenCensus Azure Monitor автоматически собирает системные и связанные с производительностью метрики, называемые счетчиками производительности. Эти метрики отображаются в performanceCounters
экземпляре Application Insights. В OpenTelemetry мы больше не отправляем эти метрики явным образом performanceCounters
. Метрики, связанные с входящими и исходящими запросами, можно найти в стандартных метриках. Если вы хотите, чтобы OpenTelemetry использовала системные метрики, связанные с системой, можно использовать инструментирование экспериментальных системных метрик, внесенных сообществом Python OpenTelemetry. Этот пакет является экспериментальным и официально не поддерживается корпорацией Майкрософт.
Поддержка
Сведения об устранении неполадок, вариантах поддержки или обратной связи с OpenTelemetry см. в статье "Устранение неполадок, поддержка и обратная связь azure Monitor Application Insights".