오픈텔레메트리(OpenTelemetry) 표준으로 LLM 추적, 벤더 종속성 탈출!
오픈텔레메트리(OpenTelemetry)가 LLM 추적을 위한 표준을 발표하여, 추적 포맷(Tracing Format)의 표준화를 시도함
기존 LLM 추적 방식의 문제점: 벤더 종속성(Vendor Lock-in) 발생 및 대시보드 호환성(Dashboard Compatibility) 부족
오픈텔레메트리(OpenTelemetry) 표준은 세 가지 GenAI 스팬(Span) 정의: chat, invoke_agent, execute_tool
프롬프트(Prompt) 및 완료(Completion) 기록은 기본적으로 비활성화하여 개인 정보 보호(Privacy)를 강화
표준 준수를 위한 마이그레이션(Migration) 과정에서 추적 데이터(Tracing Data) 미수집 문제 발생, 해결 및 6개의 패치 버전 출시
오픈텔레메트리(OpenTelemetry) GenAI Semantic Conventions: 핵심 원리
오픈텔레메트리(OpenTelemetry)는 LLM 추적을 위한 표준인 GenAI Semantic Conventions을 발표하여, 추적 데이터(Tracing Data)의 상호 운용성(Interoperability)을 확보했다. 이 표준은 세 가지 주요 스팬(Span)을 정의한다.
chat: 모델 호출(Model Call) 시 사용
invoke_agent: 에이전트 호출(Agent Invocation) 시 사용
execute_tool: 도구 실행(Tool Execution) 시 사용
스팬 이름(Span Name)은 {operation} {name} 형식으로 지정하며, 기존 벤더 종속적인 추적 방식에서 벗어나 표준화된 속성(Standardized Attributes)을 사용한다. 이를 통해 다양한 백엔드(Backend)에서 추적 데이터를 시각화할 수 있다.
표준 준수를 위한 마이그레이션(Migration) 과정
기존 추적 방식에서 오픈텔레메트리(OpenTelemetry) 표준으로 마이그레이션(Migration)하는 과정에서, 저자는 이중 방출(Dual-Emit) 방식을 채택했다. 이는 기존 속성과 새로운 표준 속성을 동시에 내보내는 방식으로, 하위 호환성(Backward Compatibility)을 유지하면서 점진적으로 표준을 적용할 수 있도록 한다.
@deprecated 어노테이션(Annotation): 기존 속성에 적용하여 사용 중단을 알림
OTEL_SEMCONV_STABILITY_OPT_IN 환경 변수: 새로운 속성 사용 여부 제어
v3 릴리스(Release): 기존 속성 완전 제거
이러한 접근 방식은 기존 사용자(Existing Users)에게 미치는 영향 최소화하면서, 표준을 준수하는 방향으로의 전환을 가능하게 한다.
LLM 추적 시 개인 정보 보호(Privacy) 고려 사항
오픈텔레메트리(OpenTelemetry) 표준은 개인 정보 보호(Privacy)를 최우선 가치로 삼아, 프롬프트(Prompt)와 완료(Completion)를 기본적으로 기록하지 않도록 권고한다. 이는 민감한 정보의 무분별한 노출을 방지하기 위한 조치이다.
기본 설정: 프롬프트 및 완료 기록 비활성화
선택적 기록: gen_ai.input.messages 및 gen_ai.output.messages 속성을 사용하여 JSON 문자열 형태로 기록
외부 저장소: 프롬프트 및 완료를 별도의 저장소에 저장하고, 스팬에는 참조 정보만 포함
이러한 접근 방식은 데이터 유출 위험(Data Leakage Risk)을 최소화하면서, 필요한 경우에만 프롬프트 및 완료를 기록할 수 있도록 한다.
오픈텔레메트리(OpenTelemetry) 표준의 장점
오픈텔레메트리(OpenTelemetry) 표준을 준수함으로써 얻을 수 있는 가장 큰 장점은 다양한 백엔드(Backend)와의 호환성(Compatibility)이다. 표준화된 속성을 사용하면, 특정 벤더(Vendor)에 종속되지 않고 여러 도구에서 추적 데이터를 시각화할 수 있다.
Jaeger: 기본 계층 구조(Hierarchy View) 지원
Arize Phoenix: GenAI 전용 UI 및 에이전트 워크플로우(Agent Workflow) 제공
SigNoz: GenAI 대시보드 지원
Datadog: LLM 관측 가능성(Observability) 기능 제공
Langfuse: 세션 뷰(Session View) 지원
Grafana + Tempo: 속성 기반 쿼리(Query) 및 사용자 정의 대시보드(Custom Dashboard) 구축
결과적으로 벤더 종속성(Vendor Lock-in)을 방지하고, 다양한 도구를 활용하여 LLM 시스템을 모니터링할 수 있다.
실제 구현 시 발생한 문제점 및 해결 과정
저자는 오픈텔레메트리(OpenTelemetry) 표준을 구현하는 과정에서, 추적 데이터(Tracing Data)가 전혀 수집되지 않는 문제에 직면했다. 이는 Node.js SDK의 특정 설정으로 인해 발생한 문제였다.
문제 원인: spanProcessors: [] 설정 시 추적 데이터 내보내기(Export) 비활성화
해결 방법: 설정 수정 및 테스트 코드(Test Code) 보완
결과: 6개의 패치 버전(Patch Version) 출시
이러한 경험을 통해, 저자는 테스트의 중요성(Importance of Testing)을 강조하며, 실제 구현 환경에서의 테스트를 통해 예상치 못한 문제를 발견하고 해결하는 과정을 보여준다.