Como filtrar e reduzir a telemetria de agentes de IA com o OpenTelemetry Collector
Aprofundamento CEVIU
Aprofundamento
O texto parte de um problema prático: ligar a telemetria do Claude Code com todas as flags de conteúdo gera volume que ninguém consegue ler. Uma tarefa simples (corrigir dois testes e adicionar testes de borda) produziu 181 registros e 289 KB de JSON. O autor define o critério de corte: se nenhum dashboard, alerta ou consulta lê um campo, ele é só armazenamento pago para indexar.
O volume vem do loop do agente. Com OTEL_LOG_TOOL_CONTENT ligado, cada span de ferramenta ganha um evento tool.output (na Read, o arquivo inteiro), e os logs repetem o conteúdo em tool_parameters. Nas métricas, o problema é cardinalidade: session.id, user.id, user.email e dois ids de conta em cada data point geraram 300 séries para oito métricas em 25 sessões. A solução fica no Collector, com um receiver OTLP alimentando um pipeline raw (controle) e um otimizado, ambos no mesmo Grafana LGTM. Nos logs, o descarte de api_request, a remoção de seis atributos, o hash truncado em 16 caracteres hex e o limite de 256 caracteres em error reduzem os bytes à metade. Nas métricas, 300 séries viram 12, e é preciso somar as sessões antes de converter de delta para cumulativo. Nos traces, o autor trunca em vez de amostrar: descarta tool.execution bem-sucedido (cerca de um quinto dos bytes), apaga atributos duplicados e limita conteúdo a 512 caracteres. Os totais otimizados batem com os raw em até meio por cento. O autor avisa que isso exige um único Collector vendo todas as sessões, então atrás de um load balancer vale um gateway único.
Por que isso importa
Para quem opera uma frota de agentes, a leitura é que o custo de observability de IA tende a vir de atributos e conteúdo, não do número de chamadas. Tratar o Collector como camada de política (o que entra no backend) é mais barato do que tentar mudar o agente. Já amostragem, nesse caso, pode esconder justamente a execução que alguém quer investigar.
Perguntas frequentes
Por que a telemetria de agentes de IA de programação fica tão cara?
Com as flags de conteúdo ativadas, spans e logs carregam prompts, retornos de ferramentas e arquivos inteiros, e o conteúdo aparece duas vezes (span e log). Nas métricas, atributos de identidade criam séries novas a cada sessão. Uma única execução pequena gerou 289 KB de JSON.
Dá para reduzir esse volume sem mexer no agente?
Sim. Como a telemetria é nativa do OpenTelemetry, o Collector filtra eventos, apaga atributos, aplica hash e trunca campos antes do backend. O autor usou pipelines raw e otimizado alimentados pelo mesmo receiver para comparar os resultados.
Por que converter de delta para cumulativo nas métricas?
O Claude Code exporta temporalidade delta e o Prometheus espera cumulativa. Com session.id removido, todas as sessões escrevem nas mesmas séries, e o conversor só aceita pontos em ordem de timestamp. Por isso é preciso somar as sessões por janela antes de converter.
Por que não usar amostragem nos traces?
O autor prefere truncar porque traces servem para recuperar a execução específica que alguém pergunta. Interações de agentes duram minutos, e o tail_sampling decide após o decision_wait, então uma falha no minuto três pode chegar depois do veredito. A amostragem fica como próximo passo se o truncamento não bastar.
Fontes
- cncf.iofonte original
- Categoria
- CEVIU DevOps
- Publicado
- 22 de outubro de 2026
- Editoria
- CEVIU DevOps
