Neste documento, apresentamos o conceito de amostragem, que se refere ao os dados de um período são enviados ao Cloud Trace. Quando os dados de um período é enviado ao Cloud Trace, esse período é amostrado. Quando os dados de cada período em um trace for gravado, o trace será concluído. No entanto, rastreia frequentemente não têm períodos porque cada componente instrumentado em um rastreamento distribuído sistema decide independentemente se deve ou não registrar período em que ele está sendo processado.
Embora cada componente decida se o período processamento é uma amostra, essa decisão pode ser influenciada pela a decisão de amostragem. Por exemplo, suponha que cada componente tenha uma regra que diz "se o período pai tiver amostragem, faça uma amostra do período atual; caso contrário, amostra de 50% dos períodos". Nesse cenário, as seguintes condições são verdadeiras:
- O período raiz determina se todos os períodos no trace são amostrados.
- Quando o período raiz é amostrado, todos os períodos no trace são amostrados. Portanto, até que o trace seja concluído.
Os componentes podem transmitir a decisão de amostragem para o filho usando o contexto.
Por exemplo, no World Wide Web Consortium (W3C)
Cabeçalho traceparent
,
a sinalização sampled
armazena a decisão de amostragem do elemento pai.
Não confunda amostragem com propagação de contexto. Amostragem se refere se um componente registra dados sobre um período. Propagação de contexto refere-se a se as informações sobre o período, como o ID do período, são passados para os componentes filhos.
Estratégias de amostragem
As decisões de amostragem podem ser baseadas na cabeça ou na cauda. Na amostragem baseada em dados, a decisão é tomada quando a solicitação é recebidos pelo componente que processa o período. Na amostragem baseada na cauda, a decisão de amostragem é atrasada até que todo o rastro esteja disponível.
Talvez você encontre a frase "Amostragem 100%" na documentação sistemas de rastreamento distribuído. Essa frase pode ser aplicada a um trace componente. Quando aplicado a um trace, significa que todos os períodos foram amostrados, ou equivalente, que o trace está concluído. Quando aplicada a um componente, isso significa que o componente cria amostras de cada período que processa.
Amostragem com base na cabeça
As amostras baseadas em cabeçalho geralmente são configuradas para sempre fazer a amostragem de períodos ou para usar uma estratégia de amostragem probabilística:
Com configurações sempre de exemplo, todos os componentes que podem gravar dados de trace, coletar amostras dos períodos que eles de desenvolvimento de software. O ideal é que todos os traces estejam concluídos, e, portanto, você tem as informações necessárias para solucionar falhas. Esse tipo de configuração pode fazer com que você exceda cotas, ou os limites de custo de armazenamento.
Com a amostragem probabilística, nem todos os períodos são amostrados. O comportamento real dessa abordagem depende na implementação do componente. Em algumas implementações, todos os períodos têm a mesma probabilidade de amostragem. Em outros, a decisão de amostragem o pai influencia a amostragem de um período.
Os traces podem não conter todos os períodos. Isso é esperado devido ao uso probabilística, devido à cota ou a componentes que processar uma solicitação, mas não criar uma amostra do período.
Amostragem baseada na cauda
O Cloud Trace não oferece suporte à amostragem baseada em cauda. amostragem as decisões precisam ser tomadas nos componentes que enviam dados ao Cloud Trace.
Se você quiser usar a amostragem baseada na cauda, use um intermediário servidor que recebe informações de rastreamento, que redireciona dados para o Cloud Trace depois de tomar uma decisão de amostragem. Por exemplo, é possível usar o coletor do OpenTelemetry com o processador de amostragem de cauda para tomar uma decisão de amostragem atrasada.
Se você planeja usar a amostragem de cauda, considere o seguinte:
- É necessário armazenar todos os períodos em um trace antes de decidir sobre a amostragem. Portanto, talvez você precise de uma grande quantidade de armazenamento temporário ou gerar outras despesas gerais.
- Em geral, todos os componentes que podem gerar períodos para o trace precisam coordenada. Normalmente, os desenvolvedores que usam o OpenTelemetry roteiam todos os períodos para o mesmo ID de trace para o mesmo coletor.
Amostragem e serviços do Google Cloud
Cada serviço do Google Cloud toma as próprias decisões de amostragem, e nem todos os serviços do Google Cloud. Ou seja, um serviço pode nunca enviar para o Cloud Trace.
Quando um serviço do Google Cloud oferece suporte à amostragem, esse serviço normalmente implementa o seguinte:
- Uma taxa de amostragem padrão.
- Um mecanismo para usar a decisão de amostragem do elemento pai como uma dica fazer uma amostra do período.
- Taxa de amostragem máxima.
Para solicitar que um serviço do Google Cloud adicione suporte para amostragem, use o Google Issue Tracker.
A seguir
Para uma discussão sobre como escolher uma estratégia de amostragem pelo nome do período, consulte Amostragem remota do Jaeger (em inglês).
Recomendamos que você analise a seguinte documentação de código aberto para ajudar você determina qual abordagem de amostragem é melhor para seu desenvolvimento e aplicativos implantados:
Documentação do serviço do Google Cloud: