Python 애플리케이션용 Azure Monitor 설정
주의
OpenCensus Python SDK가 사용 중지되었습니다. OpenTelemetry 기반 Python 제품을 권장 하고 마이그레이션 지침을 제공합니다.
Azure Monitor는 분산 추적, 메트릭 컬렉션 및 Python 애플리케이션의 로깅을 지원합니다.
Python 애플리케이션에 대한 데이터를 추적하고 내보내기 위해 Microsoft에서 지원하는 솔루션은 Azure Monitor 내보내기를 통한 Opencensus Python SDK입니다.
지원되지 않으므로 Python용 다른 원격 분석 SDK를 원격 분석 솔루션으로 사용하지 않는 것이 좋습니다.
OpenCensus는 OpenTelemetry로 통합되고 있습니다. OpenTelemetry가 점진적으로 완성되는 동안에는 OpenCensus가 계속 권장됩니다.
필수 조건
Azure 구독이 필요합니다. Azure 구독이 아직 없는 경우 시작하기 전에 체험 계정을 만듭니다.
참고 항목
2025년 3월 31일에 계측 키 수집에 대한 지원이 종료됩니다. 계측 키 수집은 계속 작동하지만 더 이상 기능에 대한 업데이트 또는 지원을 제공하지 않습니다. 연결 문자열로 전환하여 새로운 기능을 활용합니다.
OpenCensus Python SDK 소개
OpenCensus는 분산 추적, 메트릭 및 로깅 원격 분석을 수집할 수 있는 오픈 소스 라이브러리 집합입니다. Azure Monitor 내보내기를 사용하여 이 수집된 원격 분석을 Application Insights로 보낼 수 있습니다. 이 문서에서는 Python에 대해 OpenCensus 및 Azure Monitor 내보내기를 설정하고 Azure Monitor로 모니터링 데이터를 전송하는 프로세스를 단계별로 안내합니다.
Azure Monitor 내보내기용 OpenCensus Python SDK를 사용한 계측
OpenCensus Azure Monitor 내보내기를 설치합니다.
python -m pip install opencensus-ext-azure
SDK는 세 가지 Azure Monitor 내보내기를 사용하여 Azure Monitor에 대한 다양한 유형의 원격 분석을 전송합니다. 단계는 trace
, metrics
및 logs
입니다. 이러한 원격 분석 유형에 대한 자세한 내용은 데이터 플랫폼 개요를 참조하세요. 다음 지침을 사용하여 세 가지 내보내기를 통해 이러한 원격 분석 유형을 전송합니다.
원격 분석 유형 매핑
OpenCensus는 다음 내보내기를 Azure Monitor에 표시되는 원격 분석 유형에 매핑합니다.
관찰성의 중심 | Azure Monitor의 원격 분석 유형 | 설명 |
---|---|---|
로그 | Traces, exceptions, customEvents | 로그 원격 분석, 예외 원격 분석, 이벤트 원격 분석 |
메트릭 | customMetrics, performanceCounters | 사용자 지정 메트릭 성능 카운터 |
추적 | 요청 종속성 | 들어오는 요청, 나가는 요청 |
로그
먼저 일부 로컬 로그 데이터를 생성해 보겠습니다.
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()
범위의 각 숫자에 대해 로그 항목이 내보내집니다.
Log Entry - 0 Log Entry - 1 Log Entry - 2 Log Entry - 3 Log Entry - 4
이 로그 데이터를 Azure Monitor에 표시하려고 합니다. 또는
APPLICATIONINSIGHTS_CONNECTION_STRING
환경 변수에서 지정할 수 있습니다. connection_string을AzureLogHandler
에 직접 전달할 수도 있지만 연결 문자열을 버전 제어에 추가하면 안 됩니다.APPLICATIONINSIGHTS_CONNECTION_STRING=<appinsights-connection-string>
원격 분석을 Application Insights로 보내는 데 사용되는 Exporter를 인스턴스화하려면 연결 문자열을 사용하는 것이 좋습니다. 다음 코드 샘플을 기반으로 이전 단계에서 코드를 수정합니다.
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}")
내보내기에서 로그 데이터를 Azure Monitor로 전송합니다.
traces
에서 데이터를 찾을 수 있습니다.이 컨텍스트에서
traces
는tracing
과 동일하지 않습니다. 여기서traces
는AzureLogHandler
를 활용할 때 Azure Monitor에 표시되는 원격 분석 유형을 나타냅니다. 그러나tracing
은 OpenCensus의 개념을 의미하며 분산 추적과 관련이 있습니다.참고 항목
루트 로거가
warning
수준으로 구성됩니다. 즉, 보내는 로그 중 심각도가 낮은 로그는 무시되고 다시 Azure Monitor로 전송되지 않습니다. 자세한 내용은 로깅 설명서를 참조하세요.custom_dimensions
필드를 사용하여extra
키워드 인수의 로그 메시지에 사용자 지정 속성을 추가할 수도 있습니다. 이 속성은 Azure Monitor에customDimensions
키-값 쌍으로 표시됩니다.참고 항목
이 기능이 작동하려면
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 계측 사용의 일환으로 진단 데이터를 수집하여 Microsoft에 보냅니다. 이 데이터는 Application Insights를 실행하고 개선하는 데 도움이 됩니다. 중요하지 않은 데이터 컬렉션을 사용하지 않도록 설정할 수 있는 옵션이 있습니다. 자세한 내용은 Application Insights의 Statsbeat를 참조하세요.
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
원격 분석을 자동으로 추적하고 전송하지 않습니다. Python 로깅 라이브러리를 통해 예외를 사용하여 AzureLogHandler
를 통해 전송됩니다. 일반 로깅과 마찬가지로 사용자 지정 속성을 추가할 수 있습니다.
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는 이 로깅을 수행하는 방법에 제한을 두지 않지만 예외 원격 분석을 명시적으로 로깅해야 합니다.
이벤트 보내기
trace
원격 분석을 보내는 것과 동일한 방식으로(대신 AzureEventHandler
을 사용하여) customEvent
원격 분석을 보낼 수 있습니다.
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의 샘플링을 참조하세요.
로그 상관관계
추적 컨텍스트 데이터를 통해 로그를 보강하는 방법에 대한 자세한 내용은 OpenCensus Python 로그 통합을 참조하세요.
원격 분석 수정
Azure Monitor로 전송되기 전에 추적된 원격 분석을 수정하는 방법에 대한 자세한 내용은 OpenCensus Python 원격 분석 프로세서를 참조하세요.
메트릭
OpenCensus.stats는 4가지 집계 메서드를 지원하지만 Azure Monitor에 대해서는 부분 지원을 제공합니다.
- 개수: 측정 지점의 수입니다. 값은 누적되며, 증가만 할 수 있고 다시 시작할 때 0으로 다시 설정됩니다.
- 합계: 측정 지점의 합계입니다. 값은 누적되며, 증가만 할 수 있고 다시 시작할 때 0으로 다시 설정됩니다.
- LastValue: 마지막으로 기록된 값을 유지하고 다른 모든 항목을 삭제합니다.
- 배포: Azure 내보내기는 측정점의 히스토그램 분포를 지원하지 않습니다.
개수 집계 예
먼저 일부 로컬 메트릭 데이터를 생성해 보겠습니다. 사용자가 Enter 키를 선택하는 횟수를 추적하는 메트릭을 만들겠습니다.
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()
메트릭은 여러 번 추적하기 위해 만들어집니다. 각 항목마다 값이 증분되고 메트릭 정보는 콘솔에 표시됩니다. 이 정보에는 메트릭이 업데이트된 현재 값 및 현재 타임스탬프가 포함됩니다.
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)
시연을 위해 값을 입력하는 것이 유용하지만 메트릭 데이터를 Azure Monitor로 내보내려고 합니다. 연결 문자열을 내보내기 도구에 직접 전달합니다. 또는 환경 변수
APPLICATIONINSIGHTS_CONNECTION_STRING
에서 지정할 수 있습니다. 원격 분석을 Application Insights로 보내는 데 사용되는 Exporter를 인스턴스화하려면 연결 문자열을 사용하는 것이 좋습니다. 다음 코드 샘플을 기반으로 이전 단계에서 코드를 수정합니다.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()
내보내기는 고정된 간격으로 메트릭 데이터를 Azure Monitor로 전송합니다. Application Insights 백 엔드가 60초 간격으로 메트릭 지점의 집계를 가정하기 때문에 이 값을 60초로 설정해야 합니다. 단일 메트릭을 추적하므로 어떤 값과 타임스탬프가 포함되는지와 무관하게 이 메트릭 데이터는 간격마다 전송됩니다. 데이터는 누적되며, 증가만 할 수 있고 다시 시작할 때 0으로 다시 설정됩니다.
customMetrics
에서 데이터를 찾을 수 있지만customMetrics
속성valueCount
,valueSum
,valueMin
,valueMax
및valueStdDev
은 효과적으로 사용되지 않습니다.
메트릭에서 사용자 지정 차원 설정
OpenCensus Python SDK를 사용하면 키-값 쌍의 사전과 같은 tags
를 사용하여 메트릭 원격 분석에 사용자 지정 차원을 추가할 수 있습니다.
사용할 태그를 태그 맵에 삽입합니다. 태그 맵은 사용할 수 있는 모든 사용 가능한 태그에 대한 일종의 "풀" 역할을 합니다.
... tmap = tag_map_module.TagMap() tmap.insert("url", "http://example.com") ...
특정
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()) ...
측정 맵에 기록할 때 태그 맵을 사용해야 합니다.
View
에 지정된 태그 키는 기록에 사용되는 태그 맵에 있어야 합니다.... mmap = stats_recorder.new_measurement_map() mmap.measure_int_put(prompt_measure, 1) mmap.record(tmap) # <-- pass the tag map in here ...
customMetrics
테이블에서prompt_view
를 사용하여 내보낸 모든 메트릭 레코드에는 사용자 지정 차원{"url":"http://example.com"}
이 있습니다.동일한 키를 사용하여 다른 값으로 태그를 생성하려면 해당 항목에 대한 새 태그 맵을 만듭니다.
... 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,
)
...
현재 전송되는 성능 카운터는 다음과 같습니다.
- 사용 가능한 메모리(바이트)
- CPU 프로세서 시간(백분율)
- 들어오는 요청 빈도(초당)
- 들어오는 요청 평균 실행 시간(밀리초)
- 프로세스 CPU 사용량(백분율)
- 프로세스 프라이빗 바이트(바이트)
performanceCounters
에서 이러한 메트릭을 볼 수 있어야 합니다. 자세한 내용은 성능 카운터를 참조하세요.
원격 분석 수정
Azure Monitor로 전송되기 전에 추적된 원격 분석을 수정하는 방법에 대한 자세한 내용은 OpenCensus Python 원격 분석 프로세서를 참조하세요.
추적
참고 항목
OpenCensus에서 tracing
는 분산 추적을 의미합니다. AzureExporter
매개 변수는 requests
및 dependency
원격 분석을 Azure Monitor로 전송합니다.
먼저 일부 추적 데이터를 로컬로 생성해 보겠습니다. 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()
각 항목마다 값이 셸에 출력됩니다. OpenCensus Python 모듈은 해당하는
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)]
시연을 위해 값을 보는 것이 유용하지만
SpanData
를 Azure Monitor로 내보내려고 합니다. 연결 문자열을 내보내기 도구에 직접 전달합니다. 또는 환경 변수APPLICATIONINSIGHTS_CONNECTION_STRING
에서 지정할 수 있습니다. 원격 분석을 Application Insights로 보내는 데 사용되는 Exporter를 인스턴스화하려면 연결 문자열을 사용하는 것이 좋습니다. 다음 코드 샘플을 기반으로 이전 단계에서 코드를 수정합니다.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()
이제 Python 스크립트를 실행할 때 값만 셸에 출력됩니다. 만들어진
SpanData
는 Azure Monitor로 전송됩니다.dependencies
에서 내보내진 범위 데이터를 찾을 수 있습니다.나가는 요청에 대한 자세한 내용은 OpenCensus Python 종속성을 참조하세요. 들어오는 요청에 대한 자세한 내용은 OpenCensus Python 요청을 참조하세요.
샘플링
OpenCensus의 샘플링에 대한 내용은 OpenCensus의 샘플링을 참조하세요.
추적 상관 관계
추적 데이터의 원격 분석 상관 관계에 대한 자세한 내용은 OpenCensus Python 원격 분석 상관 관계를 참조하세요.
원격 분석 수정
Azure Monitor로 전송되기 전에 추적된 원격 분석을 수정하는 방법에 대한 자세한 내용은 OpenCensus Python 원격 분석 프로세서를 참조하세요.
Azure Monitor 내보내기 도구 구성
표시된 것처럼 OpenCensus를 지원하는 3가지 Azure Monitor 내보내기 도구가 있습니다. 각 항목은 서로 다른 유형의 원격 분석을 Azure Monitor로 보냅니다. 각 내보내기에서 보내는 원격 분석의 유형을 확인하려면 다음 표를 참조하세요.
각 내보내기 도구는 생성자를 통해 전달된 구성에 대해 동일한 인수를 수락합니다. 각각에 대한 정보를 여기서 확인할 수 있습니다.
Exporter 원격 분석 | 설명 |
---|---|
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 v1.0.3부터 기본 경로는 OS 임시 디렉터리 + opencensus-python + your-ikey 입니다. v1.0.3 이전에는 기본 경로가 $USER + .opencensus + .azure + python-file-name 입니다. |
timeout |
수집 서비스에 원격 분석을 보낼 네트워킹 시간 제한을 초 단위로 지정합니다. 기본값은 10s 입니다. |
Azure Functions와 통합
Azure Functions 환경에서 사용자 지정 원격 분석을 캡처하려면 OpenCensus Python Azure Functions 확장을 사용합니다. 자세한 내용은 Azure Functions Python 개발자 가이드를 참조하세요.
인증(프리뷰)
참고 항목
인증 기능은 opencensus-ext-azure
v1.1b0부터 사용할 수 있습니다.
각 Azure Monitor 내보내기 도구는 Azure Active Directory를 사용한 OAuth 인증을 통해 원격 분석 페이로드를 안전하게 보내는 구성을 지원합니다. 자세한 내용은 인증 설명서를 참조하세요.
쿼리를 사용하여 데이터 보기
로그(분석) 탭을 통해 애플리케이션에서 전송된 원격 분석 데이터를 볼 수 있습니다.
활성 목록:
- Azure Monitor 추적 내보내기를 사용하여 전송되는 원격 분석의 경우 들어오는 요청은
requests
에 표시됩니다. 나가는 또는 진행 중인 요청은dependencies
에 표시됩니다. - Azure Monitor 메트릭 내보내기로 전송된 원격 분석의 경우 전송된 메트릭은
customMetrics
에 표시됩니다. - Azure Monitor 로그 내보내기를 사용하여 전송되는 원격 분석의 경우 로그는
traces
에 표시됩니다. 예외는exceptions
에 표시됩니다.
쿼리 및 로그를 사용하는 방법에 대한 자세한 내용은 Azure Monitor의 로그를 참조하세요.
Microsoft Entra ID 기반 인증 구성 및 사용
참고 항목
Microsoft Entra 인증은 Python v2.7, v3.6, v3.7에 대해서만 사용할 수 있습니다. Application Insights OpenCensus Python SDK의 Microsoft Entra ID에 대한 지원은 베타 버전 opencensus-ext-azure 1.1b0부터 제공됩니다.
참고 항목
OpenCensus Python SDK는 더 이상 사용되지 않지만 Microsoft는 2024년 9월 30일에 지원이 사용 중지될 때까지 이를 지원합니다. 이제 OpenTelemetry 기반 Python 제품을 권장하고 마이그레이션 지침을 제공합니다.
적절한 자격 증명을 생성하고 Azure Monitor 내보내기 생성자에 전달합니다. 연결 문자열이 리소스의 계측 키 및 수집 엔드포인트로 설정되어 있는지 확인합니다.
OpenCensus
Azure Monitor 내보내기는 이러한 인증 유형을 지원합니다. 프로덕션 환경에서 관리 ID를 사용하는 것이 좋습니다.
시스템 할당 관리 ID
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)
)
...
사용자 할당 관리 ID
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)
)
...
Python용 OpenCensus에 대해 자세히 알아보기
문제 해결
애플리케이션 호스트와 수집 서비스 간의 연결 테스트
Application Insights SDK 및 에이전트는 수집 엔드포인트에 대한 REST 호출로 수집하기 위해 원격 분석을 보냅니다. PowerShell 또는 curl 명령의 원시 REST 클라이언트를 사용하여 웹 서버 또는 애플리케이션 호스트 컴퓨터에서 수집 서비스 엔드포인트로의 연결을 테스트할 수 있습니다. Azure Monitor Application Insights에서 누락된 애플리케이션 원격 분석 문제 해결을 참조하세요.
릴리스 정보
최신 릴리스 정보는 Python Azure Monitor 내보내기를 참조하세요
서비스 업데이트에는 주요 Application Insights 개선 사항도 요약되어 있습니다.
다음 단계
- 사용 환경을 사용하도록 설정하려면 웹 또는 브라우저 사용자 모니터링을 사용하도록 설정합니다.
- 들어오는 요청 추적.
- 나가는 요청 추적.
- 애플리케이션 맵을 체크 아웃합니다.
- 엔드 투 엔드 성능 모니터링을 수행하는 방법을 알아봅니다.