Mengkonfigurasi sampling adaptif - AWS X-Ray

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mengkonfigurasi sampling adaptif

Jejak kritis yang hilang selama lonjakan anomali dapat membuat analisis akar penyebab menjadi sulit. Namun, mempertahankan tingkat pengambilan sampel yang tinggi itu mahal. X-Ray adaptive sampling memberikan visibilitas lengkap ke anomali dan mengontrol biaya selama operasi normal. Dengan sampling adaptif, Anda menetapkan laju pengambilan sampel maksimum, dan X-Ray secara otomatis menyesuaikan dalam batas itu. X-Ray menghitung dorongan minimum yang diperlukan untuk menangkap jejak kesalahan. Jika tingkat dasar Anda menangkap data yang cukup, tidak ada peningkatan yang terjadi. Anda hanya membayar sampling ekstra saat dibutuhkan.

Manfaat menggunakan sampling adaptif:

  • Visibilitas insiden lengkap — Dapatkan jejak penuh selama insiden tanpa intervensi manual. X-Ray secara otomatis menyesuaikan laju pengambilan sampel untuk menangkap jejak kesalahan, kemudian kembali ke tingkat normal.

  • Visibilitas akar penyebab — Selalu lihat sumber masalah. X-Ray menangkap data kesalahan kritis bahkan ketika pengambilan sampel jejak penuh tidak dipicu.

  • Optimalkan biaya — Peningkatan pengambilan sampel singkat (hingga 1 menit) dan periode cooldown otomatis mencegah oversampling. Anda hanya membayar untuk data yang Anda butuhkan untuk mendiagnosis masalah.

Didukung SDKs dan platform

SDK yang didukung - Pengambilan sampel adaptif memerlukan versi terbaru dari ADOT SDK.

Bahasa yang didukung - Java (versi v2.11.5 atau lebih tinggi)

Aplikasi Anda harus diinstrumentasi dengan SDK ADOT yang didukung dan dijalankan bersama dengan CloudWatch Agen Amazon atau Kolektor. OpenTelemetry

Misalnya, Amazon EC2, Amazon ECS, dan Amazon EKS adalah platform umum di mana Sinyal AWS Aplikasi memberikan panduan untuk mengaktifkan ADOT SDK dan Agen Amazon. CloudWatch

Pilih pendekatan sampling adaptif Anda

Adaptive sampling mendukung dua pendekatan, Sampling Boost dan Anomaly Span Capture. Ini dapat diterapkan secara independen atau dapat digabungkan bersama.

Peningkatan pengambilan sampel

Peningkatan pengambilan sampel adaptif didasarkan pada aturan pengambilan sampel dan bekerja dengan model pengambilan sampel berbasis kepala X-Ray yang ada. Pengambilan sampel berbasis kepala berarti bahwa keputusan pengambilan sampel dibuat di layanan root, dan flag sampling diteruskan ke hilir ke semua layanan dalam rantai panggilan.

  • Peningkatan berbasis aturan - Meningkatkan selalu terkait dengan aturan pengambilan sampel X-Ray tertentu. Setiap aturan dapat menentukan tingkat dorongan maksimumnya sendiri dan perilaku pendinginan.

  • Pengambilan sampel berbasis kepala — Keputusan pengambilan sampel dibuat di layanan root, dan bendera pengambilan sampel diteruskan ke hilir ke semua layanan dalam rantai panggilan.

  • Digerakkan oleh anomali — X-Ray bergantung pada SDK untuk melaporkan statistik anomali. Ketika X-Ray mendeteksi anomali seperti kesalahan atau latensi tinggi, X-Ray menggunakan statistik ini untuk menghitung tingkat dorongan yang sesuai (hingga maksimum yang dikonfigurasi).

Pelaporan anomali

