Logo
본문으로 이동
중급8분 소요monitoringusageanalytics

OpenTelemetry(OTel)를 통해 Claude Code의 사용량, 비용, 도구 활동을 시계열 데이터로 내보내고 조직 전체의 사용 현황을 체계적으로 모니터링할 수 있습니다.

빠른 시작

환경 변수를 사용하여 OpenTelemetry를 구성합니다.

# 1. 텔레메트리 활성화
export CLAUDE_CODE_ENABLE_TELEMETRY=1

# 2. 내보내기 대상 선택 (필요한 것만 구성)
export OTEL_METRICS_EXPORTER=otlp       # 옵션: otlp, prometheus, console
export OTEL_LOGS_EXPORTER=otlp          # 옵션: otlp, console

# 3. OTLP 엔드포인트 구성 (OTLP 내보내기 사용 시)
export OTEL_EXPORTER_OTLP_PROTOCOL=grpc
export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317

# 4. 인증 설정 (필요한 경우)
export OTEL_EXPORTER_OTLP_HEADERS="Authorization=Bearer your-token"

# 5. 디버깅용 내보내기 간격 단축 (기본값: 60초)
export OTEL_METRIC_EXPORT_INTERVAL=10000  # 10초

# 6. Claude Code 실행
claude

참고: 기본 내보내기 간격은 메트릭 60초, 로그 5초입니다. 설정 중에는 짧은 간격을 사용하되, 프로덕션에서는 기본값으로 되돌리세요.

관리자 구성

관리자는 관리 설정 파일을 통해 모든 사용자에 대한 OpenTelemetry 설정을 중앙에서 구성할 수 있습니다. 이를 통해 조직 전체의 텔레메트리 설정을 일관되게 관리할 수 있습니다.

{
  "env": {
    "CLAUDE_CODE_ENABLE_TELEMETRY": "1",
    "OTEL_METRICS_EXPORTER": "otlp",
    "OTEL_LOGS_EXPORTER": "otlp",
    "OTEL_EXPORTER_OTLP_PROTOCOL": "grpc",
    "OTEL_EXPORTER_OTLP_ENDPOINT": "http://collector.example.com:4317",
    "OTEL_EXPORTER_OTLP_HEADERS": "Authorization=Bearer example-token"
  }
}

참고: 관리 설정에 정의된 환경 변수는 높은 우선순위를 가지며 사용자가 재정의할 수 없습니다.

주요 구성 변수

환경 변수 설명 예시 값
CLAUDE_CODE_ENABLE_TELEMETRY 텔레메트리 수집 활성화 (필수) 1
OTEL_METRICS_EXPORTER 메트릭 내보내기 유형 console, otlp, prometheus
OTEL_LOGS_EXPORTER 로그/이벤트 내보내기 유형 console, otlp
OTEL_EXPORTER_OTLP_PROTOCOL OTLP 내보내기 프로토콜 grpc, http/json, http/protobuf
OTEL_EXPORTER_OTLP_ENDPOINT OTLP 수집기 엔드포인트 http://localhost:4317
OTEL_EXPORTER_OTLP_HEADERS OTLP 인증 헤더 Authorization=Bearer token
OTEL_METRIC_EXPORT_INTERVAL 메트릭 내보내기 간격 (밀리초, 기본값: 60000) 5000, 60000
OTEL_LOGS_EXPORT_INTERVAL 로그 내보내기 간격 (밀리초, 기본값: 5000) 1000, 10000
OTEL_LOG_USER_PROMPTS 사용자 프롬프트 내용 로깅 활성화 (기본값: 비활성화) 1
OTEL_LOG_TOOL_DETAILS MCP 서버/도구 이름 로깅 활성화 1

메트릭 카디널리티 제어

다음 환경 변수로 메트릭에 포함되는 속성을 제어하여 카디널리티를 관리할 수 있습니다.

환경 변수 설명 기본값
OTEL_METRICS_INCLUDE_SESSION_ID 메트릭에 session.id 포함 true
OTEL_METRICS_INCLUDE_VERSION 메트릭에 app.version 포함 false
OTEL_METRICS_INCLUDE_ACCOUNT_UUID 메트릭에 user.account_uuid 포함 true

낮은 카디널리티는 일반적으로 더 나은 성능과 낮은 스토리지 비용을 의미하지만, 분석 데이터의 세밀함이 감소합니다.

다중 팀 조직 지원

여러 팀이나 부서가 있는 조직은 OTEL_RESOURCE_ATTRIBUTES를 사용하여 그룹을 구분하는 사용자 정의 속성을 추가할 수 있습니다.

export OTEL_RESOURCE_ATTRIBUTES="department=engineering,team.id=platform,cost_center=eng-123"

이 사용자 정의 속성을 통해 다음이 가능합니다.

  • 팀 또는 부서별 메트릭 필터링
  • 비용 센터별 비용 추적
  • 팀별 대시보드 생성
  • 특정 팀에 대한 알림 설정

중요: OTEL_RESOURCE_ATTRIBUTES는 공백을 포함할 수 없습니다. 공백 대신 언더스코어 또는 camelCase를 사용하세요.

사용 가능한 메트릭

Claude Code는 다음 메트릭을 내보냅니다.

메트릭 이름 설명 단위
claude_code.session.count 시작된 CLI 세션 수 count
claude_code.lines_of_code.count 수정된 코드 줄 수 count
claude_code.pull_request.count 생성된 풀 요청 수 count
claude_code.commit.count 생성된 git 커밋 수 count
claude_code.cost.usage Claude Code 세션 비용 USD
claude_code.token.usage 사용된 토큰 수 tokens
claude_code.code_edit_tool.decision 코드 편집 도구 권한 결정 수 count
claude_code.active_time.total 총 활성 사용 시간

