Boas Práticas de Observabilidade
Instrumentar bem uma aplicação Claude significa que um pico de custo, uma regressão de latência ou uma regressão de cache aparecem em um dashboard ou em uma página dentro de uma hora, não na fatura do próximo mês.
Esta lista de verificação consolida as práticas abordadas nesta seção em regras contra as quais você pode verificar sua própria instrumentação.
Como Usar Esta Lista de Verificação
- Trate a seção A como o mínimo inegociável para qualquer integração Claude além de um script descartável.
- As seções B e C valem o esforço assim que você tiver loops de agente com várias etapas ou tráfego de produção para monitorar.
- Revise esta lista após seu primeiro incidente real e anote qual regra o teria detectado mais cedo.
- Use as caixas de seleção como uma auditoria literal de sua instrumentação atual, não apenas como um exercício de leitura.
A - Fundamentos de Logging
- Registre cada chamada Claude em um esquema estruturado consistente. Capture prompt, resposta, modelo, contagem de tokens, latência e um ID de solicitação para cada chamada, não apenas para as que falham.
- Use
logging.Logger, nãoprint. A saída estruturada através de um framework de logging real integra-se com filtragem de nível de log e a maioria dos agentes de agregação de logs prontos para uso. - Registre erros no mesmo esquema que os sucessos. Uma forma compartilhada com um campo
statuspermite que uma única consulta cubra ambos os resultados em vez de manter logs de erro separados. - Gere o ID da solicitação antes da chamada, não depois. Isso garante que você tenha um identificador mesmo quando a chamada gerar uma exceção.
- Centralize a construção de logs em uma única função ou adaptador. Construir o dicionário de log inline em cada local de chamada é como os esquemas se desviam silenciosamente em uma base de código.
- Capture campos de token relacionados ao cache defensivamente. Acesse
cache_read_input_tokense campos semelhantes comgetattr(..., None), pois eles só são preenchidos quando o cache de prompt é aplicado.
B - Rastreamento e Visibilidade de Custo
- Emita um span raiz por execução de agente, com um span filho por chamada de modelo e invocação de ferramenta. Isso preserva a forma de uma execução de várias etapas, que logs planos sozinhos não conseguem mostrar.
- Siga a convenção de nomenclatura de atributos
gen_ai.*nos spans. A nomenclatura consistente mantém os rastros consultáveis da mesma forma, independentemente de qual serviço ou provedor de modelo os produziu. - Defina o status do span explicitamente em caso de erro, não apenas
record_exception. Um span sem um status de erro explícito ainda pode ser renderizado como bem-sucedido em alguns visualizadores de rastros. - Mantenha o texto completo do prompt/resposta fora dos atributos do span. Spans são para metadados curtos e estruturados; coloque o texto completo em logs estruturados em vez disso, unidos por ID de solicitação.
- Calcule e envie o custo por chamada, não apenas a contagem de tokens. A contagem de tokens sozinha não responde "quanto custou isso"; multiplique pelo preço atual por modelo e trate essa tabela de preços como configuração.
- Coloque o custo do Claude e as métricas de latência no mesmo dashboard que suas outras métricas de infraestrutura. Um dashboard separado apenas para LLM é verificado com muito menos frequência do que aquele que sua equipe já monitora diariamente.
- Marque cada métrica com pelo menos o modelo e o recurso/endpoint. Métricas de custo sem marcação não podem dizer qual modelo ou qual parte do seu produto está impulsionando os gastos.
C - Alerta e Resposta a Incidentes
- Alerta sobre gastos em relação a uma linha de base móvel, não apenas um valor fixo em dólares. Um limite fixo que se ajusta ao tráfego de hoje se torna obsoleto à medida que o uso cresce.
- Exija um piso absoluto mínimo ao lado de qualquer alerta baseado em proporção. Uma verificação apenas de proporção pode disparar em oscilações estatisticamente grandes, mas praticamente sem sentido, quando a linha de base é pequena.
- Alerta sobre a taxa de cache-miss independentemente dos gastos. É um indicador principal que muitas vezes se move antes que o gráfico de custo se curve visivelmente.
- Execute verificações de alerta em um cronograma, não inline no caminho da solicitação. A lógica de avaliação de alerta não deve adicionar latência ou um novo modo de falha ao código já no caminho crítico para os usuários.
- Use a deduplicação da sua ferramenta de paginação, não lógica de deduplicação personalizada. Reimplementar a escalada e a deduplicação na própria verificação geralmente produz um comportamento pior do que o tratamento integrado da ferramenta de paginação.
- Verifique a correlação de implantação antes de assumir um problema do lado do provedor. A maioria dos picos de latência ou erro remonta a uma implantação recente, edição de prompt ou alteração de configuração mais rapidamente do que remonta a um incidente do lado da Anthropic.
- Anote o que você verificou após cada incidente, incluindo becos sem saída. Uma nota curta de incidente economiza a próxima investigação de refazer o mesmo caminho.
D - Consistência da Equipe
- Documente seu esquema de nomenclatura de spans e atributos em um ADR antes que um segundo serviço adote o rastreamento. Sem uma decisão documentada, cada serviço inventa sua própria nomenclatura, e as consultas de rastros entre serviços se tornam impossíveis.
- Documente sua política de amostragem explicitamente, incluindo a exceção de span de erro. "Amostrar apropriadamente" não é preciso o suficiente para que cada serviço implemente da mesma maneira.
- Substitua ADRs em vez de editá-los no local quando o esquema mudar. Editar no local destrói o registro histórico de por que a decisão original foi tomada.
- Dê aos serviços existentes um prazo concreto de migração quando o esquema mudar. Um ADR sem um plano de implantação deixa serviços já instrumentados permanentemente fora de sincronia com os novos.
Aplicando a Lista de Verificação em Ordem
- Seção A primeiro, sempre. Logging estruturado custa quase nada para adicionar e é a base sobre a qual todas as outras práticas nesta lista são construídas.
- Seção B quando você tiver um loop de agente de várias etapas ou tráfego de produção que valha a pena monitorar. Rastreamento e dashboards adicionam esforço de engenharia real, então eles ganham seu lugar quando o logging sozinho para de responder às suas perguntas.
- Seção C quando B estiver no lugar. Alertar sobre métricas que ainda não existem não é possível; obtenha os sinais fluindo antes de definir limites para eles.
- Seção D assim que outra equipe ou serviço começar a instrumentar. Esperar até que três serviços já tenham divergido transforma isso de uma decisão proativa em um projeto de limpeza.
FAQs
Qual prática nesta lista é mais importante se eu puder fazer apenas uma coisa?
Logging estruturado (seção A): um esquema consistente que captura prompt, resposta, tokens, modelo, latência e ID de solicitação para cada chamada. Custa pouco para adicionar, e todas as outras práticas nesta lista (rastreamento, dashboards, alertas) dependem desses dados existirem em um formato consultável.
Preciso de rastreamento OpenTelemetry para uma integração simples de chamada única?
Não necessariamente. O rastreamento vale o seu custo quando você tem um loop de agente de várias etapas onde a ordem e a aninhamento das chamadas importam. Uma integração de chamada única pode depender apenas de logging estruturado até que isso mude.
Por que o custo é tratado como uma preocupação de observabilidade em vez de uma preocupação financeira nesta lista?
Um loop de agente descontrolado é um bug de confiabilidade que, por acaso, aparece primeiro como uma anomalia de gastos. Tratar o custo como um sinal de engenharia de primeira classe, ao lado de latência e taxa de erros, detecta esse bug no mesmo dia em vez de no final de um ciclo de faturamento.
Qual é o risco de pular a prática de ADR na seção D?
Cada serviço que adota o rastreamento independentemente tende a inventar seus próprios nomes de span e chaves de atributo. Uma vez que isso acontece, consultas de rastros entre serviços e dashboards compartilhados param de funcionar, e corrigi-lo mais tarde requer uma migração em vez de uma decisão única.
As verificações de alerta devem ser executadas como parte do meu código normal de tratamento de solicitações?
Não. Execute a avaliação de alerta em um cronograma, separado do caminho da solicitação, seja como um cron job ou um monitor avaliado pelo seu backend de métricas. Colocar a lógica de alerta inline adiciona latência e um novo modo de falha ao código que já está atendendo aos usuários.
Por que a lista de verificação recomenda uma linha de base móvel em vez de um limite de gastos fixo?
Um limite fixo que se ajusta ao seu tráfego hoje se torna muito sensível ou muito tarde para detectar um pico real à medida que o uso cresce. Uma linha de base móvel (uma mediana de janelas recentes) se adapta automaticamente, mantendo o alerta significativo sem retuning manual.
O que devo fazer de diferente quando um segundo serviço começar a instrumentar chamadas Claude?
Escreva o ADR documentando nomes de spans, atributos e política de amostragem antes que esse segundo serviço envie sua instrumentação, não depois. Este é o ponto em que a inconsistência começa a se compor, e é muito mais barato prevenir do que migrar dela mais tarde.
A amostragem de span de 100% é sempre a escolha certa?
Em baixo volume de tráfego, sim, pois o custo e o ruído são negligenciáveis. À medida que o tráfego cresce, a maioria das equipes muda para uma taxa de amostragem menor para spans bem-sucedidos de rotina, mantendo spans de erro e outliers de custo com amostragem total, o que o ADR deve documentar explicitamente.
Como sei se meu esquema de logging está faltando algo importante?
Se você não consegue responder "quanto custou essa chamada específica, quanto tempo levou e o que ela retornou" apenas com seus logs, sem reexecutar a solicitação, o esquema está incompleto. Os campos na seção A (prompt, resposta, modelo, tokens, latência, ID da solicitação) são o mínimo que torna essa pergunta respondível.
Qual é a maneira mais rápida de verificar se um pico de métrica é causado por minha própria implantação?
Compare o timestamp de início da anomalia com o seu log de implantação para a mesma janela e verifique a página de status da Anthropic para descartar uma causa do lado do provedor. Esta é a primeira etapa da lista de verificação de correlação de implantação vinculada abaixo, e ela resolve a maioria dos incidentes mais rapidamente do que começar do zero.
As métricas de custo devem ficar em um dashboard separado específico para LLM ou com minhas outras métricas de infraestrutura?
Com suas outras métricas de infraestrutura. Um dashboard dedicado apenas para LLM tende a ser verificado raramente, enquanto os gastos ao lado de gráficos de latência e taxa de erros que sua equipe já monitora diariamente são notados no dia em que algo dá errado.
Relacionados
- Como a Observabilidade Funciona para Aplicações LLM - o modelo mental em que esta lista de verificação é construída.
- Fundamentos de Observabilidade - o ponto de partida mínimo para a seção A.
- Instrumentando Loops de Agente com Rastreamento OpenTelemetry - as práticas de rastreamento na seção B.
- Integrando Dashboards de Uso e Custo do Claude com Datadog - as práticas de dashboard na seção B.
- Alertando sobre Picos de Gastos e Taxas Crescentes de Cache-Miss - as práticas de alerta na seção C.
- Correlacionando Latência e Erros com Implantações de Código - a lista de verificação de correlação de implantação referenciada na seção C.
- Modelo ADR: Definindo seu Esquema de Span OTel para Chamadas de Ferramentas - as práticas de ADR na seção D.
Versões da Stack: Escrito contra a linha de modelos Claude atual em ~junho de 2026 - Claude Fable 5, Claude Opus 4.8, Claude Sonnet 5 (o padrão), e Claude Haiku 4.5 - e o SDK oficial
anthropicPython (última versão 0.x). Nomes de modelos, preços e versões de SDK mudam rapidamente - verifique os detalhes atuais em platform.claude.com/docs antes de confiar neles.