A amostragem de traces mantém apenas traces de pedidos selecionados, reduzindo o armazenamento e o processamento, mas arriscando a perda do percurso exato do fluxo de trabalho necessário para o diagnóstico.
Um pedido de IA local pode atravessar um gateway, um router de modelos, um serviço de pesquisa vetorial, uma sandbox de ferramentas e uma ponte de automação doméstica, produzindo muitos spans por interação. Registar todos os percursos indefinidamente é dispendioso. A amostragem decide quais os traces completos ou observações parciais que sobrevivem, mas o momento e os critérios dessa decisão determinam se um timeout raro, uma chamada de ferramenta recusada ou um fallback silencioso continuam visíveis.
A amostragem de traces seleciona históricos de pedidos, não factos individuais
Um trace representa um pedido através de spans relacionados entre serviços. A amostragem escolhe se esse histórico do pedido é registado ou exportado, normalmente com base na probabilidade, em atributos ou numa política. As métricas e os logs podem continuar a existir, mas não conseguem reconstruir o mesmo percurso causal, a menos que mantenham identificadores compatíveis.
A documentação dos conceitos de amostragem distingue a amostragem head, decidida perto do início do pedido, da amostragem tail, decidida depois de chegarem a maioria dos spans. A amostragem head é simples e económica, enquanto a amostragem tail pode manter traces com base na latência final, no estado de erro ou em atributos descobertos mais tarde.
Por isso, a amostragem altera a cobertura do diagnóstico, não o comportamento da aplicação. Um pedido pode ser concluído ou falhar exatamente da mesma forma, quer o seu trace seja mantido quer não, mas o operador vê um conjunto de evidências diferente depois do evento. Esta distinção continua visível durante testes domésticos posteriores.
As decisões head não conseguem ver uma falha que ocorre mais tarde
Uma decisão de probabilidade tomada no span raiz não pode saber que a chamada final à ferramenta vai exceder o tempo limite ou que um serviço a jusante vai devolver um erro. Se o pedido for descartado no início, todos os spans posteriores podem ficar indisponíveis, apesar de o evento ser operacionalmente importante.
Um exemplo de retenção tail-based do OpenTelemetry descreve a retenção de atividades falhadas através de uma abordagem orientada para tail. O exemplo ilustra a principal vantagem: a decisão pode utilizar o resultado concluído, em vez de tentar adivinhar a importância com base nos atributos presentes no início.
A amostragem head continua a funcionar para tendências gerais de desempenho quando as taxas são estáveis e os identificadores são propagados de forma consistente. Torna-se arriscada quando as falhas são raras, estão concentradas numa rota de baixo volume ou só podem ser descobertas depois de vários passos do agente.
As políticas tail acrescentam estado, atraso e os seus próprios pontos cegos
A amostragem tail armazena spans em buffer até fechar uma janela de decisão, agrupa-os pelo ID do trace e aplica políticas ordenadas. Spans tardios, encaminhamento dividido, reinícios do collector, pressão sobre a memória ou uma janela mais curta do que o fluxo de trabalho podem deixar o sampler com um trace incompleto.
Os requisitos do collector avisam que todos os spans de um trace têm de chegar à mesma instância do collector e que os spans pendentes consomem memória. Estes requisitos são importantes num pequeno servidor doméstico, onde o processo de observabilidade compete com a inferência pela RAM.
A fronteira da falha é um fluxo de trabalho cujo span de erro decisivo chega depois de o sampler tomar uma decisão, chega a outro collector ou não tem o atributo de estado utilizado pela política. A amostragem tail melhora a seleção apenas quando a montagem do trace também se mantém fiável.
Execute um teste de cobertura de traces com uma falha conhecida
Crie fluxos de trabalho controlados que falhem no router, no serviço de pesquisa, no servidor de modelos, na sandbox de ferramentas e na chamada final de automação doméstica. Atribua um ID de correlação de teste, registe a sequência de spans esperada e repita cada falha vezes suficientes para exercitar a probabilidade configurada e as políticas tail.
Utilize o mapa de serviços no artigo sobre tracing de ponta a ponta para verificar se cada trace de falha mantido contém a respetiva raiz, as chamadas intermédias, o erro final e os atributos de política relevantes. Conte separadamente os pedidos falhados numa métrica não amostrada, para que os traces em falta possam ser detetados, em vez de serem confundidos com a ausência de falhas.
Considere o teste aprovado apenas quando as falhas críticas forem retidas à taxa exigida e os traces incompletos forem explicitamente mensuráveis. Reserve regras de amostragem permanente para classes de erro de elevado valor, limite a memória do buffer e teste as condições de reinício do collector e de spans tardios antes de depender dos traces para reconstruir incidentes.
Centro de Tecnologia e IA
Mais para Ler

Um LLM local pode retomar a geração depois de o seu processo reiniciar?
Uma explicação da retoma da geração de LLM baseada primeiro no mecanismo, das suas concessões em termos de recursos partilhados, de três perguntas frequentes...

Pode um servidor doméstico executar embeddings e transcodificação de vídeo na mesma GPU integrada?
Uma explicação baseada primeiro no mecanismo dos embeddings partilhados da iGPU e da transcodificação, das suas cedências em termos de recursos partilhados, três perguntas...

Como é que o tempo de vida do token de acesso afeta a segurança e o atrito no agregado familiar?
Uma explicação baseada primeiro no mecanismo da duração dos tokens de acesso, os compromissos relativos aos recursos partilhados, três perguntas frequentes sobre a propagação...

