OpenTelemetry를 활용해 LLM 호출을 추적하고 토큰·요금 데이터를 연동하는 실무 가이드 — 실시간 관측과 비용 정합성 확보 방법을 단계별로 제시합니다.
- OpenTelemetry로 LLM 요청/응답을 트레이스하고 토큰·요금을 메트릭으로 수집하는 설계 팁
- 실무 적용 사례와 벤더별 과금·성능 비교 테이블로 의사결정 가이드 제공
- 관측-과금 연동에서 흔히 발생하는 정합성 문제와 예방 조치
매일 엑셀 반복 작업에 시달리던 실무자 A씨는 LLM 기반 문서 자동요약을 도입하며 비용 예측이 맞지 않아 팀이 혼란에 빠졌다. 인공지능 인사이트 에디토리얼 팀의 분석 결과, 문제의 핵심은 ‘관측(Observability)과 과금(Chargeback)을 분리된 방식으로 설계’한 데 있었다. 본문은 A씨 같은 실무자와 LLM 서비스 도입을 고민하는 기획자 B씨를 위해 OpenTelemetry를 이용한 관측-과금 통합 설계와 구현, 운영 체크리스트를 실무 중심으로 정리한다.
OpenTelemetry LLM 연동 설계의 핵심 흐름 — 트레이스에서 비용까지
LLM 시스템은 요청 단위로 토큰이 소비되고 응답 지연·재시도·프롬프트 변형 등이 과금에 직접 영향을 준다. 따라서 트레이스(span) 설계는 단순한 요청 추적을 넘어 토큰카운트, 프롬프트/응답 크기, 모델ID, 응답 등급(정상/부분실패)을 함께 캡처해야 한다. 최신 공식 기술 문서에 따르면 OpenTelemetry는 span과 metric을 동시에 수집·내보내는 패턴을 지원하므로 이를 활용하면 관측·과금 연동이 가능하다.
구체적 설계 포인트:
- 요청 트레이스: client.request span 포함 — model, prompt_id, prompt_token_count, response_token_count, cost_estimate 태그
- 응답 트레이스: server.response span 포함 — latency_ms, status_code, billed_tokens, prompt_hash
- 메트릭: 토큰 합계(token.total), 호출수(request.count), 실패율(request.error_rate), 평균응답시간(latency.p95) 등
- 로그: 요청 원본, 프롬프트 샘플(마스킹), 모델 버전, 벤더 응답 헤더(요금 관련 헤더 캡처)

실무 적용 사례: A씨의 LLM 도입 전후 — 관측·과금 정합성 확보
사례 분석으로 A씨의 문제를 재구성하면 다음과 같다. 초기 설계에서는 ‘요청 단위 로그’만 수집했고, 프롬프트 변형과 재시도는 추적되지 않았기 때문에 월말 정산에서 실제 사용량과 시스템 로그가 다르게 집계됐다. 인공지능 인사이트 에디토리얼 팀의 권장 변경사항은 다음과 같다.
- 모든 LLM 호출을 단일 Trace ID로 묶어 재시도/캐시 적중 여부를 한눈에 파악
- 프롬프트 템플릿별 prompt_id를 부여하고, 템플릿과 실제 프롬프트(요약본)를 별도 속성으로 저장
- 벤더 응답의 billed_tokens 또는 사용량 헤더를 우선 소스(source of truth)로 취급하되, 내부 계산값과 상이할 경우 자동 알림 처리
💡 인공지능 인사이드 팁: 프롬프트는 해시(prompt_hash)로 인덱싱하고 원문은 마스킹/부분 저장하여 개인정보 규제를 준수하면서도 비용 정합성을 확인할 수 있다.
변경 적용 후 A씨 팀은 월별 비용 오차를 20% 이상 줄였고, 재시도 패턴을 기반으로 한 라우팅 최적화로 평균 응답시간도 개선되었다.