모든 메트릭의 표준 속성

속성 설명
session.id 고유 세션 식별자
app.version 현재 Claude Code 버전
organization.id 조직 UUID (인증된 경우)
user.account_uuid 계정 UUID (인증된 경우)
user.id 익명 기기/설치 식별자
user.email 사용자 이메일 (OAuth 인증 시)
terminal.type 터미널 유형

이벤트 유형

OTEL_LOGS_EXPORTER가 구성된 경우 Claude Code는 OpenTelemetry 로그/이벤트를 통해 다음 이벤트를 내보냅니다.

이벤트 상관 관계

사용자가 프롬프트를 제출하면 Claude Code가 여러 API 호출과 도구를 실행할 수 있습니다. prompt.id 속성을 사용하면 단일 프롬프트에서 생성된 모든 이벤트를 추적할 수 있습니다.

주요 이벤트

이벤트 트리거
claude_code.user_prompt 사용자가 프롬프트를 제출할 때
claude_code.tool_result 도구 실행이 완료될 때
claude_code.api_request Claude에 대한 각 API 요청 시
claude_code.api_error API 요청이 실패할 때
claude_code.tool_decision 도구 권한 결정(승인/거부) 시

메트릭 및 이벤트 데이터 해석

사용량 모니터링

메트릭 분석 기회
claude_code.token.usage 유형(입력/출력), 사용자, 팀, 모델별 분류
claude_code.session.count 시간에 따른 채택 및 참여도 추적
claude_code.lines_of_code.count 코드 추가/제거로 생산성 측정
claude_code.commit.count & claude_code.pull_request.count 개발 워크플로우에 미치는 영향 파악

비용 모니터링

claude_code.cost.usage 메트릭으로 다음이 가능합니다.

  • 팀 또는 개인별 사용량 추세 추적
  • 최적화를 위한 고사용 세션 식별

참고: 비용 메트릭은 근사치입니다. 공식 청구 데이터는 API 제공자(Claude Console, AWS Bedrock, Google Cloud Vertex)를 참조하세요.

백엔드 선택 가이드

메트릭용:

  • 시계열 데이터베이스 (Prometheus): 속도 계산, 집계 메트릭
  • 열 지향 스토어 (ClickHouse): 복잡한 쿼리, 고유 사용자 분석
  • 풀 기능 관찰 플랫폼 (Honeycomb, Datadog): 고급 쿼리, 시각화, 알림

이벤트/로그용:

  • 로그 집계 시스템 (Elasticsearch, Loki): 전체 텍스트 검색
  • 열 지향 스토어 (ClickHouse): 구조화된 이벤트 분석
  • 풀 기능 관찰 플랫폼 (Honeycomb, Datadog): 메트릭과 이벤트 간 상관 관계

동적 헤더 구성

엔터프라이즈 환경에서 동적 인증이 필요한 경우 스크립트를 구성하여 헤더를 동적으로 생성할 수 있습니다.

.claude/settings.json에 추가:

{
  "otelHeadersHelper": "/bin/generate_opentelemetry_headers.sh"
}

스크립트는 HTTP 헤더를 나타내는 문자열 키-값 쌍의 유효한 JSON을 출력해야 합니다.

#!/bin/bash
echo "{\"Authorization\": \"Bearer $(get-token.sh)\", \"X-API-Key\": \"$(get-api-key.sh)\"}"

헤더 갱신 간격을 CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS로 제어할 수 있습니다. 기본값은 29분입니다.

보안 및 개인정보

  • 텔레메트리는 옵트인 방식으로 명시적인 구성이 필요합니다
  • 원시 파일 내용 및 코드 스니펫은 메트릭이나 이벤트에 포함되지 않습니다
  • 도구 실행 이벤트의 tool_parameters 필드에는 bash 명령어와 파일 경로가 포함될 수 있습니다. 명령어에 시크릿이 포함될 수 있다면 tool_parameters를 필터링하거나 수정하도록 텔레메트리 백엔드를 구성하세요
  • OAuth로 인증 시 user.email이 텔레메트리 속성에 포함됩니다. 우려되는 경우 텔레메트리 백엔드에서 이 필드를 필터링하세요
  • 사용자 프롬프트 내용은 기본적으로 수집되지 않습니다 (길이만 기록)
  • MCP 서버/도구 이름과 스킬 이름은 기본적으로 기록되지 않습니다

ROI 측정 리소스

Claude Code의 투자 대비 효과 측정에 대한 종합 가이드는 Claude Code ROI 측정 가이드를 참조하세요. 이 저장소는 Docker Compose 구성, Prometheus 및 OpenTelemetry 설정, Linear와 통합된 생산성 보고서 템플릿을 제공합니다.

다음 단계

  • 분석 대시보드: claude.ai 또는 Console에서 팀 사용량 시각화를 확인합니다
  • 비용 관리: 지출 한도 설정 및 토큰 사용량 최적화 방법을 알아봅니다
  • 서버 관리 설정: 관리 설정을 통해 중앙에서 텔레메트리를 구성합니다
  • Amazon Bedrock 모니터링: Bedrock 사용자를 위한 상세 모니터링 가이드를 확인합니다

관련 가이드

사용량 모니터링 | Claude Code 가이드 | GodDaeHee | GodDaeHee