모니터링
Claude Code에서 OpenTelemetry를 활성화하고 구성하는 방법을 알아보세요.
Claude Code는 모니터링과 관찰 가능성을 위해 OpenTelemetry (OTel) 메트릭과 이벤트를 지원합니다.
모든 메트릭은 OpenTelemetry의 표준 메트릭 프로토콜을 통해 내보내지는 시계열 데이터이며, 이벤트는 OpenTelemetry의 로그/이벤트 프로토콜을 통해 내보내집니다. 메트릭과 로그 백엔드가 적절히 구성되고 집계 세분성이 모니터링 요구사항을 충족하는지 확인하는 것은 사용자의 책임입니다.
OpenTelemetry 지원은 현재 베타 버전이며 세부사항은 변경될 수 있습니다.
빠른 시작
환경 변수를 사용하여 OpenTelemetry를 구성하세요:
기본 내보내기 간격은 메트릭의 경우 60초, 로그의 경우 5초입니다. 설정 중에는 디버깅 목적으로 더 짧은 간격을 사용할 수 있습니다. 프로덕션 사용 시에는 이를 재설정하는 것을 잊지 마세요.
전체 구성 옵션은 OpenTelemetry 사양을 참조하세요.
관리자 구성
관리자는 관리 설정 파일을 통해 모든 사용자를 위한 OpenTelemetry 설정을 구성할 수 있습니다. 이를 통해 조직 전체의 텔레메트리 설정을 중앙에서 제어할 수 있습니다. 설정이 어떻게 적용되는지에 대한 자세한 정보는 설정 우선순위를 참조하세요.
관리 설정 파일의 위치:
- macOS:
/Library/Application Support/ClaudeCode/managed-settings.json
- Linux:
/etc/claude-code/managed-settings.json
관리 설정 구성 예시:
관리 설정은 MDM(모바일 장치 관리) 또는 기타 장치 관리 솔루션을 통해 배포할 수 있습니다. 관리 설정 파일에 정의된 환경 변수는 높은 우선순위를 가지며 사용자가 재정의할 수 없습니다.
구성 세부사항
공통 구성 변수
환경 변수 | 설명 | 예시 값 |
---|---|---|
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_METRICS_PROTOCOL | 메트릭 프로토콜 (일반 설정 재정의) | grpc , http/json , http/protobuf |
OTEL_EXPORTER_OTLP_METRICS_ENDPOINT | OTLP 메트릭 엔드포인트 (일반 설정 재정의) | http://localhost:4318/v1/metrics |
OTEL_EXPORTER_OTLP_LOGS_PROTOCOL | 로그 프로토콜 (일반 설정 재정의) | grpc , http/json , http/protobuf |
OTEL_EXPORTER_OTLP_LOGS_ENDPOINT | OTLP 로그 엔드포인트 (일반 설정 재정의) | http://localhost:4318/v1/logs |
OTEL_EXPORTER_OTLP_HEADERS | OTLP 인증 헤더 | Authorization=Bearer token |
OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY | mTLS 인증용 클라이언트 키 | 클라이언트 키 파일 경로 |
OTEL_EXPORTER_OTLP_METRICS_CLIENT_CERTIFICATE | mTLS 인증용 클라이언트 인증서 | 클라이언트 인증서 파일 경로 |
OTEL_METRIC_EXPORT_INTERVAL | 밀리초 단위 내보내기 간격 (기본값: 60000) | 5000 , 60000 |
OTEL_LOGS_EXPORT_INTERVAL | 밀리초 단위 로그 내보내기 간격 (기본값: 5000) | 1000 , 10000 |
OTEL_LOG_USER_PROMPTS | 사용자 프롬프트 내용 로깅 활성화 (기본값: 비활성화) | 활성화하려면 1 |
메트릭 카디널리티 제어
다음 환경 변수는 카디널리티를 관리하기 위해 메트릭에 포함되는 속성을 제어합니다:
환경 변수 | 설명 | 기본값 | 비활성화 예시 |
---|---|---|---|
OTEL_METRICS_INCLUDE_SESSION_ID | 메트릭에 session.id 속성 포함 | true | false |
OTEL_METRICS_INCLUDE_VERSION | 메트릭에 app.version 속성 포함 | false | true |
OTEL_METRICS_INCLUDE_ACCOUNT_UUID | 메트릭에 user.account_uuid 속성 포함 | true | false |
이러한 변수는 메트릭의 카디널리티를 제어하는 데 도움이 되며, 이는 메트릭 백엔드의 저장 요구사항과 쿼리 성능에 영향을 미칩니다. 일반적으로 낮은 카디널리티는 더 나은 성능과 낮은 저장 비용을 의미하지만 분석을 위한 세분화된 데이터는 줄어듭니다.
다중 팀 조직 지원
여러 팀이나 부서가 있는 조직은 OTEL_RESOURCE_ATTRIBUTES
환경 변수를 사용하여 서로 다른 그룹을 구분하는 사용자 정의 속성을 추가할 수 있습니다:
이러한 사용자 정의 속성은 모든 메트릭과 이벤트에 포함되어 다음을 가능하게 합니다:
- 팀이나 부서별로 메트릭 필터링
- 비용 센터별 비용 추적
- 팀별 대시보드 생성
- 특정 팀에 대한 알림 설정
구성 예시
사용 가능한 메트릭과 이벤트
표준 속성
모든 메트릭과 이벤트는 다음 표준 속성을 공유합니다:
속성 | 설명 | 제어 변수 |
---|---|---|
session.id | 고유 세션 식별자 | OTEL_METRICS_INCLUDE_SESSION_ID (기본값: true) |
app.version | 현재 Claude Code 버전 | OTEL_METRICS_INCLUDE_VERSION (기본값: false) |
organization.id | 조직 UUID (인증된 경우) | 사용 가능할 때 항상 포함 |
user.account_uuid | 계정 UUID (인증된 경우) | OTEL_METRICS_INCLUDE_ACCOUNT_UUID (기본값: true) |
terminal.type | 터미널 유형 (예: iTerm.app , vscode , cursor , tmux ) | 감지될 때 항상 포함 |
메트릭
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 |
메트릭 세부사항
세션 카운터
각 세션 시작 시 증가합니다.
속성:
- 모든 표준 속성
코드 라인 카운터
코드가 추가되거나 제거될 때 증가합니다.
속성:
- 모든 표준 속성
type
: ("added"
,"removed"
)
풀 리퀘스트 카운터
Claude Code를 통해 풀 리퀘스트를 생성할 때 증가합니다.
속성:
- 모든 표준 속성
커밋 카운터
Claude Code를 통해 git 커밋을 생성할 때 증가합니다.
속성:
- 모든 표준 속성
비용 카운터
각 API 요청 후 증가합니다.
속성:
- 모든 표준 속성
model
: 모델 식별자 (예: “claude-3-5-sonnet-20241022”)
토큰 카운터
각 API 요청 후 증가합니다.
속성:
- 모든 표준 속성
type
: ("input"
,"output"
,"cacheRead"
,"cacheCreation"
)model
: 모델 식별자 (예: “claude-3-5-sonnet-20241022”)
코드 편집 도구 결정 카운터
사용자가 Edit, MultiEdit, Write, 또는 NotebookEdit 도구 사용을 승인하거나 거부할 때 증가합니다.
속성:
- 모든 표준 속성
tool
: 도구 이름 ("Edit"
,"MultiEdit"
,"Write"
,"NotebookEdit"
)decision
: 사용자 결정 ("accept"
,"reject"
)language
: 편집된 파일의 프로그래밍 언어 (예:"TypeScript"
,"Python"
,"JavaScript"
,"Markdown"
). 인식되지 않는 파일 확장자의 경우"unknown"
을 반환합니다.
이벤트
Claude Code는 OpenTelemetry 로그/이벤트를 통해 다음 이벤트를 내보냅니다 (OTEL_LOGS_EXPORTER
가 구성된 경우):
사용자 프롬프트 이벤트
사용자가 프롬프트를 제출할 때 로깅됩니다.
이벤트 이름: claude_code.user_prompt
속성:
- 모든 표준 속성
event.name
:"user_prompt"
event.timestamp
: ISO 8601 타임스탬프prompt_length
: 프롬프트 길이prompt
: 프롬프트 내용 (기본적으로 편집됨,OTEL_LOG_USER_PROMPTS=1
로 활성화)
도구 결과 이벤트
도구가 실행을 완료할 때 로깅됩니다.
이벤트 이름: claude_code.tool_result
속성:
- 모든 표준 속성
event.name
:"tool_result"
event.timestamp
: ISO 8601 타임스탬프name
: 도구 이름success
:"true"
또는"false"
duration_ms
: 밀리초 단위 실행 시간error
: 오류 메시지 (실패한 경우)
API 요청 이벤트
Claude에 대한 각 API 요청에 대해 로깅됩니다.
이벤트 이름: claude_code.api_request
속성:
- 모든 표준 속성
event.name
:"api_request"
event.timestamp
: ISO 8601 타임스탬프model
: 사용된 모델 (예: “claude-3-5-sonnet-20241022”)cost_usd
: USD 단위 예상 비용duration_ms
: 밀리초 단위 요청 지속 시간input_tokens
: 입력 토큰 수output_tokens
: 출력 토큰 수cache_read_tokens
: 캐시에서 읽은 토큰 수cache_creation_tokens
: 캐시 생성에 사용된 토큰 수
API 오류 이벤트
Claude에 대한 API 요청이 실패할 때 로깅됩니다.
이벤트 이름: claude_code.api_error
속성:
- 모든 표준 속성
event.name
:"api_error"
event.timestamp
: ISO 8601 타임스탬프model
: 사용된 모델 (예: “claude-3-5-sonnet-20241022”)error
: 오류 메시지status_code
: HTTP 상태 코드 (해당하는 경우)duration_ms
: 밀리초 단위 요청 지속 시간attempt
: 시도 번호 (재시도된 요청의 경우)
도구 결정 이벤트
도구 권한 결정(승인/거부)이 내려질 때 로깅됩니다.
이벤트 이름: claude_code.tool_decision
속성:
- 모든 표준 속성
event.name
:"tool_decision"
event.timestamp
: ISO 8601 타임스탬프tool_name
: 도구 이름 (예: “Read”, “Edit”, “MultiEdit”, “Write”, “NotebookEdit” 등)decision
:"accept"
또는"reject"
source
: 결정 소스 -"config"
,"user_permanent"
,"user_temporary"
,"user_abort"
, 또는"user_reject"
메트릭과 이벤트 데이터 해석
Claude Code에서 내보내는 메트릭은 사용 패턴과 생산성에 대한 귀중한 통찰을 제공합니다. 다음은 생성할 수 있는 일반적인 시각화와 분석입니다:
사용량 모니터링
메트릭 | 분석 기회 |
---|---|
claude_code.token.usage | type (입력/출력), 사용자, 팀 또는 모델별로 분류 |
claude_code.session.count | 시간에 따른 채택률과 참여도 추적 |
claude_code.lines_of_code.count | 코드 추가/제거를 추적하여 생산성 측정 |
claude_code.commit.count & claude_code.pull_request.count | 개발 워크플로에 미치는 영향 이해 |
비용 모니터링
claude_code.cost.usage
메트릭은 다음에 도움이 됩니다:
- 팀이나 개인별 사용 추세 추적
- 최적화를 위한 고사용량 세션 식별
비용 메트릭은 근사치입니다. 공식 청구 데이터는 API 제공업체(Anthropic Console, AWS Bedrock 또는 Google Cloud Vertex)를 참조하세요.
알림 및 세분화
고려할 일반적인 알림:
- 비용 급증
- 비정상적인 토큰 소비
- 특정 사용자의 높은 세션 볼륨
모든 메트릭은 user.account_uuid
, organization.id
, session.id
, model
, app.version
으로 세분화할 수 있습니다.
이벤트 분석
이벤트 데이터는 Claude Code 상호작용에 대한 상세한 통찰을 제공합니다:
도구 사용 패턴: 도구 결과 이벤트를 분석하여 다음을 식별:
- 가장 자주 사용되는 도구
- 도구 성공률
- 평균 도구 실행 시간
- 도구 유형별 오류 패턴
성능 모니터링: API 요청 지속 시간과 도구 실행 시간을 추적하여 성능 병목 지점을 식별합니다.
백엔드 고려사항
메트릭과 로그 백엔드 선택에 따라 수행할 수 있는 분석 유형이 결정됩니다:
메트릭의 경우:
- 시계열 데이터베이스 (예: Prometheus): 비율 계산, 집계된 메트릭
- 컬럼형 저장소 (예: ClickHouse): 복잡한 쿼리, 고유 사용자 분석
- 완전한 기능의 관찰 가능성 플랫폼 (예: Honeycomb, Datadog): 고급 쿼리, 시각화, 알림
이벤트/로그의 경우:
- 로그 집계 시스템 (예: Elasticsearch, Loki): 전문 검색, 로그 분석
- 컬럼형 저장소 (예: ClickHouse): 구조화된 이벤트 분석
- 완전한 기능의 관찰 가능성 플랫폼 (예: Honeycomb, Datadog): 메트릭과 이벤트 간의 상관관계
일일/주간/월간 활성 사용자(DAU/WAU/MAU) 메트릭이 필요한 조직의 경우, 효율적인 고유 값 쿼리를 지원하는 백엔드를 고려하세요.
서비스 정보
모든 메트릭은 다음과 함께 내보내집니다:
- 서비스 이름:
claude-code
- 서비스 버전: 현재 Claude Code 버전
- 미터 이름:
com.anthropic.claude_code
보안/개인정보 고려사항
- 텔레메트리는 옵트인이며 명시적인 구성이 필요합니다
- API 키나 파일 내용과 같은 민감한 정보는 메트릭이나 이벤트에 포함되지 않습니다
- 사용자 프롬프트 내용은 기본적으로 편집됩니다 - 프롬프트 길이만 기록됩니다. 사용자 프롬프트 로깅을 활성화하려면
OTEL_LOG_USER_PROMPTS=1
을 설정하세요