Monitoramento
Aprenda como habilitar e configurar OpenTelemetry para Claude Code.
Claude Code suporta métricas e eventos OpenTelemetry (OTel) para monitoramento e observabilidade.
Todas as métricas são dados de séries temporais exportados via protocolo de métricas padrão do OpenTelemetry, e eventos são exportados via protocolo de logs/eventos do OpenTelemetry. É responsabilidade do usuário garantir que seus backends de métricas e logs estejam configurados adequadamente e que a granularidade de agregação atenda aos seus requisitos de monitoramento.
O suporte ao OpenTelemetry está atualmente em beta e os detalhes estão sujeitos a alterações.
Início Rápido
Configure OpenTelemetry usando variáveis de ambiente:
Os intervalos de exportação padrão são 60 segundos para métricas e 5 segundos para logs. Durante a configuração, você pode querer usar intervalos mais curtos para fins de depuração. Lembre-se de redefinir estes para uso em produção.
Para opções de configuração completas, consulte a especificação OpenTelemetry.
Configuração do Administrador
Administradores podem configurar as configurações do OpenTelemetry para todos os usuários através do arquivo de configurações gerenciadas. Isso permite controle centralizado das configurações de telemetria em toda uma organização. Consulte a precedência de configurações para mais informações sobre como as configurações são aplicadas.
O arquivo de configurações gerenciadas está localizado em:
- macOS:
/Library/Application Support/ClaudeCode/managed-settings.json
- Linux e WSL:
/etc/claude-code/managed-settings.json
- Windows:
C:\ProgramData\ClaudeCode\managed-settings.json
Exemplo de configuração de configurações gerenciadas:
Configurações gerenciadas podem ser distribuídas via MDM (Mobile Device Management) ou outras soluções de gerenciamento de dispositivos. Variáveis de ambiente definidas no arquivo de configurações gerenciadas têm alta precedência e não podem ser substituídas pelos usuários.
Detalhes de Configuração
Variáveis de Configuração Comuns
Variável de Ambiente | Descrição | Valores de Exemplo |
---|---|---|
CLAUDE_CODE_ENABLE_TELEMETRY | Habilita coleta de telemetria (obrigatório) | 1 |
OTEL_METRICS_EXPORTER | Tipo(s) de exportador de métricas (separados por vírgula) | console , otlp , prometheus |
OTEL_LOGS_EXPORTER | Tipo(s) de exportador de logs/eventos (separados por vírgula) | console , otlp |
OTEL_EXPORTER_OTLP_PROTOCOL | Protocolo para exportador OTLP (todos os sinais) | grpc , http/json , http/protobuf |
OTEL_EXPORTER_OTLP_ENDPOINT | Endpoint do coletor OTLP (todos os sinais) | http://localhost:4317 |
OTEL_EXPORTER_OTLP_METRICS_PROTOCOL | Protocolo para métricas (substitui geral) | grpc , http/json , http/protobuf |
OTEL_EXPORTER_OTLP_METRICS_ENDPOINT | Endpoint de métricas OTLP (substitui geral) | http://localhost:4318/v1/metrics |
OTEL_EXPORTER_OTLP_LOGS_PROTOCOL | Protocolo para logs (substitui geral) | grpc , http/json , http/protobuf |
OTEL_EXPORTER_OTLP_LOGS_ENDPOINT | Endpoint de logs OTLP (substitui geral) | http://localhost:4318/v1/logs |
OTEL_EXPORTER_OTLP_HEADERS | Cabeçalhos de autenticação para OTLP | Authorization=Bearer token |
OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY | Chave do cliente para autenticação mTLS | Caminho para arquivo de chave do cliente |
OTEL_EXPORTER_OTLP_METRICS_CLIENT_CERTIFICATE | Certificado do cliente para autenticação mTLS | Caminho para arquivo de certificado do cliente |
OTEL_METRIC_EXPORT_INTERVAL | Intervalo de exportação em milissegundos (padrão: 60000) | 5000 , 60000 |
OTEL_LOGS_EXPORT_INTERVAL | Intervalo de exportação de logs em milissegundos (padrão: 5000) | 1000 , 10000 |
OTEL_LOG_USER_PROMPTS | Habilitar log do conteúdo de prompts do usuário (padrão: desabilitado) | 1 para habilitar |
Controle de Cardinalidade de Métricas
As seguintes variáveis de ambiente controlam quais atributos são incluídos nas métricas para gerenciar cardinalidade:
Variável de Ambiente | Descrição | Valor Padrão | Exemplo para Desabilitar |
---|---|---|---|
OTEL_METRICS_INCLUDE_SESSION_ID | Incluir atributo session.id nas métricas | true | false |
OTEL_METRICS_INCLUDE_VERSION | Incluir atributo app.version nas métricas | false | true |
OTEL_METRICS_INCLUDE_ACCOUNT_UUID | Incluir atributo user.account_uuid nas métricas | true | false |
Essas variáveis ajudam a controlar a cardinalidade das métricas, o que afeta os requisitos de armazenamento e desempenho de consulta no seu backend de métricas. Cardinalidade mais baixa geralmente significa melhor desempenho e custos de armazenamento menores, mas dados menos granulares para análise.
Cabeçalhos Dinâmicos
Para ambientes empresariais que requerem autenticação dinâmica, você pode configurar um script para gerar cabeçalhos dinamicamente:
Configuração de Configurações
Adicione ao seu .claude/settings.json
:
Requisitos do Script
O script deve produzir JSON válido com pares chave-valor de string representando cabeçalhos HTTP:
Limitações Importantes
Cabeçalhos são buscados apenas na inicialização, não durante o tempo de execução. Isso se deve às limitações da arquitetura do exportador OpenTelemetry.
Para cenários que requerem atualização frequente de token, use um OpenTelemetry Collector como proxy que pode atualizar seus próprios cabeçalhos.
Suporte a Organização Multi-Equipe
Organizações com múltiplas equipes ou departamentos podem adicionar atributos personalizados para distinguir entre diferentes grupos usando a variável de ambiente OTEL_RESOURCE_ATTRIBUTES
:
Esses atributos personalizados serão incluídos em todas as métricas e eventos, permitindo que você:
- Filtre métricas por equipe ou departamento
- Rastreie custos por centro de custo
- Crie dashboards específicos da equipe
- Configure alertas para equipes específicas
Requisitos importantes de formatação para OTEL_RESOURCE_ATTRIBUTES:
A variável de ambiente OTEL_RESOURCE_ATTRIBUTES
segue a especificação W3C Baggage, que tem requisitos rigorosos de formatação:
- Espaços não são permitidos: Valores não podem conter espaços. Por exemplo,
user.organizationName=My Company
é inválido - Formato: Deve ser pares chave=valor separados por vírgula:
key1=value1,key2=value2
- Caracteres permitidos: Apenas caracteres US-ASCII excluindo caracteres de controle, espaços em branco, aspas duplas, vírgulas, ponto e vírgula e barras invertidas
- Caracteres especiais: Caracteres fora do intervalo permitido devem ser codificados em porcentagem
Exemplos:
Nota: Colocar aspas em todo o par chave=valor (por exemplo, "key=value with spaces"
) não é suportado pela especificação OpenTelemetry e resultará em atributos sendo prefixados com aspas.
Configurações de Exemplo
Métricas e Eventos Disponíveis
Atributos Padrão
Todas as métricas e eventos compartilham estes atributos padrão:
Atributo | Descrição | Controlado Por |
---|---|---|
session.id | Identificador único da sessão | OTEL_METRICS_INCLUDE_SESSION_ID (padrão: true) |
app.version | Versão atual do Claude Code | OTEL_METRICS_INCLUDE_VERSION (padrão: false) |
organization.id | UUID da organização (quando autenticado) | Sempre incluído quando disponível |
user.account_uuid | UUID da conta (quando autenticado) | OTEL_METRICS_INCLUDE_ACCOUNT_UUID (padrão: true) |
terminal.type | Tipo de terminal (por exemplo, iTerm.app , vscode , cursor , tmux ) | Sempre incluído quando detectado |
Métricas
Claude Code exporta as seguintes métricas:
Nome da Métrica | Descrição | Unidade |
---|---|---|
claude_code.session.count | Contagem de sessões CLI iniciadas | count |
claude_code.lines_of_code.count | Contagem de linhas de código modificadas | count |
claude_code.pull_request.count | Número de pull requests criados | count |
claude_code.commit.count | Número de commits git criados | count |
claude_code.cost.usage | Custo da sessão Claude Code | USD |
claude_code.token.usage | Número de tokens usados | tokens |
claude_code.code_edit_tool.decision | Contagem de decisões de permissão da ferramenta de edição de código | count |
claude_code.active_time.total | Tempo ativo total em segundos | s |
Detalhes das Métricas
Contador de Sessão
Incrementado no início de cada sessão.
Atributos:
- Todos os atributos padrão
Contador de Linhas de Código
Incrementado quando código é adicionado ou removido.
Atributos:
- Todos os atributos padrão
type
: ("added"
,"removed"
)
Contador de Pull Request
Incrementado ao criar pull requests via Claude Code.
Atributos:
- Todos os atributos padrão
Contador de Commit
Incrementado ao criar commits git via Claude Code.
Atributos:
- Todos os atributos padrão
Contador de Custo
Incrementado após cada solicitação de API.
Atributos:
- Todos os atributos padrão
model
: Identificador do modelo (por exemplo, “claude-3-5-sonnet-20241022”)
Contador de Token
Incrementado após cada solicitação de API.
Atributos:
- Todos os atributos padrão
type
: ("input"
,"output"
,"cacheRead"
,"cacheCreation"
)model
: Identificador do modelo (por exemplo, “claude-3-5-sonnet-20241022”)
Contador de Decisão da Ferramenta de Edição de Código
Incrementado quando o usuário aceita ou rejeita o uso das ferramentas Edit, MultiEdit, Write ou NotebookEdit.
Atributos:
- Todos os atributos padrão
tool
: Nome da ferramenta ("Edit"
,"MultiEdit"
,"Write"
,"NotebookEdit"
)decision
: Decisão do usuário ("accept"
,"reject"
)language
: Linguagem de programação do arquivo editado (por exemplo,"TypeScript"
,"Python"
,"JavaScript"
,"Markdown"
). Retorna"unknown"
para extensões de arquivo não reconhecidas.
Contador de Tempo Ativo
Rastreia o tempo real gasto usando ativamente o Claude Code (não tempo ocioso). Esta métrica é incrementada durante interações do usuário, como digitar prompts ou receber respostas.
Atributos:
- Todos os atributos padrão
Eventos
Claude Code exporta os seguintes eventos via logs/eventos OpenTelemetry (quando OTEL_LOGS_EXPORTER
está configurado):
Evento de Prompt do Usuário
Registrado quando um usuário envia um prompt.
Nome do Evento: claude_code.user_prompt
Atributos:
- Todos os atributos padrão
event.name
:"user_prompt"
event.timestamp
: Timestamp ISO 8601prompt_length
: Comprimento do promptprompt
: Conteúdo do prompt (censurado por padrão, habilite comOTEL_LOG_USER_PROMPTS=1
)
Evento de Resultado da Ferramenta
Registrado quando uma ferramenta completa a execução.
Nome do Evento: claude_code.tool_result
Atributos:
- Todos os atributos padrão
event.name
:"tool_result"
event.timestamp
: Timestamp ISO 8601tool_name
: Nome da ferramentasuccess
:"true"
ou"false"
duration_ms
: Tempo de execução em milissegundoserror
: Mensagem de erro (se falhou)decision
: Ou"accept"
ou"reject"
source
: Fonte da decisão -"config"
,"user_permanent"
,"user_temporary"
,"user_abort"
, ou"user_reject"
tool_parameters
: String JSON contendo parâmetros específicos da ferramenta (quando disponível)- Para ferramenta Bash: inclui
bash_command
,full_command
,timeout
,description
,sandbox
- Para ferramenta Bash: inclui
Evento de Solicitação de API
Registrado para cada solicitação de API para Claude.
Nome do Evento: claude_code.api_request
Atributos:
- Todos os atributos padrão
event.name
:"api_request"
event.timestamp
: Timestamp ISO 8601model
: Modelo usado (por exemplo, “claude-3-5-sonnet-20241022”)cost_usd
: Custo estimado em USDduration_ms
: Duração da solicitação em milissegundosinput_tokens
: Número de tokens de entradaoutput_tokens
: Número de tokens de saídacache_read_tokens
: Número de tokens lidos do cachecache_creation_tokens
: Número de tokens usados para criação de cache
Evento de Erro de API
Registrado quando uma solicitação de API para Claude falha.
Nome do Evento: claude_code.api_error
Atributos:
- Todos os atributos padrão
event.name
:"api_error"
event.timestamp
: Timestamp ISO 8601model
: Modelo usado (por exemplo, “claude-3-5-sonnet-20241022”)error
: Mensagem de errostatus_code
: Código de status HTTP (se aplicável)duration_ms
: Duração da solicitação em milissegundosattempt
: Número da tentativa (para solicitações repetidas)
Evento de Decisão da Ferramenta
Registrado quando uma decisão de permissão da ferramenta é tomada (aceitar/rejeitar).
Nome do Evento: claude_code.tool_decision
Atributos:
- Todos os atributos padrão
event.name
:"tool_decision"
event.timestamp
: Timestamp ISO 8601tool_name
: Nome da ferramenta (por exemplo, “Read”, “Edit”, “MultiEdit”, “Write”, “NotebookEdit”, etc.)decision
: Ou"accept"
ou"reject"
source
: Fonte da decisão -"config"
,"user_permanent"
,"user_temporary"
,"user_abort"
, ou"user_reject"
Interpretando Dados de Métricas e Eventos
As métricas exportadas pelo Claude Code fornecem insights valiosos sobre padrões de uso e produtividade. Aqui estão algumas visualizações e análises comuns que você pode criar:
Monitoramento de Uso
Métrica | Oportunidade de Análise |
---|---|
claude_code.token.usage | Detalhar por type (entrada/saída), usuário, equipe ou modelo |
claude_code.session.count | Rastrear adoção e engajamento ao longo do tempo |
claude_code.lines_of_code.count | Medir produtividade rastreando adições/remoções de código |
claude_code.commit.count & claude_code.pull_request.count | Entender impacto nos fluxos de trabalho de desenvolvimento |
Monitoramento de Custo
A métrica claude_code.cost.usage
ajuda com:
- Rastreamento de tendências de uso entre equipes ou indivíduos
- Identificação de sessões de alto uso para otimização
Métricas de custo são aproximações. Para dados oficiais de cobrança, consulte seu provedor de API (Anthropic Console, AWS Bedrock ou Google Cloud Vertex).
Alertas e Segmentação
Alertas comuns a considerar:
- Picos de custo
- Consumo incomum de tokens
- Alto volume de sessões de usuários específicos
Todas as métricas podem ser segmentadas por user.account_uuid
, organization.id
, session.id
, model
e app.version
.
Análise de Eventos
Os dados de eventos fornecem insights detalhados sobre interações do Claude Code:
Padrões de Uso de Ferramentas: Analise eventos de resultado de ferramentas para identificar:
- Ferramentas mais frequentemente usadas
- Taxas de sucesso das ferramentas
- Tempos médios de execução das ferramentas
- Padrões de erro por tipo de ferramenta
Monitoramento de Desempenho: Rastreie durações de solicitações de API e tempos de execução de ferramentas para identificar gargalos de desempenho.
Considerações de Backend
Sua escolha de backends de métricas e logs determinará os tipos de análises que você pode realizar:
Para Métricas:
- Bancos de dados de séries temporais (por exemplo, Prometheus): Cálculos de taxa, métricas agregadas
- Armazenamentos colunares (por exemplo, ClickHouse): Consultas complexas, análise de usuários únicos
- Plataformas de observabilidade completas (por exemplo, Honeycomb, Datadog): Consultas avançadas, visualização, alertas
Para Eventos/Logs:
- Sistemas de agregação de logs (por exemplo, Elasticsearch, Loki): Busca de texto completo, análise de logs
- Armazenamentos colunares (por exemplo, ClickHouse): Análise de eventos estruturados
- Plataformas de observabilidade completas (por exemplo, Honeycomb, Datadog): Correlação entre métricas e eventos
Para organizações que requerem métricas de Usuários Ativos Diários/Semanais/Mensais (DAU/WAU/MAU), considere backends que suportam consultas eficientes de valores únicos.
Informações do Serviço
Todas as métricas e eventos são exportados com os seguintes atributos de recurso:
service.name
:claude-code
service.version
: Versão atual do Claude Codeos.type
: Tipo do sistema operacional (por exemplo,linux
,darwin
,windows
)os.version
: String da versão do sistema operacionalhost.arch
: Arquitetura do host (por exemplo,amd64
,arm64
)wsl.version
: Número da versão WSL (presente apenas quando executando no Windows Subsystem for Linux)- Nome do Medidor:
com.anthropic.claude_code
Recursos de Medição de ROI
Para um guia abrangente sobre medição de retorno sobre investimento para Claude Code, incluindo configuração de telemetria, análise de custos, métricas de produtividade e relatórios automatizados, consulte o Guia de Medição de ROI do Claude Code. Este repositório fornece configurações Docker Compose prontas para uso, configurações Prometheus e OpenTelemetry, e modelos para gerar relatórios de produtividade integrados com ferramentas como Linear.
Considerações de Segurança/Privacidade
- Telemetria é opt-in e requer configuração explícita
- Informações sensíveis como chaves de API ou conteúdos de arquivos nunca são incluídas em métricas ou eventos
- Conteúdo de prompt do usuário é censurado por padrão - apenas o comprimento do prompt é registrado. Para habilitar o log de prompts do usuário, defina
OTEL_LOG_USER_PROMPTS=1