Setiap layanan aplikasi dalam rantai panggilan dapat memancarkan statistik anomali melalui SDK yang diperlukan:

  • Layanan root — Harus berjalan pada SDK dan platform yang didukung untuk mengaktifkan peningkatan pengambilan sampel. Jika layanan root tidak didukung, tidak ada peningkatan yang akan terjadi.

  • Layanan hilir — Layanan hilir hanya melaporkan anomali; mereka tidak dapat membuat keputusan pengambilan sampel. Saat layanan hilir menjalankan SDK yang didukung, anomali yang terdeteksi dapat memicu peningkatan pengambilan sampel. Ketika layanan hilir tidak didukung (misalnya, menjalankan SDK yang lebih lama), anomali pada layanan tersebut tidak akan memicu peningkatan. Layanan ini masih dapat menyebarkan konteks ke hilir ketika mereka mengikuti propagasi konteks standar (seperti konteks jejak W3C dan bagasi). Ini memastikan bahwa didukung SDKs dalam layanan hilir lebih lanjut dapat melaporkan anomali yang memicu dorongan.

Tingkatkan waktu dan ruang lingkup

  • Penundaan pemicu — Anda dapat mengharapkan dorongan pengambilan sampel mulai serendah 10 detik setelah X-Ray mendeteksi anomali.

  • Periode Boost — Setelah X-Ray memicu dorongan, itu berlangsung hingga 1 menit sebelum kembali ke laju pengambilan sampel dasar.

  • Boost cool down — Setelah dorongan terjadi, X-Ray tidak akan memicu dorongan lain untuk aturan yang sama sampai jendela pendinginan berlalu.

    Misalnya, ketika Anda mengatur cooldown ke 10 menit, setelah dorongan berakhir, tidak ada dorongan baru yang dapat dipicu hingga jendela 10 menit berikutnya.

    Kasus khusus: ketika Anda mengatur cooldown ke 1 menit, dan karena dorongan itu sendiri dapat bertahan hingga 1 menit, peningkatan secara efektif dapat dipicu terus menerus jika anomali tetap ada.

catatan

Gunakan platform SDKs dan didukung untuk layanan root Anda. Pengambilan sampel hanya berfungsi dengan didukung SDKs dan platform. Sementara dorongan pengambilan sampel memiliki probabilitas tinggi untuk menangkap jejak anomali, itu mungkin tidak menangkap setiap jejak anomali.

Meningkatkan visibilitas

Ketika aturan sampling dikonfigurasi dengan adaptive sampling boost, X-Ray secara otomatis memancarkan metrik vended yang memungkinkan Anda memantau aktivitas boost.

  • Nama metrik - SamplingRate

  • Dimensi - RuleName (diatur ke nama aturan yang sebenarnya)

Setiap aturan dengan SamplingRateBoost diaktifkan akan mempublikasikan laju pengambilan sampel efektifnya, termasuk tingkat dasar dan peningkatan sementara. Ini memungkinkan Anda untuk:

  • Lacak saat peningkatan dipicu

  • Pantau laju pengambilan sampel efektif untuk setiap aturan

  • Korelasikan peningkatan dengan anomali aplikasi (seperti lonjakan kesalahan atau peristiwa latensi)

Anda dapat melihat metrik ini di Amazon CloudWatch Metrics, di bawah namespace AWS/X-Ray. Nilai metrik adalah angka floating-point antara 0 dan 1, mewakili laju pengambilan sampel efektif.

Konfigurasikan dorongan pengambilan sampel menggunakan aturan pengambilan sampel X-Ray

Anda dapat mengaktifkan sampling adaptif secara langsung dalam aturan pengambilan sampel X-Ray yang ada dengan menambahkan bidang baru. SamplingRateBoost Untuk informasi selengkapnya, lihat Menyesuaikan aturan pengambilan sampel. Ini menyediakan cara terpusat untuk mengaktifkan sampling adaptif tanpa memodifikasi kode aplikasi atau menerapkan penerapan aplikasi. Saat Anda mengaktifkan sampling adaptif, X-Ray secara otomatis meningkatkan pengambilan sampel selama anomali seperti lonjakan kesalahan atau latensi outlier, sambil menjaga laju pengambilan sampel dalam maksimum yang Anda konfigurasi. SamplingRateBoostdapat diterapkan pada aturan pengambilan sampel khusus apa pun kecuali aturan Default pengambilan sampel.

SamplingRateBoostBidang mendefinisikan batas atas dan perilaku untuk pengambilan sampel berbasis anomali.

"SamplingRateBoost": { "MaxRate": 0.25, "CooldownWindowMinutes": 10 }

