As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Configurando a amostragem adaptativa
A falta de traços críticos durante picos de anomalias pode dificultar a análise da causa raiz. No entanto, manter altas taxas de amostragem é caro. A amostragem adaptativa X-Ray fornece visibilidade completa das anomalias e controla os custos durante as operações normais. Com a amostragem adaptativa, você define uma taxa máxima de amostragem e o X-Ray se ajusta automaticamente dentro desse limite. O X-Ray calcula o impulso mínimo necessário para capturar traços de erro. Se sua taxa básica capturar dados suficientes, nenhum aumento ocorrerá. Você só paga pela amostragem extra quando necessário.
Benefícios do uso da amostragem adaptativa:
Visibilidade completa do incidente — Obtenha rastreamentos completos durante os incidentes sem intervenção manual. O X-Ray ajusta automaticamente as taxas de amostragem para capturar traços de erro e, em seguida, retorna às taxas normais.
Visibilidade da causa raiz — sempre veja a origem dos problemas. O X-Ray captura dados de erro críticos mesmo quando a amostragem completa do traço não é acionada.
Otimize os custos — breves aumentos de amostragem (até 1 minuto) e períodos automáticos de resfriamento evitam a sobreamostragem. Você paga somente pelos dados necessários para diagnosticar problemas.
Tópicos
Plataformas SDKs e suporte
SDK compatível — A amostragem adaptável requer a versão mais recente do SDK ADOT.
Linguagem suportada — Java (versão v2.11.5
Seu aplicativo deve ser instrumentado com o SDK ADOT compatível e executado junto com o Amazon CloudWatch Agent ou o Collector. OpenTelemetry
Por exemplo, Amazon EC2, Amazon ECS e Amazon EKS são plataformas comuns nas quais o AWS Application Signals fornece orientação para habilitar o ADOT SDK e o Amazon Agent. CloudWatch
Escolha sua abordagem de amostragem adaptativa
A amostragem adaptativa suporta duas abordagens, Sampling Boost e Anomaly Span Capture. Eles podem ser aplicados de forma independente ou podem ser combinados.
Aumento de amostragem
O aumento adaptativo de amostragem é baseado em regras de amostragem e funciona com o modelo de amostragem baseado em X-Ray Head existente. A amostragem baseada em cabeçotes significa que as decisões de amostragem são tomadas no serviço raiz e o indicador de amostragem é passado a jusante para todos os serviços na cadeia de chamadas.
-
Aumento baseado em regras — O reforço está sempre vinculado a uma regra específica de amostragem de raio-X. Cada regra pode definir sua própria taxa máxima de aumento e comportamento de resfriamento.
-
Amostragem baseada em HEAD — As decisões de amostragem são tomadas no serviço raiz e o indicador de amostragem é passado a jusante para todos os serviços na cadeia de chamadas.
-
Orientado por anomalias — o X-Ray depende do SDK para relatar estatísticas de anomalias. Quando o X-Ray detecta anomalias, como erros ou alta latência, ele usa essas estatísticas para calcular uma taxa de aumento apropriada (até o máximo configurado).
Relatórios de anomalias
Cada serviço de aplicativo na cadeia de chamadas pode emitir estatísticas de anomalias por meio do SDK necessário:
-
Serviço raiz — deve ser executado em um SDK e uma plataforma compatíveis para permitir o aumento da amostragem. Se o serviço raiz não for suportado, nenhum aumento ocorrerá.
-
Serviços downstream — Os serviços downstream relatam apenas anomalias; eles não podem tomar decisões de amostragem. Quando um serviço downstream está executando um SDK compatível, as anomalias detectadas podem acionar um aumento na amostragem. Quando um serviço downstream não é suportado (por exemplo, executando um SDK antigo), anomalias nesse serviço não acionarão um aumento. Esses serviços ainda podem propagar o contexto a jusante quando seguem a propagação padrão do contexto (como contexto de rastreamento e bagagem do W3C). Isso garante que o suporte SDKs de outros serviços posteriores possa relatar anomalias que desencadeiem um aumento.
Aumente o tempo e o escopo
-
Atraso do gatilho — Você pode esperar que um aumento de amostragem comece em apenas 10 segundos após o X-Ray detectar uma anomalia.
-
Período de reforço — Depois que o X-Ray aciona um impulso, ele dura até 1 minuto antes de retornar à taxa básica de amostragem.
-
Aumento de resfriamento — Após a ocorrência de um impulso, o X-Ray não acionará outro impulso para a mesma regra até que a janela de resfriamento tenha passado.
Por exemplo, quando você define
cooldown
para 10 minutos, quando um impulso termina, nenhum novo impulso pode ser acionado até a próxima janela de 10 minutos.Caso especial: quando você define
cooldown
para 1 minuto, e como o impulso em si pode durar até 1 minuto, os impulsos podem ser acionados de forma eficaz e contínua se a anomalia persistir.
nota
Use plataformas SDKs e plataformas compatíveis para seu serviço raiz. O aumento de amostragem funciona apenas com plataformas SDKs e suportes. Embora o aumento da amostragem tenha uma alta probabilidade de capturar traços de anomalias, ele pode não capturar todos os traços de anomalia.
Aumente a visibilidade
Quando uma regra de amostragem é configurada com aumento de amostragem adaptável, o X-Ray emite automaticamente métricas fornecidas que permitem monitorar a atividade do impulso.
-
Nome da métrica —
SamplingRate
-
Dimensão —
RuleName
(definida como o nome real da regra)
Cada regra SamplingRateBoost
ativada publicará sua taxa de amostragem efetiva, incluindo a taxa básica e quaisquer aumentos temporários. Isso permite a você:
-
Monitore quando os impulsos são acionados
-
Monitore a taxa de amostragem efetiva para cada regra
-
Correlacione os aumentos com anomalias do aplicativo (como picos de erros ou eventos de latência)
Você pode visualizar essas métricas no Amazon CloudWatch Metrics, no namespace AWS/X-Ray. O valor métrico é um número de ponto flutuante entre 0 e 1, representando a taxa de amostragem efetiva.
Configure o aumento de amostragem usando as regras de amostragem de X-Ray
Você pode ativar a amostragem adaptativa diretamente nas regras existentes de amostragem do X-Ray adicionando um novo campo. SamplingRateBoost
Para obter mais informações, consulte Personalização das regras de amostragem. Isso fornece uma maneira centralizada de permitir a amostragem adaptativa sem modificar o código do aplicativo ou aplicar a implantação do aplicativo. Quando você ativa a amostragem adaptativa, o X-Ray aumenta automaticamente a amostragem durante anomalias, como picos de erro ou valores discrepantes de latência, enquanto mantém as taxas de amostragem dentro do máximo configurado. SamplingRateBoost
pode ser aplicado a qualquer regra de amostragem personalizada, exceto a regra de Default
amostragem.
O SamplingRateBoost
campo define o limite superior e o comportamento da amostragem baseada em anomalias.
"SamplingRateBoost": { "MaxRate": 0.25, "CooldownWindowMinutes": 10 }
MaxRate
Define a taxa máxima de amostragem que o X-Ray aplicará ao detectar anomalias. A faixa de valores é 0.0
1.0
a. Por exemplo, "MaxRate": 0.25
permite que a amostragem aumente em até 25% das solicitações durante uma janela de anomalia. O X-Ray determina a taxa apropriada entre sua linha de base e a máxima, dependendo da atividade da anomalia.
CooldownWindowMinutes
Define a janela de tempo (em minutos) na qual apenas um aumento na taxa de amostragem pode ser acionado. Depois que um aumento ocorre, nenhum aumento adicional é permitido até a próxima janela. O tipo de valor é inteiro (minutos).
Exemplo de regra com amostragem adaptativa
{ "RuleName": "MyAdaptiveRule", "Priority": 1, "ReservoirSize": 1, "FixedRate": 0.05, "ServiceName": "*", "ServiceType": "*", "Host": "*", "HTTPMethod": "*", "URLPath": "*", "SamplingRateBoost": { "MaxRate": 0.25, "CooldownWindowMinutes": 10 } }
Neste exemplo, a amostragem de linha de base é 5% ()FixedRate: 0.05
. Durante anomalias, o X-Ray pode aumentar a amostragem em até 25% (). MaxRate: 0.25
Aumente apenas uma vez a cada 10 minutos.
Configuração da condição de anomalia
Quando nenhuma configuração de condição de anomalia é fornecida, o SDK ADOT usa códigos de erro HTTP 5xx como condição de anomalia padrão para acionar o aumento da amostragem.
Você também pode ajustar as condições de anomalia localmente no SDK ADOT compatível usando variáveis de ambiente. Para obter mais informações, consulte Configuração do SDK local.
Captura de intervalos de anomalias
A captura da amplitude de anomalias garante que as extensões críticas que representam anomalias sejam sempre registradas, mesmo que o traço completo não seja amostrado. Esse recurso complementa o aumento da amostragem, concentrando-se na captura da anomalia em si, em vez de aumentar a amostragem para futuros traços.
Quando o SDK ADOT detecta uma anomalia, ele emite esse intervalo imediatamente, independentemente da decisão de amostragem. Como o SDK emite apenas extensões relacionadas à anomalia, esses rastreamentos são parciais, não transações completas. end-to-end
Depois que o ADOT SDK detecta uma extensão de anomalia, ele tenta emitir o maior número possível de extensões do mesmo rastreamento. Todos os intervalos emitidos sob esse recurso são marcados com o atributo,. aws.trace.flag.sampled = 0
Isso permite distinguir facilmente traços parciais (captura de anomalias) de traços completos (amostragem normal) na pesquisa e análise de transações.
Recomendamos a integração da Pesquisa de Transações para visualizar e consultar rastreamentos parciais. O exemplo a seguir mostra uma página de serviço no console do Application Signals. O ServiceC é configurado com captura de amplitude de anomalias e faz parte de uma cadeia de chamadas em que o aumento da amostragem se aplica. Essas configurações geram rastreamentos completos e parciais. Você pode usar o aws.trace.flag.sampled
atributo para distinguir entre os tipos de rastreamento.

A captura de extensões de anomalias só pode ser ativada ou personalizada por meio do. Configuração do SDK local
Configuração do SDK local
Você pode configurar recursos de amostragem adaptativa no SDK ADOT fornecendo uma configuração YAML por meio de uma variável de ambiente. A configuração local fornece controle refinado sobre condições e limites de anomalias.
Isso é necessário para a captura da amplitude de anomalias e opcional para personalizar as condições de aumento de amostragem. Veja a seguir um exemplo da configuração:
version: 1.0 anomalyConditions: - errorCodeRegex: "^5\\d\\d$" usage: both - operations: - "/api" errorCodeRegex: "^429|5\\d\\d$" highLatencyMs: 300 usage: sampling-boost - highLatencyMs: 1000 usage: anomaly-span-capture anomalyCaptureLimit: anomalyTracesPerSecond: 1
As definições de campo estão abaixo:
-
version
— Versão do esquema para o arquivo de configuração -
anomalyConditions
— Define as condições sob as quais as anomalias são detectadas e como elas são usadas-
errorCodeRegex
— Expressão regular que define quais códigos de status HTTP são considerados anomalias -
operations
— Lista de operações ou pontos finais aos quais a condição se aplica -
highLatencyMs
— Limite de latência (em milissegundos) acima do qual os intervalos são tratados como anomalias -
usage
— Define a qual recurso a condição se aplica:-
both
— Aplica-se ao aumento de amostragem e à captura de amplitude de anomalias (padrão se o uso não for especificado) -
sampling-boost
— Usado apenas para acionar aumentos de amostragem -
anomaly-span-capture
— Usado somente para captura de amplitude de anomalias
-
-
-
anomalyCaptureLimit
— Define os limites de quantos traços com extensões de anomalia são emitidos.anomalyTracesPerSecond
— Número máximo de traços com extensões de anomalias capturadas por segundo, para evitar um volume excessivo de extensão (o valor padrão é 1 se não anomalyCaptureLimit estiver presente).
nota
-
AnomalyConditions
substitui a condição de anomalia padrão para aumento de amostragem (HTTP 5xx). Se você quiser manter a condição padrão ao usar a configuração local, deverá incluí-la explicitamente em qualquer item doAnomalyConditions
. -
Para cada
anomalyConditions
item:-
Quando o
operations
campo é omitido, a condição se aplica a todas as operações (nível de serviço) -
Quando o
operations
campo está presente, mas definido como uma lista vazia, a condição não se aplica a nenhuma operação, tornando esse item um item autônomo Quando ambos
errorCodeRegex
highLatencyMs
são omitidos, a condição não tem critérios de anomalia a serem avaliados, tornando esse item um item autônomo
-
-
Relações lógicas:
-
Entre os itens em
anomalyConditions
, o relacionamento é OR. -
Em um único item, vários campos (por exemplo,
errorCodeRegex
ehighLatencyMs
) são combinados com AND.Por exemplo:
errorCodeRegex: "^429|5\\d\\d$" highLatencyMs: 300
Essa condição significa que o código de status corresponde a 429 ou 5xx e a latência é ≥ 300 ms.
-
Aplique a configuração local ao ADOT SDK
Você pode aplicar a configuração local ao SDK ADOT definindo a variável de ambiente. AWS_XRAY_ADAPTIVE_SAMPLING_CONFIG
O valor deve ser um documento YAML válido (embutido ou aninhado).
Por exemplo, Amazon EC2 e Amazon ECS, definam a variável de ambiente diretamente:
AWS_XRAY_ADAPTIVE_SAMPLING_CONFIG="{version: 1.0, anomalyConditions: [{errorCodeRegex: \"^500$\", usage: \"sampling-boost\"}, {errorCodeRegex: \"^501$\", usage: \"anomaly-trace-capture\"}], anomalyCaptureLimit: {anomalyTracesPerSecond: 10}}"
Para o Amazon EKS, defina a variável de ambiente dentro da especificação do pod como YAML aninhado:
apiVersion: v1 kind: Pod metadata: name: adot-sample spec: containers: - name: adot-app image: my-app:latest env: - name: AWS_XRAY_ADAPTIVE_SAMPLING_CONFIG value: | version: 1.0 anomalyConditions: - errorCodeRegex: "^500$" usage: sampling-boost - errorCodeRegex: "^501$" usage: anomaly-trace-capture anomalyCaptureLimit: anomalyTracesPerSecond: 10