Amostragem de rastreios

Este documento apresenta o conceito de amostragem, que se refere ao envio ou não de dados de um intervalo para o Cloud Trace. Quando os dados de um intervalo são enviados para o Cloud Trace, esse intervalo é amostrado. Quando os dados de cada intervalo numa rastreabilidade são registados, a rastreabilidade está concluída. No entanto, os rastreios têm frequentemente intervalos em falta porque cada componente instrumentado num sistema de rastreio distribuído decide independentemente se deve ou não registar o intervalo que está a processar.

Embora cada componente tome a sua própria decisão sobre se o intervalo que está a processar é amostrado, essa decisão pode ser influenciada pela decisão de amostragem do componente principal. Por exemplo, suponha que cada componente tem uma regra que diz "se o intervalo principal for amostrado, então amostre o intervalo atual; caso contrário, amostre 50% dos intervalos". Neste cenário, o seguinte é verdadeiro:

  • O intervalo raiz determina se todos os intervalos no rastreio são amostrados.
  • Quando o intervalo raiz é amostrado, todos os intervalos no rastreio são amostrados. Por conseguinte, o rastreio está concluído.

Os componentes podem transmitir a respetiva decisão de amostragem ao filho através do contexto. Por exemplo, no cabeçalho do World Wide Web Consortium (W3C) traceparent, a sampledflag armazena a decisão de amostragem do elemento principal.

Não confunda a amostragem com a propagação de contexto. A amostragem refere-se ao facto de um componente registar ou não dados sobre um intervalo. A propagação do contexto refere-se à passagem de informações sobre o intervalo, como o ID do intervalo, aos componentes secundários.

Estratégias de amostragem

As decisões de amostragem podem ser baseadas no cabeçalho ou na extremidade. Na amostragem baseada no cabeçalho, a decisão de amostragem é tomada quando o pedido é recebido pelo componente que processa o intervalo. Na amostragem baseada na cauda, a decisão de amostragem é adiada até que todo o rastreio esteja disponível.

Pode encontrar a expressão "amostragem de 100%" na documentação dos sistemas de rastreio distribuído. Esta expressão pode aplicar-se a um rastreio ou a um componente. Quando aplicado a um rastreio, significa que todos os intervalos foram amostrados ou, equivalentemente, que o rastreio está concluído. Quando aplicada a um componente, significa que o componente faz a amostragem de cada intervalo que processa.

Amostragem baseada no cabeçalho

Normalmente, os amostradores baseados em cabeçalhos são configurados para amostrar sempre intervalos ou para usar uma estratégia de amostragem probabilística:

  • Com as configurações de amostragem sempre, todos os componentes que o serviço abrange e que podem escrever dados de rastreio, fazem a amostragem dos intervalos que processam. Idealmente, todos os rastreios estão completos e, por isso, tem as informações necessárias para resolver problemas de falhas. Este tipo de configuração pode fazer com que exceda as quotas ou os limites de custos de armazenamento.

  • Com a amostragem probabilística, nem todos os intervalos são amostrados. O comportamento real desta abordagem depende da implementação do componente. Em algumas implementações, todos os intervalos têm a mesma probabilidade de serem amostrados. Noutros, a decisão de amostragem do elemento principal influencia se um intervalo é amostrado.

Os rastreios podem não conter todos os intervalos. Isto pode ser esperado devido à utilização da amostragem probabilística ou pode dever-se à quota ou a componentes que processam um pedido, mas não fazem a amostragem do intervalo.

Amostragem baseada na cauda

O Cloud Trace não suporta a amostragem baseada na cauda. As decisões de amostragem têm de ser tomadas nos componentes que enviam dados para o Cloud Trace.

Se quiser usar a amostragem baseada na cauda, pode usar um servidor intermediário que receba informações de rastreio que retransmitem dados para o Cloud Trace depois de tomar uma decisão de amostragem. Por exemplo, pode usar o OpenTelemetry Collector com o Tail Sampling Processor para tomar uma decisão de amostragem atrasada.

Se planear usar a amostragem de cauda, considere o seguinte:

  • Tem de armazenar todos os intervalos num rastreio antes de tomar uma decisão de amostragem. Por conseguinte, pode precisar de uma grande quantidade de armazenamento temporário ou incorrer noutros custos gerais.
  • Em geral, todos os componentes que podem gerar intervalos para o rastreio têm de ser coordenados. Normalmente, os programadores que usam o OpenTelemetry encaminham todos os intervalos para o mesmo ID de rastreio para o mesmo coletor.

Amostragem e Google Cloud serviços

Cada serviço Google Cloud toma as suas próprias decisões de amostragem e nem todos os Google Cloud serviços fazem amostragem. Ou seja, um serviço pode nunca enviar dados para o Cloud Trace.

Quando a amostragem é suportada por um Google Cloud serviço, esse serviço implementa normalmente o seguinte:

  • Uma taxa de amostragem predefinida.
  • Um mecanismo para usar a decisão de amostragem do elemento principal como uma sugestão sobre se deve amostrar o intervalo.
  • Taxa de amostragem máxima.

Para pedir que um Google Cloud serviço adicione suporte para amostragem, use o Google Issue Tracker.

O que se segue?