MaxRateMendefinisikan laju pengambilan sampel maksimum X-Ray akan berlaku ketika mendeteksi anomali. Rentang nilai adalah 0.0 untuk1.0. Misalnya, "MaxRate": 0.25 memungkinkan pengambilan sampel meningkat hingga 25% permintaan selama jendela anomali. X-Ray menentukan tingkat yang tepat antara baseline Anda dan maksimum, tergantung pada aktivitas anomali.

Jendela waktu CooldownWindowMinutes mendefinisikan (dalam menit) di mana hanya satu peningkatan laju pengambilan sampel yang dapat dipicu. Setelah dorongan terjadi, tidak ada peningkatan lebih lanjut yang diizinkan sampai jendela berikutnya. Jenis nilai adalah integer (menit).

Contoh aturan dengan sampling adaptif

{ "RuleName": "MyAdaptiveRule", "Priority": 1, "ReservoirSize": 1, "FixedRate": 0.05, "ServiceName": "*", "ServiceType": "*", "Host": "*", "HTTPMethod": "*", "URLPath": "*", "SamplingRateBoost": { "MaxRate": 0.25, "CooldownWindowMinutes": 10 } }

Dalam contoh ini, baseline sampling adalah 5% (). FixedRate: 0.05 Selama anomali, X-Ray dapat meningkatkan pengambilan sampel hingga 25% (). MaxRate: 0.25 Tingkatkan hanya sekali setiap 10 menit.

Konfigurasi kondisi anomali

Ketika tidak ada konfigurasi kondisi anomali yang disediakan, ADOT SDK menggunakan kode kesalahan HTTP 5xx sebagai kondisi anomali default untuk memicu peningkatan pengambilan sampel.

Anda juga dapat menyempurnakan kondisi anomali secara lokal di SDK ADOT yang didukung menggunakan variabel lingkungan. Untuk informasi selengkapnya, lihat Konfigurasi SDK lokal.

Penangkapan rentang anomali

Penangkapan rentang anomali memastikan bahwa bentang kritis yang mewakili anomali selalu direkam, bahkan jika jejak penuh tidak diambil sampelnya. Fitur ini melengkapi dorongan pengambilan sampel dengan berfokus pada menangkap anomali itu sendiri, daripada meningkatkan pengambilan sampel untuk jejak masa depan.

Ketika SDK ADOT mendeteksi anomali, ia segera memancarkan rentang itu, terlepas dari keputusan pengambilan sampel. Karena SDK hanya memancarkan rentang yang terkait dengan anomali, jejak ini adalah jejak sebagian, bukan transaksi penuh. end-to-end

Setelah ADOT SDK mendeteksi rentang anomali, ia mencoba memancarkan bentang sebanyak mungkin dari jejak yang sama. Semua rentang yang dipancarkan di bawah fitur ini ditandai dengan atribut,. aws.trace.flag.sampled = 0 Ini memungkinkan Anda untuk dengan mudah membedakan jejak sebagian (penangkapan anomali) dari jejak lengkap (pengambilan sampel normal) dalam pencarian dan analisis transaksi.

Kami merekomendasikan orientasi Penelusuran Transaksi untuk melihat dan menanyakan jejak sebagian. Contoh berikut menunjukkan halaman Layanan di konsol Sinyal Aplikasi. ServiceC dikonfigurasi dengan penangkapan rentang anomali, dan ini adalah bagian dari rantai panggilan di mana peningkatan pengambilan sampel berlaku. Konfigurasi ini menghasilkan jejak lengkap dan sebagian. Anda dapat menggunakan aws.trace.flag.sampled atribut untuk membedakan antara jenis jejak.

Penangkapan rentang anomali

Penangkapan rentang anomali hanya dapat diaktifkan atau disesuaikan melalui. Konfigurasi SDK lokal

Konfigurasi SDK lokal

Anda dapat mengonfigurasi fitur sampling adaptif di ADOT SDK dengan menyediakan konfigurasi YAMAL melalui variabel lingkungan. Konfigurasi lokal memberikan kontrol halus atas kondisi anomali, ambang batas.

Ini diperlukan untuk pengambilan rentang anomali dan opsional untuk menyesuaikan kondisi peningkatan pengambilan sampel. Berikut ini adalah contoh konfigurasi:

