Amostragem de rastreamento

A amostragem de traces determina quais solicitações e períodos o Cloud Trace ingere, ajudando você a controlar os custos de armazenamento e a permanecer dentro das cotas, enquanto captura dados suficientes para solucionar problemas de desempenho do aplicativo. Quando cada período em uma solicitação de ponta a ponta é gravado, o trace é concluído. No entanto, para gerenciar grandes volumes de solicitações, os componentes em um sistema de rastreamento distribuído normalmente amostram apenas um subconjunto de traces ou seguem as decisões de amostragem de períodos pai.

A amostragem é diferente da propagação de contexto. A amostragem controla se um componente grava dados de período. Em contraste, a propagação de contexto transmite identificadores de trace entre componentes para que os períodos amostrados possam ser vinculados.

Estratégias de amostragem

As decisões de amostragem podem ser baseadas na cabeça ou na cauda. Na amostragem baseada na cabeça, a decisão de amostragem é tomada quando a solicitação é recebida pelo componente que processa o período. Na amostragem baseada na cauda, a decisão de amostragem é atrasada até que o trace inteiro 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 trace ou a um componente. Quando aplicada a um trace, significa que todos os períodos foram amostrados ou, equivalentemente, que o trace está completo. Quando aplicada a um componente, significa que o componente amostra todos os períodos que processa.

Amostragem baseada na cabeça

Os amostradores baseados na cabeça normalmente são configurados para sempre amostrar períodos ou usar uma estratégia de amostragem probabilística:

  • Com as configurações de amostragem sempre, os componentes que processam e gravam dados de trace amostram todos os períodos. O ideal é que todos os traces estejam completos e, portanto, você tenha as informações necessárias para solucionar falhas. No entanto, uma configuração de amostragem sempre 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 da implementação do componente. Em algumas implementações, todos os períodos têm a mesma probabilidade de serem amostrados. Em outras, 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 períodos, os traces incompletos serão esperados.

Amostragem baseada na cauda

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

Se você usar a amostragem baseada na cauda, também poderá usar um servidor intermediário para receber dados de trace, avaliar decisões de amostragem e retransmitir períodos amostrados para o Trace. Por exemplo, é possível usar um OpenTelemetry Collector 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 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 ser coordenados. Normalmente, os desenvolvedores que usam o OpenTelemetry encaminham todos os períodos do mesmo ID de trace para o mesmo coletor.

Os componentes tomam decisões de amostragem

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

Por exemplo, suponha que cada componente tenha uma regra que diga "se o período pai for amostrado, amostre o período atual; caso contrário, amostre 50% dos períodos". Nesse cenário, o seguinte é verdadeiro:

  • 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, o trace está completo.

Amostragem e Google Cloud serviços

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

Quando a amostragem é compatível com um Google Cloud serviço, 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 máxima de amostragem.

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

A seguir