Monitoraggio
Scopri come abilitare e configurare OpenTelemetry per Claude Code.
Claude Code supporta le metriche e gli eventi OpenTelemetry (OTel) per il monitoraggio e l’osservabilità.
Tutte le metriche sono dati di serie temporali esportati tramite il protocollo di metriche standard di OpenTelemetry, e gli eventi sono esportati tramite il protocollo logs/eventi di OpenTelemetry. È responsabilità dell’utente assicurarsi che i loro backend di metriche e log siano configurati correttamente e che la granularità di aggregazione soddisfi i loro requisiti di monitoraggio.
Il supporto OpenTelemetry è attualmente in beta e i dettagli sono soggetti a modifiche.
Avvio Rapido
Configura OpenTelemetry utilizzando le variabili d’ambiente:
Gli intervalli di esportazione predefiniti sono 60 secondi per le metriche e 5 secondi per i log. Durante la configurazione, potresti voler utilizzare intervalli più brevi per scopi di debug. Ricorda di reimpostare questi valori per l’uso in produzione.
Per le opzioni di configurazione complete, consulta la specifica OpenTelemetry.
Configurazione Amministratore
Gli amministratori possono configurare le impostazioni OpenTelemetry per tutti gli utenti tramite il file delle impostazioni gestite. Questo consente il controllo centralizzato delle impostazioni di telemetria in un’organizzazione. Consulta la precedenza delle impostazioni per maggiori informazioni su come vengono applicate le impostazioni.
Il file delle impostazioni gestite si trova in:
- macOS:
/Library/Application Support/ClaudeCode/managed-settings.json
- Linux:
/etc/claude-code/managed-settings.json
Esempio di configurazione delle impostazioni gestite:
Le impostazioni gestite possono essere distribuite tramite MDM (Mobile Device Management) o altre soluzioni di gestione dei dispositivi. Le variabili d’ambiente definite nel file delle impostazioni gestite hanno alta precedenza e non possono essere sovrascritte dagli utenti.
Dettagli di Configurazione
Variabili di Configurazione Comuni
Variabile d’Ambiente | Descrizione | Valori di Esempio |
---|---|---|
CLAUDE_CODE_ENABLE_TELEMETRY | Abilita la raccolta di telemetria (richiesto) | 1 |
OTEL_METRICS_EXPORTER | Tipo/i di esportatore metriche (separati da virgola) | console , otlp , prometheus |
OTEL_LOGS_EXPORTER | Tipo/i di esportatore log/eventi (separati da virgola) | console , otlp |
OTEL_EXPORTER_OTLP_PROTOCOL | Protocollo per l’esportatore OTLP (tutti i segnali) | grpc , http/json , http/protobuf |
OTEL_EXPORTER_OTLP_ENDPOINT | Endpoint del collector OTLP (tutti i segnali) | http://localhost:4317 |
OTEL_EXPORTER_OTLP_METRICS_PROTOCOL | Protocollo per le metriche (sovrascrive quello generale) | grpc , http/json , http/protobuf |
OTEL_EXPORTER_OTLP_METRICS_ENDPOINT | Endpoint metriche OTLP (sovrascrive quello generale) | http://localhost:4318/v1/metrics |
OTEL_EXPORTER_OTLP_LOGS_PROTOCOL | Protocollo per i log (sovrascrive quello generale) | grpc , http/json , http/protobuf |
OTEL_EXPORTER_OTLP_LOGS_ENDPOINT | Endpoint log OTLP (sovrascrive quello generale) | http://localhost:4318/v1/logs |
OTEL_EXPORTER_OTLP_HEADERS | Header di autenticazione per OTLP | Authorization=Bearer token |
OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY | Chiave client per l’autenticazione mTLS | Percorso al file della chiave client |
OTEL_EXPORTER_OTLP_METRICS_CLIENT_CERTIFICATE | Certificato client per l’autenticazione mTLS | Percorso al file del certificato client |
OTEL_METRIC_EXPORT_INTERVAL | Intervallo di esportazione in millisecondi (predefinito: 60000) | 5000 , 60000 |
OTEL_LOGS_EXPORT_INTERVAL | Intervallo di esportazione log in millisecondi (predefinito: 5000) | 1000 , 10000 |
OTEL_LOG_USER_PROMPTS | Abilita il logging del contenuto dei prompt utente (predefinito: disabilitato) | 1 per abilitare |
Controllo della Cardinalità delle Metriche
Le seguenti variabili d’ambiente controllano quali attributi sono inclusi nelle metriche per gestire la cardinalità:
Variabile d’Ambiente | Descrizione | Valore Predefinito | Esempio per Disabilitare |
---|---|---|---|
OTEL_METRICS_INCLUDE_SESSION_ID | Includi l’attributo session.id nelle metriche | true | false |
OTEL_METRICS_INCLUDE_VERSION | Includi l’attributo app.version nelle metriche | false | true |
OTEL_METRICS_INCLUDE_ACCOUNT_UUID | Includi l’attributo user.account_uuid nelle metriche | true | false |
Queste variabili aiutano a controllare la cardinalità delle metriche, che influisce sui requisiti di archiviazione e sulle prestazioni delle query nel tuo backend di metriche. Una cardinalità più bassa generalmente significa prestazioni migliori e costi di archiviazione inferiori ma dati meno granulari per l’analisi.
Supporto per Organizzazioni Multi-Team
Le organizzazioni con più team o dipartimenti possono aggiungere attributi personalizzati per distinguere tra diversi gruppi utilizzando la variabile d’ambiente OTEL_RESOURCE_ATTRIBUTES
:
Questi attributi personalizzati saranno inclusi in tutte le metriche e gli eventi, permettendoti di:
- Filtrare le metriche per team o dipartimento
- Tracciare i costi per centro di costo
- Creare dashboard specifiche per team
- Impostare avvisi per team specifici
Configurazioni di Esempio
Metriche ed Eventi Disponibili
Attributi Standard
Tutte le metriche e gli eventi condividono questi attributi standard:
Attributo | Descrizione | Controllato Da |
---|---|---|
session.id | Identificatore univoco della sessione | OTEL_METRICS_INCLUDE_SESSION_ID (predefinito: true) |
app.version | Versione corrente di Claude Code | OTEL_METRICS_INCLUDE_VERSION (predefinito: false) |
organization.id | UUID dell’organizzazione (quando autenticato) | Sempre incluso quando disponibile |
user.account_uuid | UUID dell’account (quando autenticato) | OTEL_METRICS_INCLUDE_ACCOUNT_UUID (predefinito: true) |
terminal.type | Tipo di terminale (es. iTerm.app , vscode , cursor , tmux ) | Sempre incluso quando rilevato |
Metriche
Claude Code esporta le seguenti metriche:
Nome Metrica | Descrizione | Unità |
---|---|---|
claude_code.session.count | Conteggio delle sessioni CLI avviate | count |
claude_code.lines_of_code.count | Conteggio delle righe di codice modificate | count |
claude_code.pull_request.count | Numero di pull request create | count |
claude_code.commit.count | Numero di commit git creati | count |
claude_code.cost.usage | Costo della sessione Claude Code | USD |
claude_code.token.usage | Numero di token utilizzati | tokens |
claude_code.code_edit_tool.decision | Conteggio delle decisioni di autorizzazione dello strumento di modifica codice | count |
Dettagli delle Metriche
Contatore Sessioni
Incrementato all’inizio di ogni sessione.
Attributi:
- Tutti gli attributi standard
Contatore Righe di Codice
Incrementato quando il codice viene aggiunto o rimosso.
Attributi:
- Tutti gli attributi standard
type
: ("added"
,"removed"
)
Contatore Pull Request
Incrementato quando si creano pull request tramite Claude Code.
Attributi:
- Tutti gli attributi standard
Contatore Commit
Incrementato quando si creano commit git tramite Claude Code.
Attributi:
- Tutti gli attributi standard
Contatore Costi
Incrementato dopo ogni richiesta API.
Attributi:
- Tutti gli attributi standard
model
: Identificatore del modello (es. “claude-3-5-sonnet-20241022”)
Contatore Token
Incrementato dopo ogni richiesta API.
Attributi:
- Tutti gli attributi standard
type
: ("input"
,"output"
,"cacheRead"
,"cacheCreation"
)model
: Identificatore del modello (es. “claude-3-5-sonnet-20241022”)
Contatore Decisioni Strumento Modifica Codice
Incrementato quando l’utente accetta o rifiuta l’uso degli strumenti Edit, MultiEdit, Write o NotebookEdit.
Attributi:
- Tutti gli attributi standard
tool
: Nome dello strumento ("Edit"
,"MultiEdit"
,"Write"
,"NotebookEdit"
)decision
: Decisione dell’utente ("accept"
,"reject"
)language
: Linguaggio di programmazione del file modificato (es."TypeScript"
,"Python"
,"JavaScript"
,"Markdown"
). Restituisce"unknown"
per estensioni di file non riconosciute.
Eventi
Claude Code esporta i seguenti eventi tramite log/eventi OpenTelemetry (quando OTEL_LOGS_EXPORTER
è configurato):
Evento Prompt Utente
Registrato quando un utente invia un prompt.
Nome Evento: claude_code.user_prompt
Attributi:
- Tutti gli attributi standard
event.name
:"user_prompt"
event.timestamp
: Timestamp ISO 8601prompt_length
: Lunghezza del promptprompt
: Contenuto del prompt (censurato per impostazione predefinita, abilita conOTEL_LOG_USER_PROMPTS=1
)
Evento Risultato Strumento
Registrato quando uno strumento completa l’esecuzione.
Nome Evento: claude_code.tool_result
Attributi:
- Tutti gli attributi standard
event.name
:"tool_result"
event.timestamp
: Timestamp ISO 8601name
: Nome dello strumentosuccess
:"true"
o"false"
duration_ms
: Tempo di esecuzione in millisecondierror
: Messaggio di errore (se fallito)
Evento Richiesta API
Registrato per ogni richiesta API a Claude.
Nome Evento: claude_code.api_request
Attributi:
- Tutti gli attributi standard
event.name
:"api_request"
event.timestamp
: Timestamp ISO 8601model
: Modello utilizzato (es. “claude-3-5-sonnet-20241022”)cost_usd
: Costo stimato in USDduration_ms
: Durata della richiesta in millisecondiinput_tokens
: Numero di token di inputoutput_tokens
: Numero di token di outputcache_read_tokens
: Numero di token letti dalla cachecache_creation_tokens
: Numero di token utilizzati per la creazione della cache
Evento Errore API
Registrato quando una richiesta API a Claude fallisce.
Nome Evento: claude_code.api_error
Attributi:
- Tutti gli attributi standard
event.name
:"api_error"
event.timestamp
: Timestamp ISO 8601model
: Modello utilizzato (es. “claude-3-5-sonnet-20241022”)error
: Messaggio di errorestatus_code
: Codice di stato HTTP (se applicabile)duration_ms
: Durata della richiesta in millisecondiattempt
: Numero del tentativo (per richieste ripetute)
Evento Decisione Strumento
Registrato quando viene presa una decisione di autorizzazione strumento (accetta/rifiuta).
Nome Evento: claude_code.tool_decision
Attributi:
- Tutti gli attributi standard
event.name
:"tool_decision"
event.timestamp
: Timestamp ISO 8601tool_name
: Nome dello strumento (es. “Read”, “Edit”, “MultiEdit”, “Write”, “NotebookEdit”, ecc.)decision
:"accept"
o"reject"
source
: Fonte della decisione -"config"
,"user_permanent"
,"user_temporary"
,"user_abort"
, o"user_reject"
Interpretazione dei Dati di Metriche ed Eventi
Le metriche esportate da Claude Code forniscono preziose informazioni sui modelli di utilizzo e la produttività. Ecco alcune visualizzazioni e analisi comuni che puoi creare:
Monitoraggio dell’Utilizzo
Metrica | Opportunità di Analisi |
---|---|
claude_code.token.usage | Suddividi per type (input/output), utente, team o modello |
claude_code.session.count | Traccia l’adozione e il coinvolgimento nel tempo |
claude_code.lines_of_code.count | Misura la produttività tracciando aggiunte/rimozioni di codice |
claude_code.commit.count & claude_code.pull_request.count | Comprendi l’impatto sui flussi di lavoro di sviluppo |
Monitoraggio dei Costi
La metrica claude_code.cost.usage
aiuta con:
- Tracciamento delle tendenze di utilizzo tra team o individui
- Identificazione di sessioni ad alto utilizzo per l’ottimizzazione
Le metriche dei costi sono approssimazioni. Per i dati di fatturazione ufficiali, fai riferimento al tuo provider API (Anthropic Console, AWS Bedrock o Google Cloud Vertex).
Avvisi e Segmentazione
Avvisi comuni da considerare:
- Picchi di costo
- Consumo insolito di token
- Volume elevato di sessioni da utenti specifici
Tutte le metriche possono essere segmentate per user.account_uuid
, organization.id
, session.id
, model
e app.version
.
Analisi degli Eventi
I dati degli eventi forniscono informazioni dettagliate sulle interazioni di Claude Code:
Modelli di Utilizzo degli Strumenti: Analizza gli eventi dei risultati degli strumenti per identificare:
- Strumenti utilizzati più frequentemente
- Tassi di successo degli strumenti
- Tempi medi di esecuzione degli strumenti
- Modelli di errore per tipo di strumento
Monitoraggio delle Prestazioni: Traccia le durate delle richieste API e i tempi di esecuzione degli strumenti per identificare i colli di bottiglia delle prestazioni.
Considerazioni sui Backend
La tua scelta di backend per metriche e log determinerà i tipi di analisi che puoi eseguire:
Per le Metriche:
- Database di serie temporali (es. Prometheus): Calcoli di tasso, metriche aggregate
- Archivi colonnari (es. ClickHouse): Query complesse, analisi utenti unici
- Piattaforme di osservabilità complete (es. Honeycomb, Datadog): Query avanzate, visualizzazione, avvisi
Per Eventi/Log:
- Sistemi di aggregazione log (es. Elasticsearch, Loki): Ricerca full-text, analisi log
- Archivi colonnari (es. ClickHouse): Analisi eventi strutturati
- Piattaforme di osservabilità complete (es. Honeycomb, Datadog): Correlazione tra metriche ed eventi
Per le organizzazioni che richiedono metriche di Utenti Attivi Giornalieri/Settimanali/Mensili (DAU/WAU/MAU), considera backend che supportano query efficienti di valori unici.
Informazioni sul Servizio
Tutte le metriche sono esportate con:
- Nome Servizio:
claude-code
- Versione Servizio: Versione corrente di Claude Code
- Nome Meter:
com.anthropic.claude_code
Considerazioni su Sicurezza/Privacy
- La telemetria è opt-in e richiede configurazione esplicita
- Informazioni sensibili come chiavi API o contenuti di file non sono mai incluse nelle metriche o negli eventi
-Il contenuto dei prompt utente è censurato per impostazione predefinita - viene registrata solo la lunghezza del prompt. Per abilitare il logging dei prompt utente, imposta
OTEL_LOG_USER_PROMPTS=1