Monitoraggio
Impara 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 di log/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 per l’uso in produzione.
Per le opzioni di configurazione complete, consulta la specifica OpenTelemetry.
Configurazione dell’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 e WSL:
/etc/claude-code/managed-settings.json
- Windows:
C:\ProgramData\ClaudeCode\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 di metriche (separati da virgola) | console , otlp , prometheus |
OTEL_LOGS_EXPORTER | Tipo/i di esportatore di 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 collettore 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 delle 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 dei 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 dei 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.
Header Dinamici
Per ambienti aziendali che richiedono autenticazione dinamica, puoi configurare uno script per generare header dinamicamente:
Configurazione delle Impostazioni
Aggiungi al tuo .claude/settings.json
:
Requisiti dello Script
Lo script deve produrre JSON valido con coppie chiave-valore stringa che rappresentano header HTTP:
Limitazioni Importanti
Gli header vengono recuperati solo all’avvio, non durante l’esecuzione. Questo è dovuto alle limitazioni dell’architettura dell’esportatore OpenTelemetry.
Per scenari che richiedono aggiornamento frequente dei token, utilizza un Collettore OpenTelemetry come proxy che può aggiornare i propri header.
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
Requisiti di formattazione importanti per OTEL_RESOURCE_ATTRIBUTES:
La variabile d’ambiente OTEL_RESOURCE_ATTRIBUTES
segue la specifica W3C Baggage, che ha requisiti di formattazione rigorosi:
- Nessuno spazio consentito: I valori non possono contenere spazi. Ad esempio,
user.organizationName=My Company
non è valido - Formato: Deve essere coppie chiave=valore separate da virgola:
key1=value1,key2=value2
- Caratteri consentiti: Solo caratteri US-ASCII escludendo caratteri di controllo, spazi bianchi, virgolette doppie, virgole, punti e virgola e barre rovesciate
- Caratteri speciali: I caratteri al di fuori dell’intervallo consentito devono essere codificati in percentuale
Esempi:
Nota: Mettere tra virgolette l’intera coppia chiave=valore (ad es., "key=value with spaces"
) non è supportato dalla specifica OpenTelemetry e risulterà in attributi con prefisso di virgolette.
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 (ad 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 del codice | count |
claude_code.active_time.total | Tempo attivo totale in secondi | s |
Dettagli delle Metriche
Contatore di Sessioni
Incrementato all’inizio di ogni sessione.
Attributi:
- Tutti gli attributi standard
Contatore di Righe di Codice
Incrementato quando il codice viene aggiunto o rimosso.
Attributi:
- Tutti gli attributi standard
type
: ("added"
,"removed"
)
Contatore di Pull Request
Incrementato quando si creano pull request tramite Claude Code.
Attributi:
- Tutti gli attributi standard
Contatore di Commit
Incrementato quando si creano commit git tramite Claude Code.
Attributi:
- Tutti gli attributi standard
Contatore di Costi
Incrementato dopo ogni richiesta API.
Attributi:
- Tutti gli attributi standard
model
: Identificatore del modello (ad es., “claude-3-5-sonnet-20241022”)
Contatore di Token
Incrementato dopo ogni richiesta API.
Attributi:
- Tutti gli attributi standard
type
: ("input"
,"output"
,"cacheRead"
,"cacheCreation"
)model
: Identificatore del modello (ad es., “claude-3-5-sonnet-20241022”)
Contatore di Decisioni dello Strumento di Modifica del 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 (ad es.,"TypeScript"
,"Python"
,"JavaScript"
,"Markdown"
). Restituisce"unknown"
per estensioni di file non riconosciute.
Contatore di Tempo Attivo
Traccia il tempo effettivo trascorso utilizzando attivamente Claude Code (non il tempo di inattività). Questa metrica viene incrementata durante le interazioni dell’utente come digitare prompt o ricevere risposte.
Attributi:
- Tutti gli attributi standard
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 8601tool_name
: Nome dello strumentosuccess
:"true"
o"false"
duration_ms
: Tempo di esecuzione in millisecondierror
: Messaggio di errore (se fallito)decision
: Sia"accept"
che"reject"
source
: Fonte della decisione -"config"
,"user_permanent"
,"user_temporary"
,"user_abort"
, o"user_reject"
tool_parameters
: Stringa JSON contenente parametri specifici dello strumento (quando disponibile)- Per lo strumento Bash: include
bash_command
,full_command
,timeout
,description
,sandbox
- Per lo strumento Bash: include
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 (ad 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 (ad 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 dello 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 (ad es., “Read”, “Edit”, “MultiEdit”, “Write”, “NotebookEdit”, ecc.)decision
: Sia"accept"
che"reject"
source
: Fonte della decisione -"config"
,"user_permanent"
,"user_temporary"
,"user_abort"
, o"user_reject"
Interpretazione dei D ati di Metriche ed Eventi
Le metriche esportate da Claude Code forniscono preziose informazioni sui modelli di utilizzo e sulla 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 costi
- 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 (ad es., Prometheus): Calcoli di tasso, metriche aggregate
- Store colonnari (ad es., ClickHouse): Query complesse, analisi di utenti unici
- Piattaforme di osservabilità complete (ad es., Honeycomb, Datadog): Query avanzate, visualizzazione, avvisi
Per Eventi/Log:
- Sistemi di aggregazione log (ad es., Elasticsearch, Loki): Ricerca full-text, analisi log
- Store colonnari (ad es., ClickHouse): Analisi di eventi strutturati
- Piattaforme di osservabilità complete (ad 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 e gli eventi sono esportati con i seguenti attributi di risorsa:
service.name
:claude-code
service.version
: Versione corrente di Claude Codeos.type
: Tipo di sistema operativo (ad es.,linux
,darwin
,windows
)os.version
: Stringa della versione del sistema operativohost.arch
: Architettura dell’host (ad es.,amd64
,arm64
)wsl.version
: Numero di versione WSL (presente solo quando in esecuzione su Windows Subsystem for Linux)- Nome del Misuratore:
com.anthropic.claude_code
Risorse per la Misurazione del ROI
Per una guida completa sulla misurazione del ritorno sull’investimento per Claude Code, inclusa la configurazione della telemetria, l’analisi dei costi, le metriche di produttività e il reporting automatizzato, consulta la Guida alla Misurazione del ROI di Claude Code. Questo repository fornisce configurazioni Docker Compose pronte all’uso, configurazioni Prometheus e OpenTelemetry, e template per generare report di produttività integrati con strumenti come Linear.
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