version: 1.0 anomalyConditions: - errorCodeRegex: "^5\\d\\d$" usage: both - operations: - "/api" errorCodeRegex: "^429|5\\d\\d$" highLatencyMs: 300 usage: sampling-boost - highLatencyMs: 1000 usage: anomaly-span-capture anomalyCaptureLimit: anomalyTracesPerSecond: 1

Definisi bidang di bawah ini:

  • version— Versi skema untuk file konfigurasi

  • anomalyConditions— Mendefinisikan kondisi di mana anomali terdeteksi dan bagaimana mereka digunakan

    • errorCodeRegex— Ekspresi reguler yang mendefinisikan kode status HTTP mana yang dianggap anomali

    • operations— Daftar operasi atau titik akhir yang kondisinya berlaku

    • highLatencyMs— Ambang batas latensi (dalam milidetik) di atasnya bentang diperlakukan sebagai anomali

    • usage— Mendefinisikan fitur mana yang berlaku untuk kondisi:

      • both— Berlaku untuk peningkatan pengambilan sampel dan penangkapan rentang anomali (Default jika penggunaan tidak ditentukan)

      • sampling-boost- Digunakan hanya untuk memicu peningkatan pengambilan sampel

      • anomaly-span-capture— Digunakan hanya untuk penangkapan rentang anomali

  • anomalyCaptureLimit— Mendefinisikan batas berapa banyak jejak dengan rentang anomali yang dipancarkan.

    anomalyTracesPerSecond— Jumlah maksimum jejak dengan rentang anomali yang ditangkap per detik, untuk mencegah volume rentang yang berlebihan (Nilai default adalah 1 jika tidak anomalyCaptureLimit ada).

catatan
  • AnomalyConditionsmengganti kondisi anomali default untuk peningkatan pengambilan sampel (HTTP 5xx). Jika Anda ingin mempertahankan kondisi default saat menggunakan konfigurasi lokal, Anda harus secara eksplisit memasukkannya ke dalam item apa pun. AnomalyConditions

  • Untuk setiap anomalyConditions item:

    • Ketika operations bidang dihilangkan, kondisi berlaku untuk semua operasi (tingkat layanan)

    • Ketika operations bidang ada tetapi disetel ke daftar kosong, kondisi berlaku untuk tidak ada operasi, membuat item itu tanpa operasi

    • Ketika keduanya errorCodeRegex dan highLatencyMs dihilangkan, kondisi tersebut tidak memiliki kriteria anomali untuk dievaluasi, membuat item itu tidak ada operasi

  • Hubungan logis:

    • Antara item dianomalyConditions, hubungannya adalah OR.

    • Dalam satu item, beberapa bidang (misalnya, errorCodeRegex danhighLatencyMs) digabungkan dengan AND.

      Misalnya:

      errorCodeRegex: "^429|5\\d\\d$" highLatencyMs: 300

      Kondisi ini berarti, kode status cocok dengan 429 atau 5xx DAN latensi ≥ 300 ms.

Terapkan Konfigurasi Lokal ke ADOT SDK

Anda dapat menerapkan konfigurasi lokal ke SDK ADOT dengan menyetel variabel lingkungan. AWS_XRAY_ADAPTIVE_SAMPLING_CONFIG Nilai harus berupa dokumen YAMAL yang valid (inline atau nested).

Misalnya, Amazon EC2 dan Amazon ECS, atur variabel lingkungan secara langsung:

AWS_XRAY_ADAPTIVE_SAMPLING_CONFIG="{version: 1.0, anomalyConditions: [{errorCodeRegex: \"^500$\", usage: \"sampling-boost\"}, {errorCodeRegex: \"^501$\", usage: \"anomaly-trace-capture\"}], anomalyCaptureLimit: {anomalyTracesPerSecond: 10}}"

Untuk Amazon EKS, tentukan variabel lingkungan di dalam spesifikasi pod sebagai YAMAL bersarang:

apiVersion: v1 kind: Pod metadata: name: adot-sample spec: containers: - name: adot-app image: my-app:latest env: - name: AWS_XRAY_ADAPTIVE_SAMPLING_CONFIG value: | version: 1.0 anomalyConditions: - errorCodeRegex: "^500$" usage: sampling-boost - errorCodeRegex: "^501$" usage: anomaly-trace-capture anomalyCaptureLimit: anomalyTracesPerSecond: 10