Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mengkonfigurasi X-Ray SDK untuk. NET
Anda dapat mengkonfigurasi X-Ray SDK untuk. NETdengan plugin untuk menyertakan informasi tentang layanan yang dijalankan aplikasi Anda, memodifikasi perilaku pengambilan sampel default, atau menambahkan aturan pengambilan sampel yang berlaku untuk permintaan ke jalur tertentu.
Untuk. NETaplikasi web, tambahkan kunci ke appSettings
bagian Web.config
file Anda.
contoh Web.config
<configuration>
<appSettings>
<add key="AWSXRayPlugins" value="EC2Plugin"/>
<add key="SamplingRuleManifest" value="sampling-rules.json"/>
</appSettings>
</configuration>
Untuk. NETCore, buat file bernama appsettings.json
dengan kunci tingkat atas bernamaXRay
.
contoh . NETappsettings.json
{
"XRay": {
"AWSXRayPlugins": "EC2Plugin",
"SamplingRuleManifest": "sampling-rules.json"
}
}
Lalu, dalam kode aplikasi Anda, bangun objek konfigurasi dan gunakan untuk menginisialisasi pencatat X-Ray. Lakukan ini sebelum Anda menginisialisasi pencatat.
contoh . NETCore Program.cs - Konfigurasi perekam
using Amazon.XRay.Recorder.Core;
...
AWSXRayRecorder.InitializeInstance(configuration);
Jika Anda menginstrumentasi a. NETAplikasi web inti, Anda juga dapat meneruskan objek konfigurasi ke UseXRay
metode saat Anda mengkonfigurasi penangan pesan. Untuk fungsi Lambda, gunakan metode InitializeInstance
seperti yang ditunjukkan di atas.
Untuk informasi lebih lanjut tentang. NETKonfigurasi intiAPI, lihat Mengkonfigurasi fileASP. NETAplikasi Inti
Bagian-bagian
Plugin
Gunakan plugin untuk menambahkan data tentang layanan yang menjadi meng-hosting aplikasi Anda.
Plugin
Amazon EC2 —
EC2Plugin
menambahkan ID instans, Availability Zone, dan Grup CloudWatch Log.Elastic Beanstalk –
ElasticBeanstalkPlugin
menambahkan nama lingkungan, label versi, dan ID deployment.Amazon ECS -
ECSPlugin
menambahkan ID penampung.
Untuk menggunakan plugin, konfigurasikan X-Ray SDK untuk. NETklien dengan menambahkan AWSXRayPlugins
pengaturan. Jika beberapa plugin berlaku untuk aplikasi Anda, tentukan semuanya dalam pengaturan yang sama, dipisahkan dengan koma.
contoh Web.config - plugin
<configuration>
<appSettings>
<add key="AWSXRayPlugins" value="EC2Plugin,ElasticBeanstalkPlugin"/>
</appSettings>
</configuration>
contoh . NETInti appsettings.json - Plugin
{
"XRay": {
"AWSXRayPlugins": "EC2Plugin,ElasticBeanstalkPlugin"
}
}
Aturan pengambilan sampel
SDKMenggunakan aturan pengambilan sampel yang Anda tentukan di konsol X-Ray untuk menentukan permintaan mana yang akan direkam. Aturan default menelusuri permintaan pertama setiap detik, dan lima persen permintaan tambahan di semua layanan yang mengirim pelacakan ke X-Ray. Buat aturan tambahan di konsol X-Ray untuk menyesuaikan jumlah data yang dicatat untuk setiap aplikasi Anda.
Aturan kustom SDK berlaku dalam urutan di mana mereka didefinisikan. Jika permintaan cocok dengan beberapa aturan kustom, hanya SDK berlaku aturan pertama.
catatan
Jika tidak SDK dapat mencapai X-Ray untuk mendapatkan aturan sampling, itu 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 samplingAPIs, atau tidak dapat terhubung ke daemon X-Ray, yang bertindak sebagai TCP proxy untuk API panggilan yang dilakukan oleh. SDK
Anda juga dapat mengonfigurasi aturan pengambilan sampel SDK untuk memuat dari JSON dokumen. SDKDapat menggunakan aturan lokal sebagai cadangan untuk kasus di mana pengambilan sampel X-Ray 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 menentukan aturan secara lokal adalah bahwa target tetap diterapkan oleh setiap instans pencatat 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.
Pada AWS Lambda, 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 mengonfigurasi aturan cadangan, beri tahu X-Ray SDK untuk. NETuntuk memuat aturan pengambilan sampel dari file dengan SamplingRuleManifest
pengaturan.
contoh . NETWeb.config - aturan pengambilan sampel
<configuration>
<appSettings>
<add key="SamplingRuleManifest" value="sampling-rules.json"/>
</appSettings>
</configuration>
contoh . NETCore appsettings.json - Aturan pengambilan sampel
{
"XRay": {
"SamplingRuleManifest": "sampling-rules.json"
}
}
Untuk hanya menggunakan aturan lokal, buat pencatat dengan LocalizedSamplingStrategy
. Jika Anda memiliki aturan pencadangan yang dikonfigurasi, hapus konfigurasi tersebut.
contoh . NETglobal.asax - Aturan pengambilan sampel lokal
var recorder = new AWSXRayRecorderBuilder().WithSamplingStrategy(new LocalizedSamplingStrategy(
"samplingrules.json"
)).Build(); AWSXRayRecorder.InitializeInstance(recorder: recorder);
contoh . NETCore Program.cs - Aturan pengambilan sampel lokal
var recorder = new AWSXRayRecorderBuilder().WithSamplingStrategy(new LocalizedSamplingStrategy(
"sampling-rules.json"
)).Build(); AWSXRayRecorder.InitializeInstance(configuration,recorder);
Penebangan (. NET)
X-Ray SDK untuk NETmenggunakan mekanisme logging yang sama dengan AWS SDK for .NET. Jika Anda sudah mengonfigurasi aplikasi Anda untuk mencatat AWS SDK for .NET output, konfigurasi yang sama berlaku untuk output dari X-Ray SDK untuk. NET.
Untuk mengonfigurasi pencatatan, tambahkan bagian konfigurasi bernama aws
ke file App.config
Anda atau file Web.config
.
contoh Web.config - pencatatan
...
<configuration>
<configSections>
<section name="aws" type="Amazon.AWSSection, AWSSDK.Core"/>
</configSections>
<aws>
<logging logTo="Log4Net"/>
</aws>
</configuration>
Untuk informasi selengkapnya, lihat Mengonfigurasi Aplikasi AWS SDK for .NET Anda dalam Panduan Developer AWS SDK for .NET .
Penebangan (. NETInti)
X-Ray SDK untuk NETmenggunakan opsi logging yang sama dengan AWS SDK for .NET. Untuk mengonfigurasi logging untuk. NETAplikasi inti, teruskan opsi logging ke AWSXRayRecorder.RegisterLogger
metode.
Misalnya, untuk menggunakan log4net, buat file konfigurasi yang menentukan logger, format output, dan lokasi file.
contoh . NETInti log4net.config
<?xml version="1.0" encoding="utf-8" ?>
<log4net>
<appender name="FileAppender" type="log4net.Appender.FileAppender,log4net">
<file value="c:\logs\sdk-log.txt
" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %level %logger - %message%newline
" />
</layout>
</appender>
<logger name="Amazon">
<level value="DEBUG" />
<appender-ref ref="FileAppender" />
</logger>
</log4net>
Lalu, buat logger dan terapkan konfigurasi di kode program Anda.
contoh . NETCore Program.cs - Pencatatan
using log4net;
using Amazon.XRay.Recorder.Core;
class Program
{
private static ILog log;
static Program()
{
var logRepository = LogManager.GetRepository(Assembly.GetEntryAssembly());
XmlConfigurator.Configure(logRepository, new FileInfo("log4net.config"));
log = LogManager.GetLogger(typeof(Program));
AWSXRayRecorder.RegisterLogger(LoggingOptions.Log4Net);
}
static void Main(string[] args)
{
...
}
}
Untuk informasi selengkapnya tentang mengonfigurasi log4net, lihat Konfigurasi
Variabel-variabel lingkungan
Anda dapat menggunakan variabel lingkungan untuk mengkonfigurasi X-Ray SDK untuk. NET. SDKMendukung variabel-variabel berikut.
-
AWS_XRAY_TRACING_NAME
— Tetapkan nama layanan yang SDK digunakan untuk segmen. Menimpa nama layanan yang Anda tetapkan pada strategi penamaan segmen filter servlet. AWS_XRAY_DAEMON_ADDRESS
– Mengatur host dan port listener daemon X-Ray. Secara default, SDK penggunaan127.0.0.1:2000
untuk kedua trace data (UDP) dan sampling (TCP). Gunakan variabel ini jika Anda telah mengonfigurasi daemon untuk mendengarkan di port berbeda atau jika berjalan pada host yang berbeda.format
-
Port yang sama –
address
:port
-
Port yang berbeda –
tcp:
address
:port
udp:address
:port
-
AWS_XRAY_CONTEXT_MISSING
— SetelRUNTIME_ERROR
untuk 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 terkait dengan segmen atau subsegmen yang hilang dapat terjadi saat Anda mencoba menggunakan klien yang diinstrumentasikan dalam kode startup yang berjalan saat tidak ada permintaan yang dibuka, atau dalam kode yang memunculkan utas baru.
-