Embora a configuração de amostragem padrão funcione para todos os serviços, ela pode não ser a ideal. Os agentes de APM fornecem opções de configuração de amostragem para que você possa personalizar a amostragem de acordo com as necessidades do seu serviço. Esta página apresenta alguns exemplos reais de diferentes tipos de serviços e como você pode modificar a configuração de amostragem para atender a essas necessidades.
Os exemplos de configuração nesta página usam o formato YAML (agente Java). Para a sintaxe equivalente em sua linguagem e a referência completa do parâmetro, consulte a documentação do seu agente:
- Configuração distributed tracing do agente Java
- Configuração de distributed tracing do agente Node.js
- Configuração distributed tracing do agente Python
Pré-requisitos
Este guia pressupõe familiaridade com os contextos e tipos de amostradores. Visite a página Configurar amostragem para obter uma visão geral completa dos conceitos de amostrador.
Exemplo 1: má distribuição de endpoints capturados devido a endpoints raramente chamados
O amostrador padrão, o amostrador adaptativo, amostra cerca de 10 traces por minuto para a maioria dos agentes de linguagem do APM. Como o amostrador adaptativo escolhe traces aleatoriamente, é mais provável que ele amostre endpoints chamados frequentemente do que endpoints chamados com pouca frequência.
Solução: aumentar o destino da amostragem adaptativa
Aumentar o adaptive_sampling_target amostra mais traces a cada minuto, aumentando a probabilidade de capturar traces para endpoints pouco frequentes.
distributed_tracing: sampler: adaptive_sampling_target: 20 # Increase from default 10 to 20Exemplo 2: má distribuição de endpoints capturados devido à amostragem upstream
Com o amostrador adaptativo padrão, o serviço atual também faz a amostragem de qualquer trace de entrada que um serviço upstream já tenha amostrado. Às vezes, isso leva a muitos traces de endpoints com um pai upstream e a poucos traces de outros endpoints.
Solução: reduza a taxa de amostragem para traces amostrados por um serviço upstream
O amostrador baseado na proporção de ID do trace pode ser usado para amostrar traces amostrados em upstream apenas 10% do tempo. Isso reduz a probabilidade de preencher o reservatório de spans com traces que foram amostrados por um serviço upstream.
distributed_tracing: sampler: remote_parent_sampled: trace_id_ratio_based: ratio: 0.1Exemplo 3: alterar a distribuição de trace para todos os contextos
O Exemplo 2 — muitos traces amostrados em upstream — é um caso específico de um problema mais geral: deseja-se mais controle sobre a distribuição de traces observada em todos os contextos do trace.
Solução: sobrepor vários amostradores de proporção
Podemos desenvolver o exemplo anterior sobrepondo vários amostradores de proporção de trace. A taxa de amostragem de cada contexto do trace é independente, portanto, cada proporção pode ser ajustada para atingir a distribuição desejada de traces.
Neste exemplo, todo contexto do trace usa amostragem baseada em proporção. As proporções são definidas para amostrar 25% de root traces (em vez de um número fixo), 50% dos traces amostrados por um serviço upstream (em vez de todos eles) e 5% dos traces não amostrados por um serviço upstream (em vez de nenhum deles).
distributed_tracing: sampler: root: trace_id_ratio_based: ratio: 0.25 remote_parent_sampled: trace_id_ratio_based: ratio: 0.5 remote_parent_not_sampled: trace_id_ratio_based: ratio: 0.05Qual é o próximo
- Consulte a referência completa de configuração do amostrador para o seu agente: Java, Node.js, Python
- Compreender a configuração de amostragem para tipos de amostrador e destinos de amostragem adaptativa