Pemantauan
Pelajari cara mengaktifkan dan mengonfigurasi OpenTelemetry untuk Claude Code.
Claude Code mendukung metrik dan event OpenTelemetry (OTel) untuk pemantauan dan observabilitas.
Semua metrik adalah data time series yang diekspor melalui protokol metrik standar OpenTelemetry, dan event diekspor melalui protokol logs/events OpenTelemetry. Merupakan tanggung jawab pengguna untuk memastikan backend metrik dan logs mereka dikonfigurasi dengan benar dan granularitas agregasi memenuhi kebutuhan pemantauan mereka.
Dukungan OpenTelemetry saat ini dalam versi beta dan detail dapat berubah.
Mulai Cepat
Konfigurasikan OpenTelemetry menggunakan variabel lingkungan:
Interval ekspor default adalah 60 detik untuk metrik dan 5 detik untuk logs. Selama setup, Anda mungkin ingin menggunakan interval yang lebih pendek untuk tujuan debugging. Ingat untuk mengatur ulang ini untuk penggunaan produksi.
Untuk opsi konfigurasi lengkap, lihat spesifikasi OpenTelemetry.
Konfigurasi Administrator
Administrator dapat mengonfigurasi pengaturan OpenTelemetry untuk semua pengguna melalui file pengaturan terkelola. Ini memungkinkan kontrol terpusat pengaturan telemetri di seluruh organisasi. Lihat prioritas pengaturan untuk informasi lebih lanjut tentang bagaimana pengaturan diterapkan.
File pengaturan terkelola terletak di:
- macOS:
/Library/Application Support/ClaudeCode/managed-settings.json
- Linux:
/etc/claude-code/managed-settings.json
Contoh konfigurasi pengaturan terkelola:
Pengaturan terkelola dapat didistribusikan melalui MDM (Mobile Device Management) atau solusi manajemen perangkat lainnya. Variabel lingkungan yang didefinisikan dalam file pengaturan terkelola memiliki prioritas tinggi dan tidak dapat ditimpa oleh pengguna.
Detail Konfigurasi
Variabel Konfigurasi Umum
Variabel Lingkungan | Deskripsi | Contoh Nilai |
---|---|---|
CLAUDE_CODE_ENABLE_TELEMETRY | Mengaktifkan pengumpulan telemetri (diperlukan) | 1 |
OTEL_METRICS_EXPORTER | Jenis eksporter metrik (dipisahkan koma) | console , otlp , prometheus |
OTEL_LOGS_EXPORTER | Jenis eksporter logs/events (dipisahkan koma) | console , otlp |
OTEL_EXPORTER_OTLP_PROTOCOL | Protokol untuk eksporter OTLP (semua sinyal) | grpc , http/json , http/protobuf |
OTEL_EXPORTER_OTLP_ENDPOINT | Endpoint kolektor OTLP (semua sinyal) | http://localhost:4317 |
OTEL_EXPORTER_OTLP_METRICS_PROTOCOL | Protokol untuk metrik (menimpa umum) | grpc , http/json , http/protobuf |
OTEL_EXPORTER_OTLP_METRICS_ENDPOINT | Endpoint metrik OTLP (menimpa umum) | http://localhost:4318/v1/metrics |
OTEL_EXPORTER_OTLP_LOGS_PROTOCOL | Protokol untuk logs (menimpa umum) | grpc , http/json , http/protobuf |
OTEL_EXPORTER_OTLP_LOGS_ENDPOINT | Endpoint logs OTLP (menimpa umum) | http://localhost:4318/v1/logs |
OTEL_EXPORTER_OTLP_HEADERS | Header autentikasi untuk OTLP | Authorization=Bearer token |
OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY | Kunci klien untuk autentikasi mTLS | Path ke file kunci klien |
OTEL_EXPORTER_OTLP_METRICS_CLIENT_CERTIFICATE | Sertifikat klien untuk autentikasi mTLS | Path ke file sertifikat klien |
OTEL_METRIC_EXPORT_INTERVAL | Interval ekspor dalam milidetik (default: 60000) | 5000 , 60000 |
OTEL_LOGS_EXPORT_INTERVAL | Interval ekspor logs dalam milidetik (default: 5000) | 1000 , 10000 |
OTEL_LOG_USER_PROMPTS | Aktifkan logging konten prompt pengguna (default: dinonaktifkan) | 1 untuk mengaktifkan |
Kontrol Kardinalitas Metrik
Variabel lingkungan berikut mengontrol atribut mana yang disertakan dalam metrik untuk mengelola kardinalitas:
Variabel Lingkungan | Deskripsi | Nilai Default | Contoh untuk Menonaktifkan |
---|---|---|---|
OTEL_METRICS_INCLUDE_SESSION_ID | Sertakan atribut session.id dalam metrik | true | false |
OTEL_METRICS_INCLUDE_VERSION | Sertakan atribut app.version dalam metrik | false | true |
OTEL_METRICS_INCLUDE_ACCOUNT_UUID | Sertakan atribut user.account_uuid dalam metrik | true | false |
Variabel ini membantu mengontrol kardinalitas metrik, yang mempengaruhi kebutuhan penyimpanan dan performa query di backend metrik Anda. Kardinalitas yang lebih rendah umumnya berarti performa yang lebih baik dan biaya penyimpanan yang lebih rendah tetapi data yang kurang granular untuk analisis.
Dukungan Organisasi Multi-Tim
Organisasi dengan beberapa tim atau departemen dapat menambahkan atribut kustom untuk membedakan antara grup yang berbeda menggunakan variabel lingkungan OTEL_RESOURCE_ATTRIBUTES
:
Atribut kustom ini akan disertakan dalam semua metrik dan event, memungkinkan Anda untuk:
- Memfilter metrik berdasarkan tim atau departemen
- Melacak biaya per pusat biaya
- Membuat dashboard khusus tim
- Mengatur peringatan untuk tim tertentu
Contoh Konfigurasi
Metrik dan Event yang Tersedia
Atribut Standar
Semua metrik dan event berbagi atribut standar ini:
Atribut | Deskripsi | Dikontrol Oleh |
---|---|---|
session.id | Pengenal sesi unik | OTEL_METRICS_INCLUDE_SESSION_ID (default: true) |
app.version | Versi Claude Code saat ini | OTEL_METRICS_INCLUDE_VERSION (default: false) |
organization.id | UUID organisasi (saat diautentikasi) | Selalu disertakan saat tersedia |
user.account_uuid | UUID akun (saat diautentikasi) | OTEL_METRICS_INCLUDE_ACCOUNT_UUID (default: true) |
terminal.type | Jenis terminal (mis., iTerm.app , vscode , cursor , tmux ) | Selalu disertakan saat terdeteksi |
Metrik
Claude Code mengekspor metrik berikut:
Nama Metrik | Deskripsi | Unit |
---|---|---|
claude_code.session.count | Jumlah sesi CLI yang dimulai | count |
claude_code.lines_of_code.count | Jumlah baris kode yang dimodifikasi | count |
claude_code.pull_request.count | Jumlah pull request yang dibuat | count |
claude_code.commit.count | Jumlah commit git yang dibuat | count |
claude_code.cost.usage | Biaya sesi Claude Code | USD |
claude_code.token.usage | Jumlah token yang digunakan | tokens |
claude_code.code_edit_tool.decision | Jumlah keputusan izin alat pengeditan kode | count |
Detail Metrik
Penghitung Sesi
Bertambah di awal setiap sesi.
Atribut:
- Semua atribut standar
Penghitung Baris Kode
Bertambah saat kode ditambahkan atau dihapus.
Atribut:
- Semua atribut standar
type
: ("added"
,"removed"
)
Penghitung Pull Request
Bertambah saat membuat pull request melalui Claude Code.
Atribut:
- Semua atribut standar
Penghitung Commit
Bertambah saat membuat commit git melalui Claude Code.
Atribut:
- Semua atribut standar
Penghitung Biaya
Bertambah setelah setiap permintaan API.
Atribut:
- Semua atribut standar
model
: Pengenal model (mis., “claude-3-5-sonnet-20241022”)
Penghitung Token
Bertambah setelah setiap permintaan API.
Atribut:
- Semua atribut standar
type
: ("input"
,"output"
,"cacheRead"
,"cacheCreation"
)model
: Pengenal model (mis., “claude-3-5-sonnet-20241022”)
Penghitung Keputusan Alat Pengeditan Kode
Bertambah saat pengguna menerima atau menolak penggunaan alat Edit, MultiEdit, Write, atau NotebookEdit.
Atribut:
- Semua atribut standar
tool
: Nama alat ("Edit"
,"MultiEdit"
,"Write"
,"NotebookEdit"
)decision
: Keputusan pengguna ("accept"
,"reject"
)language
: Bahasa pemrograman file yang diedit (mis.,"TypeScript"
,"Python"
,"JavaScript"
,"Markdown"
). Mengembalikan"unknown"
untuk ekstensi file yang tidak dikenali.
Event
Claude Code mengekspor event berikut melalui protokol logs/events OpenTelemetry (saat OTEL_LOGS_EXPORTER
dikonfigurasi):
Event Prompt Pengguna
Dicatat saat pengguna mengirimkan prompt.
Nama Event: claude_code.user_prompt
Atribut:
- Semua atribut standar
event.name
:"user_prompt"
event.timestamp
: Timestamp ISO 8601prompt_length
: Panjang promptprompt
: Konten prompt (disensor secara default, aktifkan denganOTEL_LOG_USER_PROMPTS=1
)
Event Hasil Alat
Dicatat saat alat menyelesaikan eksekusi.
Nama Event: claude_code.tool_result
Atribut:
- Semua atribut standar
event.name
:"tool_result"
event.timestamp
: Timestamp ISO 8601name
: Nama alatsuccess
:"true"
atau"false"
duration_ms
: Waktu eksekusi dalam milidetikerror
: Pesan error (jika gagal)
Event Permintaan API
Dicatat untuk setiap permintaan API ke Claude.
Nama Event: claude_code.api_request
Atribut:
- Semua atribut standar
event.name
:"api_request"
event.timestamp
: Timestamp ISO 8601model
: Model yang digunakan (mis., “claude-3-5-sonnet-20241022”)cost_usd
: Perkiraan biaya dalam USDduration_ms
: Durasi permintaan dalam milidetikinput_tokens
: Jumlah token inputoutput_tokens
: Jumlah token outputcache_read_tokens
: Jumlah token yang dibaca dari cachecache_creation_tokens
: Jumlah token yang digunakan untuk pembuatan cache
Event Error API
Dicatat saat permintaan API ke Claude gagal.
Nama Event: claude_code.api_error
Atribut:
- Semua atribut standar
event.name
:"api_error"
event.timestamp
: Timestamp ISO 8601model
: Model yang digunakan (mis., “claude-3-5-sonnet-20241022”)error
: Pesan errorstatus_code
: Kode status HTTP (jika berlaku)duration_ms
: Durasi permintaan dalam milidetikattempt
: Nomor percobaan (untuk permintaan yang dicoba ulang)
Event Keputusan Alat
Dicatat saat keputusan izin alat dibuat (terima/tolak).
Nama Event: claude_code.tool_decision
Atribut:
- Semua atribut standar
event.name
:"tool_decision"
event.timestamp
: Timestamp ISO 8601tool_name
: Nama alat (mis., “Read”, “Edit”, “MultiEdit”, “Write”, “NotebookEdit”, dll.)decision
: Baik"accept"
atau"reject"
source
: Sumber keputusan -"config"
,"user_permanent"
,"user_temporary"
,"user_abort"
, atau"user_reject"
Menafsirkan Data Metrik dan Event
Metrik yang diekspor oleh Claude Code memberikan wawasan berharga tentang pola penggunaan dan produktivitas. Berikut adalah beberapa visualisasi dan analisis umum yang dapat Anda buat:
Pemantauan Penggunaan
Metrik | Peluang Analisis |
---|---|
claude_code.token.usage | Uraikan berdasarkan type (input/output), pengguna, tim, atau model |
claude_code.session.count | Lacak adopsi dan keterlibatan dari waktu ke waktu |
claude_code.lines_of_code.count | Ukur produktivitas dengan melacak penambahan/penghapusan kode |
claude_code.commit.count & claude_code.pull_request.count | Pahami dampak pada alur kerja pengembangan |
Pemantauan Biaya
Metrik claude_code.cost.usage
membantu dengan:
- Melacak tren penggunaan di seluruh tim atau individu
- Mengidentifikasi sesi penggunaan tinggi untuk optimisasi
Metrik biaya adalah perkiraan. Untuk data penagihan resmi, rujuk ke penyedia API Anda (Anthropic Console, AWS Bedrock, atau Google Cloud Vertex).
Peringatan dan Segmentasi
Peringatan umum yang perlu dipertimbangkan:
- Lonjakan biaya
- Konsumsi token yang tidak biasa
- Volume sesi tinggi dari pengguna tertentu
Semua metrik dapat disegmentasi berdasarkan user.account_uuid
, organization.id
, session.id
, model
, dan app.version
.
Analisis Event
Data event memberikan wawasan detail tentang interaksi Claude Code:
Pola Penggunaan Alat: Analisis event hasil alat untuk mengidentifikasi:
- Alat yang paling sering digunakan
- Tingkat keberhasilan alat
- Waktu eksekusi alat rata-rata
- Pola error berdasarkan jenis alat
Pemantauan Performa: Lacak durasi permintaan API dan waktu eksekusi alat untuk mengidentifikasi bottleneck performa.
Pertimbangan Backend
Pilihan backend metrik dan logs Anda akan menentukan jenis analisis yang dapat Anda lakukan:
Untuk Metrik:
- Database time series (mis., Prometheus): Perhitungan rate, metrik teragregasi
- Columnar stores (mis., ClickHouse): Query kompleks, analisis pengguna unik
- Platform observabilitas lengkap (mis., Honeycomb, Datadog): Query lanjutan, visualisasi, peringatan
Untuk Events/Logs:
- Sistem agregasi log (mis., Elasticsearch, Loki): Pencarian teks lengkap, analisis log
- Columnar stores (mis., ClickHouse): Analisis event terstruktur
- Platform observabilitas lengkap (mis., Honeycomb, Datadog): Korelasi antara metrik dan event
Untuk organisasi yang memerlukan metrik Daily/Weekly/Monthly Active User (DAU/WAU/MAU), pertimbangkan backend yang mendukung query nilai unik yang efisien.
Informasi Layanan
Semua metrik diekspor dengan:
- Nama Layanan:
claude-code
- Versi Layanan: Versi Claude Code saat ini
- Nama Meter:
com.anthropic.claude_code
Pertimbangan Keamanan/Privasi
- Telemetri adalah opt-in dan memerlukan konfigurasi eksplisit -Informasi sensitif seperti kunci API atau konten file tidak pernah disertakan dalam metrik atau event
- Konten prompt pengguna disensor secara default - hanya panjang prompt yang dicatat. Untuk mengaktifkan logging prompt pengguna, atur
OTEL_LOG_USER_PROMPTS=1