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 o X-Ray SDK para Ruby
nota
X-Ray SDK/Daemon Aviso de manutenção — Em 25 de fevereiro de 2026, AWS X-Ray SDKs/Daemon ele entrará no modo de manutenção, onde AWS limitará os lançamentos do X-Ray SDK e do Daemon para tratar apenas de problemas de segurança. Para obter mais informações sobre a linha do tempo do suporte, consulte Cronograma de suporte do X-Ray SDK e do Daemon Support. Recomendamos migrar para o. OpenTelemetry Para obter mais informações sobre como migrar para OpenTelemetry, consulte Migração da X-Ray instrumentação para a instrumentação. OpenTelemetry
O X-Ray SDK for Ruby tem uma XRay.recorder classe chamada que fornece o gravador global. Você pode configurar o gravador global para personalizar o middleware que cria segmentos para chamadas HTTP de entrada.
Seções
Plug-ins de serviço
Use plugins para registrar informações sobre o serviço que hospeda o aplicativo.
Plugins
-
Amazon EC2: o
ec2adiciona o ID de instância e a zona de disponibilidade. -
Elastic Beanstalk: o
elastic_beanstalkadiciona o nome do ambiente, o rótulo da versão e o ID de implantação. -
Amazon ECS: o
ecsadiciona o ID do contêiner.
Para usar plug-ins, você deve especificá-los no objeto de configuração que passa ao gravador.
exemplo main.rb: configuração do plug-in
my_plugins = %I[ec2 elastic_beanstalk]
config = {
plugins: my_plugins,
name: 'my app',
}
XRay.recorder.configure(config)Você também pode usar variáveis de ambiente, que têm precedência sobre valores definidos no código, para configurar o gravador.
O SDK também usa as configurações do plug-in para definir o campo origin no segmento. Isso indica o tipo de AWS recurso que executa seu aplicativo. Quando você usa vários plug-ins, o SDK usa a seguinte ordem de resolução para determinar a origem: ElasticBeanstalk > EKS > ECS > EC2.
Regras de amostragem
O SDK usa as regras de amostragem que você define no X-Ray console para determinar quais solicitações devem ser registradas. A regra padrão rastreia a primeira solicitação a cada segundo e cinco por cento de todas as solicitações adicionais em todos os serviços que enviam rastreamentos para X-Ray. Crie regras adicionais no X-Ray console para personalizar a quantidade de dados gravados para cada um dos seus aplicativos.
O SDK aplica regras personalizadas na ordem em que elas estão definidas. Se uma solicitação corresponder a várias regras personalizadas, o SDK aplicará somente a primeira regra.
nota
Se o SDK não conseguir X-Ray obter regras de amostragem, ele reverte para uma regra local padrão da primeira solicitação a cada segundo e cinco por cento de todas as solicitações adicionais por host. Isso pode ocorrer se o host não tiver permissão para chamar APIs de amostragem ou não conseguir se conectar ao X-Ray daemon, que atua como um proxy TCP para chamadas de API feitas pelo SDK.
Você também pode configurar o SDK para carregar regras de amostragem de um documento JSON. O SDK pode usar regras locais como backup para casos em que a X-Ray amostragem não está disponível ou usar regras locais exclusivamente.
exemplo sampling-rules.json
{
"version": 2,
"rules": [
{
"description": "Player moves.",
"host": "*",
"http_method": "*",
"url_path": "/api/move/*",
"fixed_target": 0,
"rate": 0.05
}
],
"default": {
"fixed_target": 1,
"rate": 0.1
}
}Este exemplo define uma regra personalizada e uma regra padrão. A regra personalizada aplica uma taxa de amostragem de 5% sem um número mínimo de solicitações para rastrear os caminhos em /api/move/. A regra padrão rastreia a primeira solicitação a cada segundo e 10% das solicitações adicionais.
A desvantagem de definir regras localmente é que o alvo fixo é aplicado por cada instância do gravador de forma independente, em vez de ser gerenciado pelo X-Ray serviço. À medida que você implanta mais hosts, a taxa fixa é multiplicada, dificultando o controle da quantidade de dados registrados.
Para configurar regras de backup, defina um hash para o documento no objeto de configuração que você passa para o gravador.
exemplo main.rb: configuração da regra de backup
require 'aws-xray-sdk'
my_sampling_rules = {
version: 1,
default: {
fixed_target: 1,
rate: 0.1
}
}
config = {
sampling_rules: my_sampling_rules,
name: 'my app',
}
XRay.recorder.configure(config)Para armazenar as regras de amostragem de forma independente, defina o hash em um arquivo separado e exija que o arquivo o inclua em seu aplicativo.
exemplo config/sampling-rules.rb
my_sampling_rules = {
version: 1,
default: {
fixed_target: 1,
rate: 0.1
}
}exemplo main.rb: regra de amostragem de um arquivo
require 'aws-xray-sdk'
require 'config/sampling-rules.rb'
config = {
sampling_rules: my_sampling_rules,
name: 'my app',
}
XRay.recorder.configure(config)Para usar apenas regras locais, exija as regras de amostragem e configure o LocalSampler.
exemplo main.rb: amostragem de regra local
require 'aws-xray-sdk' require 'aws-xray-sdk/sampling/local/sampler' config = { sampler: LocalSampler.new, name: 'my app', } XRay.recorder.configure(config)
Você também pode configurar o gravador global para desabilitar a amostragem e instrumentar todas as solicitações de entrada.
exemplo main.rb: desabilitar a amostragem
require 'aws-xray-sdk'
config = {
sampling: false,
name: 'my app',
}
XRay.recorder.configure(config)Registro em log
Por padrão, o gravador encaminha os eventos informativos para $stdout. Você pode personalizar o registro em log definindo um registrador
exemplo main.rb: registrar em log
require 'aws-xray-sdk'
config = {
logger: my_logger,
name: 'my app',
}
XRay.recorder.configure(config)Use logs de depuração para identificar problemas como subsegmentos não fechados ao gerar subsegmentos manualmente.
Configuração do gravador no código
Configurações adicionais estão disponíveis no método configure no XRay.recorder.
-
context_missing: defina comoLOG_ERRORpara evitar o lançamento de exceções, caso o código instrumentado tente registrar dados quando nenhum segmento estiver aberto. -
daemon_address— Defina o host e a porta do X-Ray daemon listener. -
name: defina um nome de serviço para o SDK usar para segmentos. -
naming_pattern: defina um nome de domínio padrão para usar a nomeação dinâmica. -
plugins: registre informações sobre os recursos da AWS de sua aplicação com plug-ins. -
sampling: defina comofalsepara desabilitar a amostragem. -
sampling_rules: defina o hash que contém suas regras de amostragem.
exemplo main.rb: desabilitar exceções de contexto ausente
require 'aws-xray-sdk'
config = {
context_missing: 'LOG_ERROR'
}
XRay.recorder.configure(config)Configuração do gravador com o rails
Se você usa o framework do Rails, pode configurar as opções do gravador global em um arquivo Ruby em app_root/initializers. O X-Ray SDK suporta uma chave de configuração adicional para uso com o Rails.
-
active_record: defina comotruepara registrar os subsegmentos das transações de banco de dados de registros ativos.
Defina as configurações disponíveis em um objeto de configuração denominado Rails.application.config.xray.
exemplo config/initializers/aws_xray.rb
Rails.application.config.xray = {
name: 'my app',
patch: %I[net_http aws_sdk],
active_record: true
}Variáveis de ambiente
Você pode usar variáveis de ambiente para configurar o X-Ray SDK for Ruby. O SDK é compatível com as seguintes variáveis:
-
AWS_XRAY_TRACING_NAME: defina um nome de serviço para o SDK usar para segmentos. Sobrepõe o nome do serviço que você definiu na estratégia de nomeação de segmentos do filtro do servlet. AWS_XRAY_DAEMON_ADDRESS— Defina o host e a porta do X-Ray daemon listener. Por padrão, o SDK envia dados de rastreamento para127.0.0.1:2000. Use essa variável se você tiver configurado o daemon para escutar em uma porta diferente ou se ele estiver sendo executado em um host diferente.AWS_XRAY_CONTEXT_MISSING: defina comoRUNTIME_ERRORpara lançar exceções, caso o código instrumentado tente registrar dados quando nenhum segmento estiver aberto.Valores válidos
-
RUNTIME_ERROR: lance uma exceção de tempo de execução. -
LOG_ERROR: registre um erro e continue (padrão). -
IGNORE_ERROR: ignore o erro e continue.
Erros relativos a segmentos ou subsegmentos ausentes poderão ocorrer quando você tentar usar um cliente instrumentado no código de inicialização que é executado quando nenhuma solicitação estiver aberta ou em um código que gere um novo thread.
-
As variáveis de ambiente substituem os valores definidos no código.