Amostragem de rastreamento

Neste documento, apresentamos o conceito de amostragem, que se refere ao envio ou não de dados de um período ao Cloud Trace. Quando os dados de um período são enviados ao Cloud Trace, esse período é amostrado. Quando os dados de cada intervalo em um rastreamento são registrados, o rastreamento está completo. No entanto, os rastreamentos geralmente têm intervalos ausentes porque cada componente instrumentado em um sistema de rastreamento distribuído decide de forma independente se deve ou não gravar o intervalo que está processando.

Embora cada componente tome a própria decisão sobre se o período que está processando é amostrado, essa decisão pode ser influenciada pela decisão de amostragem do elemento pai. Por exemplo, suponha que cada componente tenha uma regra que diga: "se o período pai for amostrado, faça o mesmo com o período atual; caso contrário, faça a amostragem de 50% dos períodos". Nesse cenário, o seguinte é verdadeiro:

  • O intervalo raiz determina se todos os intervalos no trace são amostrados.
  • Quando o período raiz é coletado, todos os períodos no trace também são. Portanto, o rastreamento está concluído.

Os componentes podem transmitir a decisão de amostragem para o filho usando o contexto. Por exemplo, no cabeçalho traceparent do World Wide Web Consortium (W3C), a flag sampled armazena a decisão de amostragem do pai.

Não confunda amostragem com propagação de contexto. A amostragem se refere a se um componente registra dados sobre um período. A propagação de contexto se refere a se as informações sobre o período, como o ID do período, são transmitidas para componentes filhos.

Estratégias de amostragem

As decisões de amostragem podem ser baseadas no início ou no fim. Na amostragem baseada em cabeçalho, a decisão de amostragem é tomada quando a solicitação é recebida pelo componente que processa o intervalo. Na amostragem baseada em cauda, a decisão de amostragem é adiada até que todo o rastreamento esteja disponível.

Você pode encontrar a frase "amostragem de 100%" na documentação de sistemas de rastreamento distribuído. Essa frase pode se aplicar a um rastreamento ou a um componente. Quando aplicado a um rastreamento, significa que todos os períodos foram amostrados ou, equivalentemente, que o rastreamento está completo. Quando aplicado a um componente, significa que ele faz amostragem de cada intervalo processado.

Amostragem baseada em cabeçalho

Os samplers baseados em cabeçalho geralmente são configurados para sempre amostrar intervalos ou usar uma estratégia de amostragem probabilística:

  • Com as configurações de sempre fazer amostragem, todos os componentes que atendem a intervalos e podem gravar dados de rastreamento fazem amostragem dos intervalos que processam. O ideal é que todos os rastreamentos estejam completos e, portanto, você tenha as informações necessárias para resolver falhas. Esse tipo de configuração pode fazer com que você exceda as cotas ou os limites de custo de armazenamento.

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

Os rastreamentos podem não conter todos os períodos. Isso pode ser esperado devido ao uso da amostragem probabilística ou pode ser devido à cota ou a componentes que processam uma solicitação, mas não fazem amostragem do intervalo.

Amostragem baseada em cauda

O Cloud Trace não oferece suporte à amostragem baseada em cauda. As decisões de amostragem precisam ser tomadas nos componentes que enviam dados para o Cloud Trace.

Se você quiser usar a amostragem baseada em cauda, use um servidor intermediário que receba informações de rastreamento e retransmita 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 intervalos em um rastreamento antes de tomar uma decisão de amostragem. Portanto, talvez seja necessário uma grande quantidade de armazenamento temporário ou incorrer em outras sobrecargas.
  • Em geral, todos os componentes que podem gerar períodos para um trace precisam se coordenar. Normalmente, os desenvolvedores que usam o OpenTelemetry encaminham todos os intervalos do mesmo ID de rastreamento para o mesmo coletor.

Amostragem e serviços Google Cloud

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

Quando a amostragem é compatível com um serviço Google Cloud , ele geralmente implementa o seguinte:

  • Uma taxa de amostragem padrão.
  • Um mecanismo para usar a decisão de amostragem do pai como uma dica sobre se deve amostrar o período.
  • Taxa máxima de amostragem.

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

A seguir