OpenCensus Python SDK 및 Python용 Azure Monitor OpenCensus 내보내기에서 Azure Monitor OpenTelemetry Python 배포판으로 마이그레이션
참고 항목
OpenCensus Python SDK는 더 이상 사용되지 않지만 Microsoft는 2024년 9월 30일에 지원이 사용 중지될 때까지 이를 지원합니다. 이제 OpenTelemetry 기반 Python 제품을 권장하고 마이그레이션 지침을 제공합니다.
Python 애플리케이션을 Azure Monitor Application Insights OpenTelemetry Distro로 마이그레이션하려면 다음 단계를 따릅니다.
Warning
- OpenCensus "OpenTelemetry로 마이그레이션하는 방법" 블로그는 Azure Monitor 사용자에게 적용되지 않습니다.
- OpenTelemetry OpenCensus shim은 Microsoft에서 권장하거나 지원하지 않습니다.
- 다음은 Azure Monitor 고객을 위한 유일한 마이그레이션 계획을 간략하게 설명합니다.
1단계: OpenCensus 라이브러리 제거
opencensus-*
로 시작하는 모든 Pypi 패키지를 포함하여 OpenCensus와 관련된 모든 라이브러리를 제거합니다.
pip freeze | grep opencensus | xargs pip uninstall -y
2단계: 코드에서 OpenCensus 제거
코드에서 OpenCensus SDK 및 Azure Monitor OpenCensus 내보내기의 모든 인스턴스를 제거합니다.
opencensus
로 시작하는 가져오기 문을 확인하여 제거해야 하는 OpenCensus API/SDK의 모든 통합, 내보내기 및 인스턴스를 찾습니다.
다음은 제거해야 하는 가져오기 문의 예입니다.
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단계: OpenTelemetry Python API/SDK 숙지
다음 설명서에서는 OpenTelemetry Python API/SDK에 대한 필수 정보를 제공합니다.
참고 항목
OpenTelemetry Python 및 OpenCensus Python에는 다른 API 표면, 자동 수집 기능 및 온보딩 지침이 있습니다.
4단계: Azure Monitor OpenTelemetry 배포판 설정
시작 페이지에 따라 Azure Monitor OpenTelemetry 배포판에 온보딩합니다.
변경 내용 및 제한 사항
OpenCensus에서 OpenTelemetry로 마이그레이션할 때 다음과 같은 변경 내용 및 제한 사항이 발생할 수 있습니다.
Python < 3.7 지원
OpenTelemetry의 Python 기반 모니터링 솔루션은 이전에 OpenCensus에서 지원되었던 Python 버전 2.7, 3.4, 3.5 및 3.6을 제외하고 Python 3.7 이상만 지원합니다. 이 문서를 작성하는 시점에는 해당 버전이 이미 수명이 종료되었기 때문에 이전 버전의 Python을 사용하는 사용자의 경우 업그레이드하는 것이 좋습니다. 업그레이드하지 않는 것에 대해 단호한 사용자는 여전히 OpenTelemetry 솔루션을 사용할 수 있지만 지원되지 않는 예기치 않거나 호환성이 손상되는 동작을 발견할 수도 있습니다. 어떤 경우든 마지막으로 지원되는 opencensus-ext-azure 버전은 항상 존재하며 해당 버전에서 여전히 작동하지만 해당 프로젝트에 대한 새 릴리스는 없습니다.
구성
OpenCensus Python은 원격 분석의 컬렉션 및 내보내기와 관련된 몇 가지 구성 옵션을 제공했습니다. OpenTelemetry Python API 및 SDK를 사용하여 동일한 구성 등을 달성할 수 있습니다. OpenTelemetry Azure 모니터 Python 배포판은 Python 애플리케이션에 대한 가장 일반적인 모니터링 요구 사항을 충족하는 원스톱 상점입니다. 배포판은 OpenTelemetry API/SDk를 캡슐화하므로 일반적이지 않은 사용 사례에 대한 일부 구성은 현재 배포판에서 지원되지 않을 수 있습니다. 대신 Azure Monitor OpenTelemetry 내보내기에 온보딩하도록 선택할 수 있습니다. OpenTelemetry API/SDK를 사용하면 모니터링 요구 사항을 충족할 수 있습니다. 이러한 구성 중 일부는 다음과 같습니다.
- 사용자 지정 전파자
- 사용자 지정 샘플러
- 추가 범위/로그 프로세서/메트릭 판독기 추가
Azure Functions와의 응집력
Azure 함수 내에서 다른 Python 애플리케이션을 호출하는 Python 애플리케이션에 분산 추적 기능을 제공하기 위해 연결된 분산 그래프를 허용하도록 opencensus-extension-azure-functions 패키지가 제공되었습니다.
현재 Azure Monitor용 OpenTelemetry 솔루션은 이 시나리오를 지원하지 않습니다. 해결 방법으로, 다음 예제와 같이 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)
확장 및 내보내기
OpenCensus SDK는 OpenCensus 통합 및 내보내기를 통해 원격 분석을 각각 수집하고 내보내는 방법을 제공했습니다. OpenTelemetry에서는 통합을 계측이라고 하는 반면, 내보내기는 동일한 용어를 사용합니다. OpenTelemetry Python 계측 및 내보내기는 OpenCensus에서 제공된 항목의 상위 집합이므로 라이브러리 적용 범위 및 기능 측면에서 OpenTelemetry 라이브러리는 직접 업그레이드입니다. Azure Monitor OpenTelemetry 배포판의 경우 인기 있는 OpenTelemetry Python 계측이 기본적으로 제공되므로 추가 코드가 필요하지 않습니다. Microsoft는 이러한 계측을 완벽하게 지원합니다.
이 목록에 포함되지 않은 다른 OpenTelemetry Python 계측의 경우 사용자가 여전히 수동으로 계측할 수 있습니다. 그러나 이러한 경우에는 안정성과 동작이 보장되거나 지원되지 않는다는 점에 유의해야 합니다. 따라서 사용자의 재량에 따라 사용합니다.
배포판에 포함하도록 커뮤니티 계측 라이브러리를 제안하려면 피드백 커뮤니티에 아이디어를 게시하거나 투표하세요. 내보내기의 경우 Azure Monitor OpenTelemetry 배포판은 Azure Monitor OpenTelemetry 내보내기와 함께 제공됩니다. 다른 내보내기도 사용하려는 경우 이 예제와 같이 배포판과 함께 사용할 수 있습니다.
TelemetryProcessors
OpenCensus Python 원격 분석 프로세서는 사용자가 내보내기로 전송되기 전에 원격 분석을 수정할 수 있는 강력한 메커니즘입니다. OpenTelemetry 세계에는 TelemetryProcessors라는 개념이 없지만 동일한 동작을 복제하는 데 사용할 수 있는 API 및 클래스가 있습니다.
클라우드 역할 이름 및 클라우드 역할 인스턴스 설정
원격 분석에 대한 클라우드 역할 이름 및 클라우드 역할 인스턴스를 설정하는 방법은 여기의 지침을 따릅니다. OpenTelemetry Azure Monitor 배포판은 환경 변수에서 값을 자동으로 가져와 해당 필드를 채웁니다.
SpanProcessors를 사용하여 범위 수정
곧 공개됩니다.
뷰를 사용하여 메트릭 수정
곧 공개됩니다.
성능 카운터
OpenCensus Python Azure Monitor 내보내기는 성능 카운터라는 시스템 및 성능 관련 메트릭을 자동으로 수집했습니다. 이러한 메트릭은 Application Insights 인스턴스의 performanceCounters
에 표시됩니다. OpenTelemetry에서는 더 이상 이러한 메트릭을 performanceCounters
에 명시적으로 보내지 않습니다. 수신/발신 요청과 관련된 메트릭은 표준 메트릭에서 찾을 수 있습니다. OpenTelemetry가 시스템 관련 메트릭을 자동으로 수집하도록 하려면 OpenTelemetry Python 커뮤니티에서 제공하는 실험적 시스템 메트릭 계측을 사용할 수 있습니다. 이 패키지는 실험적이며 Microsoft에서 공식적으로 지원되지 않습니다.
지원
문제 해결 단계, 지원 옵션을 검토하거나 OpenTelemetry 피드백을 제공하려면 Azure Monitor Application Insights에 대한 OpenTelemetry 문제 해결, 지원 및 피드백을 참조 하세요.