Com rastros, você pode observar as requisições à medida que se movem de um serviço para outro em um sistema distribuído. Rastreamento é muito útil tanto para análises de alto nível quanto para análises aprofundadas de sistemas.
Contudo, se a grande maioria das suas requisições é bem-sucedida e termina com uma latência aceitável e sem erros, você não precisa de 100% dos seus rastros para observar de forma significativa suas aplicações e sistemas. Você só precisa da amostragem correta.
É importante usar uma terminologia consistente ao discutir amostragem. Um rastro ou trecho é considerado “amostrado” (sampled) ou “não amostrado” (not sampled):
Às vezes, as definições desses termos se confundem. Você pode encontrar alguém dizendo que está “amostrando dados” ou que os dados não processados ou exportados são considerados “amostrados”. Essas afirmações estão incorretas.
A amostragem é uma das formas mais eficazes de reduzir os custos de observabilidade sem perder visibilidade. Embora existam outras maneiras de reduzir custos, como filtrar ou agregar dados, esses outros métodos não aderem ao conceito de representatividade, que é crucial ao realizar análises aprofundadas do comportamento de aplicações ou sistemas.
Representatividade é o princípio de que um grupo menor pode representar com precisão um grupo maior. Além disso, a representatividade pode ser verificada matematicamente, o que significa que você pode ter alta confiança de que uma amostra menor de dados representa com precisão o grupo maior.
Além disso, quanto mais dados você gera, menos dados você realmente precisa para ter uma amostra representativa. Para sistemas de alto volume, é muito comum que uma taxa de amostragem de 1% ou menos represente com bastante precisão os outros 99% dos dados.
Considere usar amostragem se você atender a qualquer um dos seguintes critérios:
Por fim, considere seu orçamento em geral. Se você tem um orçamento limitado para observabilidade, mas pode dedicar tempo para realizar uma amostragem eficaz, então a amostragem geralmente vale a pena.
A amostragem pode não servir para você. Você talvez queira evitar a amostragem se atender a qualquer um dos seguintes critérios:
Por fim, considere os seguintes três custos associados à amostragem:
A amostragem, embora eficaz na redução dos custos de observabilidade, pode introduzir outros custos inesperados se não for realizada corretamente. Poderia ser mais barato alocar mais recursos para observabilidade, seja através de um fornecedor ou com recursos computacionais em hospedagem própria, dependendo do seu backend de observabilidade, da natureza dos seus dados e das suas tentativas de realizar amostragem de forma eficaz.
A amostragem pela cabeça (head sampling) é uma técnica de amostragem usada para tomar uma decisão de amostragem o mais cedo possível. A decisão de amostrar ou descartar um trecho ou um rastro não é feita inspecionando o rastro como um todo.
Por exemplo, a forma mais comum de amostragem pela cabeça é a Amostragem de Probabilidade Consistente. Isso também é conhecido como Amostragem Determinística. Neste caso, uma decisão de amostragem é tomada com base no ID do rastro e na porcentagem desejada de rastros a serem amostrados. Isso garante que rastros inteiros sejam amostrados - sem trechos faltantes - a uma taxa consistente, como 5% de todos os rastros.
As vantagens da amostragem pela cabeça são:
A principal desvantagem da amostragem pela cabeça é que não é possível tomar uma decisão de amostragem com base nos dados do rastro inteiro. Por exemplo, você não pode garantir que todos os rastros com um erro sejam amostrados apenas com a amostragem pela cabeça. Para essa situação e muitas outras, você precisa da amostragem pela cauda.
A amostragem pela cauda (tail sampling) é onde a decisão de amostrar um rastro acontece considerando todos ou a maioria dos trechos dentro do rastro. A Amostragem de Cauda oferece a opção de amostrar seus rastros com base em critérios específicos derivados de diferentes partes de um rastro, o que não é uma opção com a Amostragem pela Cabeça.
Alguns exemplos de como você pode usar a Amostragem pela Cauda incluem:
Como você pode ver, a amostragem pela cauda permite um grau muito maior de sofisticação na forma como você amostra os dados. Para sistemas maiores que devem amostrar telemetria, é quase sempre necessário usar a Amostragem pela Cauda para equilibrar o volume de dados com a utilidade desses dados.
Existem três principais desvantagens na amostragem pela cauda atualmente:
Por fim, para alguns sistemas, a amostragem pela cauda pode ser usada em conjunto com a Amostragem pela Cabeça. Por exemplo, um conjunto de serviços que produz um volume extremamente alto de dados de rastreamento pode primeiro usar a amostragem pela cabeça para amostrar apenas uma pequena porcentagem dos rastros e, posteriormente, no pipeline de telemetria usar a amostragem pela cauda para tomar decisões de amostragem mais sofisticadas antes de exportar para um backend. Isso é frequentemente feito com o intuito de proteger o pipeline de telemetria contra sobrecarga.
O OpenTelemetry Collector inclui os seguintes processadores de amostragem:
Para as implementações específicas de cada linguagem da API e SDK do OpenTelemetry, você vai encontrar suporte para amostragem nas respectivas páginas de documentação:
Muitos fornecedores oferecem soluções abrangentes de amostragem que incorporam amostragem pela cabeça, amostragem pela cauda e outros recursos que podem atender a necessidades sofisticadas de amostragem. Essas soluções também podem ser otimizadas especificamente para o backend do fornecedor. Se você está enviando telemetria para um fornecedor, considere usar as soluções de amostragem deles.
Was this page helpful?
Thank you. Your feedback is appreciated!
Please let us know how we can improve this page. Your feedback is appreciated!