관찰 가능성: 로깅, 추적 및 측정 단위
관찰성은 aidp_observability 패키지를 통해 Oracle AI Data Platform Workbench 애플리케이션에 원활하게 통합되어 최소한의 설정으로 자동 원격 측정(로그, 추적, 측정지표) 수집이 가능합니다.
초기화
다음과 같이 임포트 및 초기화합니다.
from observability.aidp_observability import AIDPObservability
from observability.config import CollectorConfig
config = CollectorConfig()
config.service_name = "dummy_name"
observability = AIDPObservability(config)
observability.initialize()초기화 시:
- 추적, 측정항목 및 로그에 대한 OpenTelemetry 익스포터가 생성됩니다.
- 수집기 끝점은 모든 원격 측정 데이터(포트 4317, GRpc 프로토콜)에 대해 구성됩니다.
- 응용 프로그램 로거가 설정됩니다.
- 플레이그라운드 모드는 인스턴트 추적 표시를 위해 인메모리 익스포터를 사용으로 설정합니다.
- 수집기는 로그 순환, 버퍼링에 대해 미리 구성되어 있으며 원격 측정 내보내기를 위한 싱크를 포함합니다.
- 기본 측정지표, 로그 및 AI 데이터 플랫폼 워크벤치 메타데이터는 모든 원격 측정 신호에 포함됩니다.
- 기본 범위/세션 속성(예: sessionId, traceId)이 상관 관계를 위해 설정됩니다.
사용 패턴:
원격 측정을 내보내기 위해 애플리케이션 논리를 변경할 필요가 없습니다. 사용자:
- 측정항목에 OpenTelemetry 계량기를 사용합니다.
- Python의 표준 `logging`을 로그에 사용합니다.
- 추적에 OpenTelemetry 추적기를 사용합니다.
예
import logging
import time
from opentelemetry import trace, metrics
tracer = trace.get_tracer(__name__)
meter = metrics.get_meter(__name__)
request_counter = meter.create_counter(
name="requests_total",
description="Number of requests processed",
unit="1",
)
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger("sample-app")
def process_request(user_id: str):
logger.info("Processing request for user %s", user_id)
request_counter.add(1, {"user.id": user_id})
with tracer.start_as_current_span("process_request") as span:
span.set_attribute("user.id", user_id)
time.sleep(0.1)
span.add_event("request_completed", {"status": "ok"})
if __name__ == "__main__":
for i in range(3):
process_request(f"user-{i}")
time.sleep(1)주:
응용 프로그램 원격 측정은 자동으로 내보내집니다. 사용자가 계측을 변경할 필요가 없습니다. 추적 보고를 위한 관찰성 패키지 자동 계측 LLM 프레임워크 및 LangGraph 애플리케이션입니다.