데이터 비교 테이블: 벤더별 관측·요금 연동 체크포인트
| 비교 항목 | OpenAI | Google/Vertex AI | Anthropic | 현장 계산(내부) |
|---|---|---|---|---|
| 요금 헤더 제공 여부 | 일부 API 응답에 billed_tokens 제공 | 요금 메트릭 API로 제공(문서 참조 필요) | 모델별 응답에 토큰 정보 포함 | 토큰 계산 루틴 필요 |
| 실시간 정합성 난이도 | 중간 | 중간~높음 | 중 | 높음(캐시·재시도 고려 필요) |
| OpenTelemetry 통합 문서/샘플 | 공식 SDK 예제 존재 | Cloud Monitoring 연동 가이드 있음 | 제한적임 | 자체 개발 필요 |
| 권장 관측 태그 | model, billed_tokens, request_id | model, project_id, tokens_consumed | model_family, billed_tokens | prompt_hash, internal_cost_estimate |
| 예상 통합 난이도 | 낮음 | 보통 | 보통 | 높음 |
OpenTelemetry LLM 연동 구현 체크리스트 — 코드·수집·내보내기
구현 단계는 크게 1) SDK 계측 2) 스팬/메트릭 설계 3) 백엔드 수집 및 비용 변환 4) 알림·정책 적용으로 나뉜다. 다음은 실무용 단계별 체크리스트이다.
- SDK: 서버(예: Python/Node/Java)와 클라이언트 라이브러리에 OpenTelemetry 설치 및 기본 계측 활성화
- 스팬 설계: 각 LLM 요청에 root span 생성 → child span으로 벤더 호출·토큰계산·캐시검증 분리
- 메트릭 수집: billed_tokens, prompt_tokens, response_tokens, retry.count, latency.p99 등 수집
- 수집 파이프라인: Collector 설정( OTLP → Kafka/Prometheus/Backend ) 및 샘플링 정책 정의
- 비용 변환: 벤더별 토큰당 단가를 매핑해 billing.metric 계산 및 정기 검증 배치 구성
- 정합성 알림: 내부 계산과 벤더 집계 차이 발생 시 자동 티켓 생성
구현 예시(요약): 서버에서 LLM 호출 시
- root span 시작: attributes에 request_id, user_id
- LLM 호출 child span: attributes에 model, prompt_hash, estimated_prompt_tokens
- 응답 후 billing span: attributes에 billed_tokens(벤더헤더 우선), cost_estimate
- metric 수집: token.total.increment(billed_tokens), request.count.increment()
참고 공식 문서:
운영 시 주의해야 할 OpenTelemetry LLM 연동 오류 패턴
운영 중 자주 발생하는 문제와 대응 방법은 다음과 같다.
- 중복 계측(한 요청에 여러 SDK가 중복 스팬 생성) — span context 전파 규칙 검토 및 중복 필터 적용
- 샘플링으로 인한 비용 집계 왜곡 — 샘플링 적용 시 샘플 가중치 적용 로직을 결제 파이프라인에 반영
- 벤더 헤더 미수신 — 폴백 로직으로 내부 토큰 계산값을 기록하고, 추후 reconciliation 배치로 보정
- 프롬프트 민감정보 누출 — 프롬프트는 마스킹/해시 저장을 원칙으로 하고, 규정 준수를 위해 접근 제어 시행
💡 인공지능 인사이드 팁: OTLP 송신 중단 시 로컬에 이벤트 버퍼를 두고, 복구 시 백필(backfill)로 벤더 집계와 동기화하는 운영 정책을 권장한다.
전문가 제언: 조직별 맞춤형 OpenTelemetry LLM 연동 전략
인공지능 인사이트 에디토리얼 팀의 권고는 조직의 규모와 비용 민감도에 따라 다음 세 가지 전략 중 선택하도록 구성되어 있다.
- 스타트업·POC: 최소한의 스팬 + billed_tokens 우선 집계 → 단순 대시보드와 알림 중심
- 중견 조직: 프롬프트 템플릿 기반 비용 배분, 샘플링 가중치 보정, 월별 reconciliation 파이프라인
- 대기업: 멀티벤더 통합 레이어(미들웨어)로 모든 벤더 응답 표준화 → Chargeback 시스템과 비용 예측 엔진 연동
정책 제안 요약:
- 프롬프트 템플릿 ID 기반 과금 센터(cost center) 매핑
- 벤더별 토큰 단가 표준화 및 월별 조정 프로세스
- 재시도/캐시 정책을 과금 모델에 반영하여 누수 방지
마무리 체크포인트: 배포 전 필수 확인 항목
배포 전에 반드시 확인해야 할 항목은 다음과 같다.
- 스팬/메트릭 스키마가 문서화되어 있고, 모든 팀(프론트엔드·백엔드·데이터팀)이 동일한 규약을 사용
- 샘플링 정책과 비용 보정 방법이 결제·재무팀에 공유되어 승인됨
- 백필·동기화 프로세스가 장애 시에도 데이터 손실을 최소화하도록 설계됨
- 프롬프트 개인정보 마스킹 및 접근 로그가 보안 규정에 부합
추가 리소스 및 참고:







