Python에서 OpenTelemetry 문제 해결

이 문서에서는 Python에서 OpenTelemetry 문제를 해결하는 방법을 설명합니다.

문제 해결 검사 목록

1단계: 진단 로깅 사용

Microsoft Azure Monitor 내보내기는 내부 로깅에 Python 표준 로깅 라이브러리 를 사용합니다. OpenTelemetry API 및 Azure Monitor 내보내기 로그에는 불규칙한 활동에 대해 또는 ERRORWARNING 심각도 수준이 할당됩니다. INFO 심각도 수준은 일반 또는 성공적인 작업에 사용됩니다.

기본적으로 Python 로깅 라이브러리는 심각도 수준을 WARNING로 설정합니다. 따라서 이 심각도 설정에서 로그를 보려면 심각도 수준을 변경해야 합니다. 다음 예제 코드는 모든 심각도 수준의 로그를 콘솔 및 파일에 출력하는 방법을 보여 줍니다.

...
import logging

logging.basicConfig(format = "%(asctime)s:%(levelname)s:%(message)s", level = logging.DEBUG)

logger = logging.getLogger(__name__)
file = logging.FileHandler("example.log")
stream = logging.StreamHandler()
logger.addHandler(file)
logger.addHandler(stream)
...

2단계: 애플리케이션 호스트와 수집 서비스 간의 연결 테스트

Application Insights SDK 및 에이전트는 원격 분석을 전송하여 수집 엔드포인트에서 REST 호출로 수집됩니다. 웹 서버 또는 애플리케이션 호스트 컴퓨터에서 수집 서비스 엔드포인트로의 연결을 테스트하려면 PowerShell에서 cURL 명령 또는 원시 REST 요청을 사용합니다. 자세한 내용은 Azure Monitor Application Insights에서 누락된 애플리케이션 원격 분석 문제 해결을 참조하세요.

3단계: 중복 원격 분석 방지

여러 프로세서 또는 내보내기 인스턴스를 만드는 경우 중복 원격 분석이 발생하는 경우가 많습니다. 각 원격 분석 핵심 요소(로그, 메트릭 및 분산 추적)에 대해 한 번에 하나의 내보내기 및 프로세서만 실행해야 합니다.

다음 섹션에서는 중복 원격 분석을 일으킬 수 있는 시나리오에 대해 설명합니다.

Azure Functions 추적 로그 중복

Application Insights 내에서 각 추적 로그에 대한 항목 쌍이 표시되는 경우 다음과 같은 유형의 로깅 계측을 사용하도록 설정했을 것입니다.

  • Azure Functions 네이티브 로깅 계측
  • 배포 내의 azure-monitor-opentelemetry 로깅 계측

중복을 방지하려면 배포의 로깅을 사용하지 않도록 설정할 수 있지만 네이티브 로깅 계측은 Azure Functions 사용하도록 설정할 수 있습니다. 이렇게 하려면 환경 변수를 OTEL_LOGS_EXPORTERNone설정합니다.

"Always On" Azure Functions 중복된 원격 분석

Azure Functions Always On 설정이 기로 설정된 경우 Azure Functions 각 실행이 완료된 후 백그라운드에서 실행되는 일부 프로세스를 유지합니다. instance 경우 매번 호출 configure_azure_monitor 하는 5분 타이머 함수가 있다고 가정합니다. 20분 후에 동시에 실행되는 4개의 메트릭 내보내기가 있을 수 있습니다. 이 상황은 중복 메트릭 원격 분석의 원본일 수 있습니다.

이 경우 Always On 설정을 기로 설정하거나 각 configure_azure_monitor 호출 간에 공급자를 수동으로 종료해 봅니다. 각 공급자를 종료하려면 다음 코드와 같이 각 현재 미터, 추적기 및 로거 공급자에 대한 종료 호출을 실행합니다.

get_meter_provider().shutdown()
get_tracer_provider().shutdown()
get_logger_provider().shutdown()

Azure 통합 문서 및 Jupyter Notebooks

Azure 통합 문서 및 Jupyter Notebook은 내보내기 프로세스를 백그라운드에서 계속 실행할 수 있습니다. 중복된 원격 분석을 방지하려면 에 대해 더 많은 호출을 하기 전에 캐시를 configure_azure_monitor지우세요.

도움을 요청하십시오.

질문이 있거나 도움이 필요한 경우 지원 요청을 생성하거나Azure 커뮤니티 지원에 문의하세요. Azure 피드백 커뮤니티에 제품 피드백을 제출할 수도 있습니다.