Amostragem de rastreamento

A amostragem de rastreamento determina quais solicitações e intervalos o Cloud Trace ingere, ajudando você a controlar os custos de armazenamento e ficar dentro das cotas enquanto captura dados suficientes para resolver problemas de desempenho. Para gerenciar grandes volumes de solicitações, os componentes em um sistema de rastreamento distribuído geralmente fazem amostragem apenas de um subconjunto de rastreamentos ou seguem as decisões de amostragem dos intervalos principais.

A amostragem é diferente da propagação de contexto: a amostragem controla se um componente registra dados de extensão, enquanto a propagação de contexto transmite identificadores de rastreamento entre componentes para que os intervalos amostrados possam ser vinculados.

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 intervalos 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 fazer amostragem de intervalos ou usar uma estratégia de amostragem probabilística:

  • Com as configurações de sempre fazer amostragem, os componentes que processam e gravam dados de trace fazem amostragem de cada período. O ideal é que todos os rastreamentos estejam completos e, portanto, você tenha as informações necessárias para resolver falhas. No entanto, uma configuração de amostragem sempre ativa 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.

Um trace pode não conter todos os períodos. Se você usar a amostragem probabilística, exceder a cota ou usar componentes que processam, mas não amostram intervalos, é esperado que os rastreamentos estejam incompletos.

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ê usa a amostragem baseada em cauda, também pode usar um servidor intermediário para receber dados de rastreamento, avaliar decisões de amostragem e retransmitir intervalos amostrados para o Trace. Por exemplo, é possível usar um 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 intervalos para um rastreamento precisam coordenar. Normalmente, os desenvolvedores que usam o OpenTelemetry encaminham todos os intervalos do mesmo ID de rastreamento para o mesmo coletor.

Os componentes tomam decisões de amostragem

Cada componente toma a própria decisão sobre se deve fazer amostragem do intervalo que está processando. No entanto, a decisão de amostragem do pai, que pode estar disponível para o componente pelo contexto de traces, pode influenciar a decisão do componente. Os aplicativos que usam o cabeçalho traceparent podem transmitir a decisão de amostragem do pai usando a flag sampled.

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 é amostrado, todos os períodos no trace também são. Portanto, o rastreamento está completo.

Serviços de amostragem e 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 , esse serviço normalmente 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 de amostragem máxima.

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

A seguir