Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mengkonfigurasi X-Ray SDK for Go
catatan
X-Ray SDK/Daemon Pemberitahuan Pemeliharaan — Pada 25 Februari 2026, AWS X-Ray SDKs/Daemon akan memasuki mode pemeliharaan, di mana AWS akan membatasi rilis X-Ray SDK dan Daemon untuk mengatasi masalah keamanan saja. Untuk informasi selengkapnya tentang garis waktu dukungan, lihatGaris waktu Dukungan X-Ray SDK dan Daemon. Kami merekomendasikan untuk bermigrasi ke OpenTelemetry. Untuk informasi selengkapnya tentang migrasi ke OpenTelemetry, lihat Migrasi dari X-Ray instrumentasi ke instrumentasi. OpenTelemetry
Anda dapat menentukan konfigurasi untuk X-Ray SDK for Go melalui variabel lingkungan, dengan Configure memanggil dengan objek, atau Config dengan mengasumsikan nilai default. Variabel lingkungan lebih diutamakan dibandingkan nilai Config, yang lebih diutamakan dibandingkan nilai default apa pun.
Bagian-bagian
Plugin layanan
Gunakan plugins untuk mencatat informasi tentang layanan yang meng-hosting aplikasi Anda.
Plugin
Amazon EC2 —
EC2Pluginmenambahkan ID instans, Availability Zone, dan Grup CloudWatch Log.Elastic Beanstalk –
ElasticBeanstalkPluginmenambahkan nama lingkungan, label versi, dan ID deployment.Amazon ECS –
ECSPluginmenambahkan ID kontainer.
Untuk menggunakan plugin, impor salah satu paket berikut.
"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"
Setiap plugin memiliki panggilan fungsi Init() eksplisit yang memuat plugin.
contoh 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",
})
}SDK juga menggunakan pengaturan plugin untuk mengatur bidang origin di segmen. Ini menunjukkan jenis AWS sumber daya yang menjalankan aplikasi Anda. Saat Anda menggunakan beberapa plugin, SDK menggunakan urutan resolusi berikut untuk menentukan asal: ElasticBeanstalk > EKS > ECS > EC2.
Aturan pengambilan sampel
SDK menggunakan aturan pengambilan sampel yang Anda tentukan di X-Ray konsol untuk menentukan permintaan mana yang akan direkam. Aturan default melacak permintaan pertama setiap detik, dan lima persen dari permintaan tambahan di semua layanan yang mengirim jejak ke X-Ray. Buat aturan tambahan di X-Ray konsol untuk menyesuaikan jumlah data yang direkam untuk setiap aplikasi Anda.
SDK menerapkan aturan kustom sesuai urutan penetapannya. Jika permintaan cocok dengan beberapa aturan kustom, SDK hanya menerapkan aturan pertama.
catatan
Jika SDK tidak dapat mencapai X-Ray aturan pengambilan sampel, SDK akan kembali ke aturan lokal default dari permintaan pertama setiap detik, dan lima persen dari permintaan tambahan per host. Hal ini dapat terjadi jika host tidak memiliki izin untuk memanggil API sampling, atau tidak dapat terhubung ke X-Ray daemon, yang bertindak sebagai proxy TCP untuk panggilan API yang dilakukan oleh SDK.
Anda juga dapat mengonfigurasi SDK untuk memuat aturan sampling dari dokumen JSON. SDK dapat menggunakan aturan lokal sebagai cadangan untuk kasus di mana X-Ray pengambilan sampel tidak tersedia, atau menggunakan aturan lokal secara eksklusif.
contoh 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
}
}Contoh ini menentukan satu aturan kustom dan aturan default. Aturan kustom menerapkan tingkat pengambilan sampel lima persen tanpa jumlah minimum permintaan untuk melacak jalur di /api/move/. Aturan default menelusuri permintaan pertama setiap detik dan 10 persen dari permintaan tambahan.
Kerugian dari mendefinisikan aturan secara lokal adalah bahwa target tetap diterapkan oleh setiap instance perekam secara independen, alih-alih dikelola oleh layanan. X-Ray Ketika Anda men-deploy lebih banyak host, laju tetap akan dikalikan, sehingga sulit untuk mengontrol jumlah data yang dicatat.
AWS Lambda Aktif, Anda tidak dapat mengubah laju pengambilan sampel. Jika fungsi Anda dipanggil oleh layanan yang diinstrumentasikan, panggilan yang menghasilkan permintaan yang sampelnya diambil oleh layanan yang akan dicatat oleh Lambda. Jika pelacakan aktif diaktifkan dan tidak ada header pelacakan, Lambda membuat keputusan pengambilan sampel.
Untuk memberikan aturan pencadangan, arahkan ke file JSON pengambilan sampel lokal dengan menggunakan NewCentralizedStrategyWithFilePath.
contoh main.go - Aturan pengambilan sampel lokal
s, _ := sampling.NewCentralizedStrategyWithFilePath("sampling.json") // path to local sampling json
xray.Configure(xray.Config{SamplingStrategy: s})Untuk hanya menggunakan aturan lokal, arahkan ke file JSON pengambilan sampel lokal dengan menggunakan NewLocalizedStrategyFromFilePath.
contoh main.go – Nonaktifkan pengambilan sampel
s, _ := sampling.NewLocalizedStrategyFromFilePath("sampling.json") // path to local sampling json
xray.Configure(xray.Config{SamplingStrategy: s})Pencatatan log
catatan
Bidang xray.Config{} LogLevel dan LogFormat tidak digunakan lagi mulai dari versi 1.0.0-rc.10.
X-Ray menggunakan antarmuka berikut untuk logging. Pencatat default menulis ke stdout di LogLevelInfo dan di atasnya.
type Logger interface {
Log(level LogLevel, msg fmt.Stringer)
}
const (
LogLevelDebug LogLevel = iota + 1
LogLevelInfo
LogLevelWarn
LogLevelError
)
contoh menulis ke io.Writer
xray.SetLogger(xraylog.NewDefaultLogger(os.Stderr, xraylog.LogLevelError))Variabel-variabel lingkungan
Anda dapat menggunakan variabel lingkungan untuk mengonfigurasi X-Ray SDK for Go. SDK mendukung variabel berikut.
AWS_XRAY_CONTEXT_MISSING— SetelRUNTIME_ERRORuntuk melempar pengecualian saat kode instrumentasi Anda mencoba merekam data saat tidak ada segmen yang terbuka.Nilai Valid
-
RUNTIME_ERROR— Lempar pengecualian runtime. -
LOG_ERROR— Log kesalahan dan lanjutkan (default). -
IGNORE_ERROR— Abaikan kesalahan dan lanjutkan.
Kesalahan yang berkaitan dengan segmen atau subsegmen yang hilang dapat terjadi ketika Anda mencoba untuk menggunakan klien yang diinstrumentasi dalam kode perusahaan rintisan yang berjalan ketika tidak ada permintaan terbuka, atau dalam kode yang memunculkan thread baru.
-
-
AWS_XRAY_TRACING_NAME– Tetapkan nama layanan yang digunakan SDK untuk segmen. AWS_XRAY_DAEMON_ADDRESS— Atur host dan port pendengar X-Ray daemon. Secara default, SDK mengirimkan pelacakan data ke127.0.0.1:2000. Gunakan variabel ini jika Anda telah mengonfigurasi daemon untukmendengarkan pada port yang berbeda atau jika berjalan pada host yang berbeda.
Variabel lingkungan mengganti nilai yang setara yang diatur dalam kode.
Menggunakan konfigurasi
Anda juga dapat mengonfigurasi X-Ray SDK for Go menggunakan metode Configure ini. Configuremengambil satu argumen, sebuah Config objek, dengan bidang opsional berikut.
- DaemonAddr
-
String ini menentukan host dan port pendengar X-Ray daemon. Jika tidak ditentukan, X-Ray menggunakan nilai variabel
AWS_XRAY_DAEMON_ADDRESSlingkungan. Jika nilai tersebut tidak diatur, X-Ray menggunakan "127.0.0.1:2000". - ServiceVersion
-
String ini menentukan versi layanan. Jika tidak ditentukan, X-Ray menggunakan string kosong (“”).
- SamplingStrategy
-
Objek
SamplingStrategyini menentukan panggilan aplikasi Anda yang dilacak. Jika tidak ditentukan, X-Ray gunakan aLocalizedSamplingStrategy, yang mengambil strategi seperti yang didefinisikan dalamxray/resources/DefaultSamplingRules.json. - StreamingStrategy
-
StreamingStrategyObjek ini menentukan apakah untuk streaming segmen ketika RequiresStreamingmengembalikan true. Jika tidak ditentukan, X-Ray gunakan aDefaultStreamingStrategyyang mengalirkan segmen sampel jika jumlah subsegmen lebih besar dari 20. - ExceptionFormattingStrategy
-
Objek
ExceptionFormattingStrategyini menentukan cara yang Anda inginkan dalam menangani berbagai pengecualian. Jika tidak ditentukan, X-Ray gunakanDefaultExceptionFormattingStrategydengan tipeXrayErroroferror, pesan kesalahan, dan jejak tumpukan.