관찰 가능성: 로깅, 추적 및 측정 단위

관찰성은 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 애플리케이션입니다.