Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Configurazione dell' X-Ray SDK for Go
Nota
X-Ray SDK/Daemon Avviso di manutenzione: il 25 febbraio 2026, AWS X-Ray SDKs/Daemon entrerà in modalità di manutenzione, in cui AWS verranno limitate le versioni di X-Ray SDK e Daemon per risolvere solo problemi di sicurezza. Per ulteriori informazioni sulla tempistica del supporto, consulta. Cronologia di X-Ray SDK e Daemon Support Ti consigliamo di migrare a. OpenTelemetry Per ulteriori informazioni sulla migrazione a OpenTelemetry, consulta Migrazione da X-Ray strumentazione a strumentazione. OpenTelemetry
Puoi specificare la configurazione per X-Ray SDK for Go tramite variabili di ambiente, Configure chiamando con Config un oggetto o assumendo valori predefiniti. Le variabili di ambiente prevalgono sui valori di Config, che hanno la priorità su qualsiasi valore predefinito.
Sections
Plugin di servizio
pluginsUtilizzatelo per registrare informazioni sul servizio che ospita l'applicazione.
Plugin
Amazon EC2:
EC2Pluginaggiunge l'ID dell'istanza, la zona di disponibilità e il gruppo di CloudWatch log.Elastic
ElasticBeanstalkPluginBeanstalk: aggiunge il nome dell'ambiente, l'etichetta della versione e l'ID di distribuzione.Amazon ECS:
ECSPluginaggiunge l'ID del contenitore.
Per usare un plugin, importare uno dei seguenti pacchetti.
"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"
Ogni plugin ha una chiamata di funzione Init() esplicita che carica il plugin.
Esempio 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",
})
}L'SDK utilizza anche le impostazioni del plug-in per impostare il campo sul segmento. origin Indica il tipo di AWS risorsa che esegue l'applicazione. Quando utilizzi più plugin, l'SDK utilizza il seguente ordine di risoluzione per determinare l'origine: ElasticBeanstalk > EKS > ECS > EC2.
Regole di campionamento
L'SDK utilizza le regole di campionamento definite nella X-Ray console per determinare quali richieste registrare. La regola predefinita tiene traccia della prima richiesta ogni secondo e del 5% di tutte le richieste aggiuntive su tutti i servizi a cui vengono inviate le tracce. X-Ray Crea regole aggiuntive nella X-Ray console per personalizzare la quantità di dati registrati per ciascuna delle tue applicazioni.
L'SDK applica le regole personalizzate nell'ordine in cui sono definite. Se una richiesta corrisponde a più regole personalizzate, l'SDK applica solo la prima regola.
Nota
Se l'SDK non riesce X-Ray a ottenere le regole di campionamento, torna a una regola locale predefinita che prevede la prima richiesta ogni secondo e il 5% di eventuali richieste aggiuntive per host. Ciò può verificarsi se l'host non dispone dell'autorizzazione per chiamare le API di campionamento o non può connettersi al X-Ray demone, che funge da proxy TCP per le chiamate API effettuate dall'SDK.
Puoi anche configurare l'SDK per caricare le regole di campionamento da un documento JSON. L'SDK può utilizzare le regole locali come backup per i casi in cui il X-Ray campionamento non è disponibile o utilizzare esclusivamente regole locali.
Esempio 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
}
}Questo esempio definisce una regola personalizzata e una regola predefinita. La regola personalizzata applica una frequenza di campionamento del cinque percento senza alcun numero minimo di richieste da tracciare per i percorsi. /api/move/ La regola predefinita tiene traccia della prima richiesta ogni secondo e del 10% delle richieste aggiuntive.
Lo svantaggio della definizione locale delle regole è che l'obiettivo fisso viene applicato da ciascuna istanza del registratore in modo indipendente, anziché essere gestito dal X-Ray servizio. Man mano che si implementano più host, la tariffa fissa si moltiplica, rendendo più difficile il controllo della quantità di dati registrati.
Sì AWS Lambda, non è possibile modificare la frequenza di campionamento. Se la funzione viene chiamata da un servizio strumentato, le chiamate che hanno generato richieste campionate da quel servizio verranno registrate da Lambda. Se il tracciamento attivo è abilitato e non è presente alcuna intestazione di tracciamento, Lambda prende la decisione di campionamento.
Per fornire le regole di backup, scegli il file JSON per il campionamento locale utilizzando NewCentralizedStrategyWithFilePath.
Esempio main.go — Regola di campionamento locale
s, _ := sampling.NewCentralizedStrategyWithFilePath("sampling.json") // path to local sampling json
xray.Configure(xray.Config{SamplingStrategy: s})Per usare solo regole locali, seleziona il JSON per il campionamento locale utilizzando NewLocalizedStrategyFromFilePath.
Esempio main.go — Disabilita il campionamento
s, _ := sampling.NewLocalizedStrategyFromFilePath("sampling.json") // path to local sampling json
xray.Configure(xray.Config{SamplingStrategy: s})Registrazione dei log
Nota
I campi xray.Config{} LogLevel e LogFormat sono considerati obsoleti a partire dalla versione 1.0.0-rc.10.
X-Ray utilizza la seguente interfaccia per la registrazione. Il logger predefinito scrive su stdout a livello LogLevelInfo e superiori.
type Logger interface {
Log(level LogLevel, msg fmt.Stringer)
}
const (
LogLevelDebug LogLevel = iota + 1
LogLevelInfo
LogLevelWarn
LogLevelError
)
Esempio scrivi su IO.Writer
xray.SetLogger(xraylog.NewDefaultLogger(os.Stderr, xraylog.LogLevelError))Variabili di ambiente
Puoi utilizzare le variabili di ambiente per configurare l' X-Ray SDK for Go. L'SDK supporta le seguenti variabili.
AWS_XRAY_CONTEXT_MISSING— ImpostaRUNTIME_ERRORper generare eccezioni quando il codice strumentato tenta di registrare dati quando nessun segmento è aperto.Valori validi
-
RUNTIME_ERROR— Genera un'eccezione di runtime. -
LOG_ERROR— Registra un errore e continua (impostazione predefinita). -
IGNORE_ERROR— Ignora l'errore e continua.
Gli errori relativi a segmenti o sottosegmenti mancanti possono verificarsi quando si tenta di utilizzare un client con strumenti nel codice di avvio che viene eseguito quando non è aperta alcuna richiesta o nel codice che genera un nuovo thread.
-
-
AWS_XRAY_TRACING_NAME— Imposta il nome del servizio che l'SDK utilizza per i segmenti. AWS_XRAY_DAEMON_ADDRESS— Imposta l'host e la porta del X-Ray daemon listener. Per impostazione predefinita, l'SDK invia i dati di traccia a.127.0.0.1:2000Utilizzate questa variabile se avete configurato il demone per l'ascolto su una porta diversa o se è in esecuzione su un host diverso.
Le variabili di ambiente sostituiscono i valori equivalenti impostati nel codice.
Utilizzo della configurazione
Puoi anche configurare l' X-Ray SDK for Go utilizzando Configure il metodo. Configureaccetta un argomento, un Config oggetto, con i seguenti campi opzionali.
- DaemonAddr
-
Questa stringa specifica l'host e la porta del X-Ray daemon listener. Se non viene specificato, X-Ray utilizza il valore della variabile di ambiente.
AWS_XRAY_DAEMON_ADDRESSSe il valore non è impostato, utilizza "127.0.0.1:2000". - ServiceVersion
-
Questa stringa specificata la versione del servizio. Se non specificato, X-Ray utilizza la stringa vuota («»).
- SamplingStrategy
-
Questo oggetto
SamplingStrategyspecifica quali delle chiamate della tua applicazione sono tracciate. Se non viene specificato, X-Ray utilizza aLocalizedSamplingStrategy, che utilizza la strategia definita inxray/resources/DefaultSamplingRules.json. - StreamingStrategy
-
Questo
StreamingStrategyoggetto specifica se eseguire lo streaming di un segmento quando RequiresStreamingrestituisce true. Se non è specificato, X-Ray utilizza unaDefaultStreamingStrategyche esegue lo streaming di un segmento campionato se il numero di sottosegmenti è superiore a 20. - ExceptionFormattingStrategy
-
Questo oggetto
ExceptionFormattingStrategyspecifica il modo in cui desideri gestire varie eccezioni. Se non specificato, X-Ray utilizza un tipoDefaultExceptionFormattingStrategycon unXrayErroroferror, il messaggio di errore e lo stack trace.