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 Go
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
Você pode especificar a configuração do X-Ray SDK for Go por meio de variáveis de ambiente, Configure chamando com Config um objeto ou assumindo valores padrão. As variáveis de ambiente têm prioridade sobre os valores de Config, que têm precedência sobre qualquer valor padrão.
Plug-ins de serviço
Use plugins para registrar informações sobre o serviço que hospeda o aplicativo.
Plugins
Amazon EC2 —
EC2Pluginadiciona o ID da instância, a zona de disponibilidade e o grupo de CloudWatch registros.Elastic Beanstalk: o
ElasticBeanstalkPluginadiciona o nome do ambiente, o rótulo da versão e o ID de implantação.Amazon ECS: o
ECSPluginadiciona o ID do contêiner.
Para usar um plug-in, importe um dos seguintes pacotes.
"github.com/aws/aws-xray-sdk-go/awsplugins/ec2"
"github.com/aws/aws-xray-sdk-go/awsplugins/ecs"
"github.com/aws/aws-xray-sdk-go/awsplugins/beanstalk"
Cada plug-in tem uma chamada de função Init() explícita que carrega o plug-in.
exemplo ec2.Init()
import (
"os"
"github.com/aws/aws-xray-sdk-go/awsplugins/ec2"
"github.com/aws/aws-xray-sdk-go/xray"
)
func init() {
// conditionally load plugin
if os.Getenv("ENVIRONMENT") == "production" {
ec2.Init()
}
xray.Configure(xray.Config{
ServiceVersion: "1.2.3",
})
}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.
Ativado AWS Lambda, você não pode modificar a taxa de amostragem. Se sua função for chamada por um serviço instrumentado, as chamadas que geraram solicitações que foram amostradas por esse serviço serão registradas pelo Lambda. Se o rastreamento ativo estiver habilitado e nenhum cabeçalho de rastreamento estiver presente, o Lambda tomará a decisão de amostragem.
Para fornecer regras de backup, aponte para o arquivo JSON de amostragem local usando o NewCentralizedStrategyWithFilePath.
exemplo main.go: regra de amostragem local
s, _ := sampling.NewCentralizedStrategyWithFilePath("sampling.json") // path to local sampling json
xray.Configure(xray.Config{SamplingStrategy: s})Para usar somente regras locais, aponte para o arquivo JSON de amostragem local usando o NewLocalizedStrategyFromFilePath.
exemplo main.go: desabilitar a amostragem
s, _ := sampling.NewLocalizedStrategyFromFilePath("sampling.json") // path to local sampling json
xray.Configure(xray.Config{SamplingStrategy: s})Registro em log
nota
Os campos xray.Config{} LogLevel e LogFormat estão defasados a partir da versão 1.0.0-rc.10.
X-Ray usa a seguinte interface para registro. O registrador em log padrão grava em stdout em LogLevelInfo e acima.
type Logger interface {
Log(level LogLevel, msg fmt.Stringer)
}
const (
LogLevelDebug LogLevel = iota + 1
LogLevelInfo
LogLevelWarn
LogLevelError
)
exemplo escreva para io.Writer
xray.SetLogger(xraylog.NewDefaultLogger(os.Stderr, xraylog.LogLevelError))Variáveis de ambiente
Você pode usar variáveis de ambiente para configurar o X-Ray SDK for Go. O SDK é compatível com as variáveis a seguir.
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.
-
-
AWS_XRAY_TRACING_NAME: defina o nome do serviço que o SDK usa para segmentos. 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.
As variáveis de ambiente substituem os valores equivalentes definidos no código.
Usar Configure
Você também pode configurar o X-Ray SDK for Go usando Configure o método. Configureusa um argumento, um Config objeto, com os seguintes campos opcionais.
- DaemonAddr
-
Essa string especifica o host e a porta do X-Ray ouvinte daemon. Se não for especificado, X-Ray usa o valor da variável de
AWS_XRAY_DAEMON_ADDRESSambiente. Se esse valor não estiver definido, "127.0.0.1:2000" será usado. - ServiceVersion
-
Essa sequência de caracteres especifica a versão do serviço. Se não for especificado, X-Ray usa a string vazia (“”).
- SamplingStrategy
-
Esse objeto
SamplingStrategyespecifica quais de suas chamadas do aplicativo são rastreadas. Se não for especificado, X-Ray usa umLocalizedSamplingStrategy, que usa a estratégia conforme definido emxray/resources/DefaultSamplingRules.json. - StreamingStrategy
-
Esse
StreamingStrategyobjeto especifica se um segmento deve ser transmitido quando RequiresStreamingretorna verdadeiro. Se não for especificado, o X-Ray usará umaDefaultStreamingStrategyque transmitirá um segmento amostrado se o número de subsegmentos for maior que 20. - ExceptionFormattingStrategy
-
Esse objeto
ExceptionFormattingStrategyespecifica como você deseja lidar com várias exceções. Se não for especificado, X-Ray usa umDefaultExceptionFormattingStrategycom umXrayErrordo tipoerror, a mensagem de erro e o rastreamento de pilha.