Topik ini menjelaskan berbagai mode pengambilan sampel jejak yang didukung oleh ARMS. Anda dapat memilih mode yang sesuai dengan skenario Anda untuk memperoleh data jejak yang dibutuhkan dengan biaya lebih rendah.
Konsep kunci
span: Operasi spesifik dalam suatu permintaan, seperti entri panggilan remote atau pemanggilan metode internal.
root span: Span pertama dalam suatu jejak.
local root span: Span pertama dari segmen jejak dalam satu aplikasi.
span context: Informasi yang disebarkan bersama permintaan untuk menghubungkan semua operasi dalam jejak yang sama.
head-based sampling: Strategi pengambilan sampel yang hanya dilakukan pada root span. Dalam kebanyakan kasus, metode ini mempertahankan jejak yang lengkap.
non-head-based sampling: Strategi pengambilan sampel yang dapat dipicu pada local root span mana pun jika head-based sampling tidak mengambil sampel jejak tersebut. Metode ini biasanya tidak menjamin kelengkapan jejak.
Strategi dan penanda pengambilan sampel
Untuk membantu Anda mengumpulkan data jejak yang lebih bernilai, ARMS menyediakan beberapa strategi pengambilan sampel, termasuk dua strategi head-based sampling dan tiga strategi non-head-based sampling.
Strategi head-based sampling
Strategi non-head-based sampling
Penanda pengambilan sampel
Saat Anda menggunakan protokol EagleEye untuk menyebarkan konteks jejak antar proses, ARMS mencatat apakah jejak tersebut diambil sampelnya. Kunci header permintaan adalah EagleEye-Sampled, dan nilainya dapat berupa:
s0: Tidak diambil sampelnya
s1: Diambil sampelnya
Pada local root span tempat jejak diambil sampelnya, alasan pengambilan sampel dicatat sebagai atribut span dengan kunci sample.reason. Nilai yang mungkin adalah:
s2: minimum sampling for all interfaces
s3: custom sampling
s4: fixed-rate sampling
s5: Dicadangkan
s6: adaptive sampling
s7: Dicadangkan
s8: Basic Edition sampling
s9: failed request sampling
s10: slow request sampling
s11: abnormal call sampling
s12: business trace sampling
Strategi head-based sampling
ARMS menyediakan dua strategi head-based sampling: fixed-rate sampling, pendekatan paling umum dalam pelacakan terdistribusi, dan adaptive sampling, alternatif hemat biaya yang dikembangkan oleh ARMS.
Fixed-rate sampling
Strategi ini mengambil sampel jejak pada titik masuk permintaan berdasarkan persentase tertentu. Span yang diambil sampelnya menggunakan strategi ini ditandai dengan atribut sample.reason dan nilainya s4. Pada halaman detail jejak, atribut span mencakup bidang sample.reason; untuk fixed-rate sampling, nilainya adalah s4.
Untuk mengonfigurasi fixed-rate sampling:
-
Masuk ke Konsol ARMS. Di panel navigasi kiri, pilih .
Di bagian atas halaman Application List, pilih Wilayah tujuan, lalu klik aplikasi target.
CatatanIkon di kolom Language memiliki arti sebagai berikut:
: Aplikasi Java yang terhubung ke Application Monitoring.
: Aplikasi Go yang dipantau oleh Application Monitoring.
: Aplikasi Python yang dipantau oleh Application Monitoring.-: Aplikasi yang terintegrasi dengan Managed Service for OpenTelemetry.
Di bilah navigasi atas, pilih .
Pada bagian Sampling Settings, atur Sampling strategy menjadi Fixed sampling rate. Pada bidang Sample Rate Percentage, masukkan angka. Misalnya, masukkan 10 untuk mengambil sampel 10% dari jejak.
CatatanPerubahan berlaku segera tanpa perlu restart aplikasi. Nilai default adalah 10 untuk aplikasi Java dan Go, serta 100 untuk aplikasi Python. Laju pengambilan sampel yang lebih tinggi mengonsumsi lebih banyak sumber daya sistem, sehingga kami menyarankan Anda mempertahankan nilai default.
Klik Save.
Adaptive sampling
Dalam skenario dunia nyata, traffic dapat sangat bervariasi di berbagai layanan dalam suatu aplikasi. Antarmuka baca sering menerima jauh lebih banyak permintaan daripada antarmuka tulis, tetapi data jejaknya umumnya kurang bernilai. Untuk mencegah fixed-rate sampling mengumpulkan terlalu banyak jejak bertraffic tinggi namun bernilai rendah, ARMS menyediakan strategi adaptive sampling. Strategi ini menggunakan algoritma berbasis frekuensi untuk memilih 1.000 antarmuka teratas berdasarkan volume panggilan. Pengambilan sampel untuk setiap antarmuka ini diisolasi, dengan laju 10 jejak per detik. Antarmuka di luar 1.000 teratas dikelompokkan ke dalam kategori "Other" tunggal, yang berbagi kuota gabungan sebesar 10 jejak per detik. Span yang diambil sampelnya dengan strategi ini ditandai dengan atribut sample.reason dan nilai s6. Setelah mengaktifkan adaptive sampling, Anda dapat melihat sample.reason ini di atribut span, di mana nilai s6 menunjukkan alasan pengambilan sampel ini.
Untuk mengonfigurasi adaptive sampling:
-
Masuk ke Konsol ARMS. Di panel navigasi kiri, pilih .
Di bagian atas halaman Application List, pilih Wilayah tujuan, lalu klik aplikasi target.
CatatanIkon di kolom Language memiliki arti sebagai berikut:
: Aplikasi Java yang terhubung ke Application Monitoring.
: Aplikasi Go yang dipantau oleh Application Monitoring.
: Aplikasi Python yang dipantau oleh Application Monitoring.-: Aplikasi yang terintegrasi dengan Managed Service for OpenTelemetry.
Di bilah navigasi atas, pilih .
Pada bagian Sampling Settings, atur Sampling strategy menjadi Adaptive Sampling.
CatatanPerubahan berlaku segera tanpa perlu restart aplikasi.
Klik Save.
Strategi non-head-based sampling
Strategi head-based sampling tidak dapat menjamin pengambilan sampel span dengan karakteristik tertentu yang sering kali sangat menarik, seperti span dengan error, latensi tinggi, atau exception, serta span dari antarmuka bertraffic sangat rendah atau antarmuka yang ditentukan secara kustom. Hal ini karena strategi tersebut membuat keputusan pengambilan sampel hanya pada titik awal jejak, sehingga tidak dapat menjamin kelengkapan jejak.
Minimum sampling for all interfaces
Tidak diperlukan konfigurasi. Strategi ini secara otomatis memastikan bahwa setidaknya satu jejak diambil sampelnya untuk setiap antarmuka per menit. Span yang diambil sampelnya dengan cara ini ditandai dengan atribut sample.reason dan nilai s2.
Sampling for failed or slow requests
Untuk menggunakan strategi pengambilan sampel ini, pastikan fitur Call chain compression di halaman Custom Configurations diaktifkan. Fitur ini diaktifkan secara default.
Suatu jejak diambil sampelnya jika panggilan antarmuka memenuhi salah satu kondisi berikut:
Error antarmuka: Untuk antarmuka berbasis HTTP, kode respons bukan 200. Untuk jenis antarmuka lain, metode yang diinstrumentasi melemparkan exception.
Exception eksekusi internal: Terjadi exception selama eksekusi internal panggilan antarmuka tetapi tidak disebarkan ke titik masuk instrumentasi framework.
Latensi tinggi: Durasi panggilan antarmuka melebihi slow-call threshold antarmuka yang dikonfigurasi di halaman Custom Configurations.
CatatanJika statistik kuantil juga diaktifkan, aturan pengambilan sampel permintaan lambat juga dipicu jika durasi panggilan melebihi latensi P99 untuk antarmuka tersebut.
Span yang diambil sampelnya karena alasan-alasan ini ditandai dengan atribut sample.reason, yang diatur menjadi s9 (error antarmuka), s11 (exception internal), atau s10 (latensi tinggi), masing-masing.
Custom sampling
Jika strategi pengambilan sampel lain tidak mengumpulkan semua jejak yang Anda butuhkan, Anda dapat menggunakan custom sampling untuk memastikan antarmuka tertentu selalu diambil sampelnya (laju pengambilan sampel 100%). Anda dapat menentukan antarmuka berdasarkan nama eksaknya, awalan, atau akhiran. Span yang diambil sampelnya dengan strategi ini membawa atribut dengan kunci sample.reason dan nilai s3.
Untuk mengonfigurasi pengambilan sampel kustom:
-
Masuk ke Konsol ARMS. Di panel navigasi kiri, pilih .
Di bagian atas halaman Application List, pilih Wilayah tujuan, lalu klik aplikasi target.
CatatanIkon di kolom Language memiliki arti sebagai berikut:
: Aplikasi Java yang terhubung ke Application Monitoring.
: Aplikasi Go yang dipantau oleh Application Monitoring.
: Aplikasi Python yang dipantau oleh Application Monitoring.-: Aplikasi yang terintegrasi dengan Managed Service for OpenTelemetry.
Di bilah navigasi atas, pilih .
Pada bagian Sampling Settings, tentukan antarmuka, awalan antarmuka, dan akhiran antarmuka yang ingin Anda ambil sampelnya sepenuhnya.
CatatanPerubahan berlaku segera tanpa perlu restart aplikasi.
Klik Save.
Cara kerja
Pertimbangkan jalur jejak A > B > C. Keputusan akhir untuk melaporkan span untuk panggilan bisnis ditentukan oleh kombinasi strategi pengambilan sampel. Proses keputusan, yang ditunjukkan dalam bagan alir berikut, dijalankan setiap kali permintaan tiba di A, B, dan C. Namun, beberapa langkah dilewati tergantung pada apakah span saat ini merupakan root span atau local root span.
Warna dalam bagan alir memiliki arti sebagai berikut:
Ungu: Head-based sampling standar. Hanya dipicu pada root span jejak. Dalam contoh A > B > C, strategi ini hanya dipicu di A.
Biru: Strategi ini dapat dipicu di node mana pun dalam jejak jika head-based sampling tidak dipicu. Misalnya, jika A memutuskan untuk tidak mengambil sampel permintaan, B mengevaluasi ulang apakah akan mengambil sampelnya berdasarkan strategi custom sampling dan minimum sampling for all interfaces miliknya sendiri. Jika B memutuskan untuk mengambil sampel, penanda pengambilan sampelnya disebarkan ke C. Strategi ini dapat dipicu di A, B, dan C.
Hijau: Strategi ini dapat dipicu di node mana pun jika keputusan pengambilan sampel saat ini adalah "jangan ambil sampel", tetapi tidak memengaruhi keputusan pengambilan sampel untuk layanan downstream. Misalnya, jika A memutuskan untuk tidak mengambil sampel permintaan, B mungkin tetap memutuskan untuk mengambil sampelnya berdasarkan strategi sampling for failed or slow requests. Dalam kasus ini, B tidak menyebarkan penanda pengambilan sampel ke C. Strategi ini dapat dipicu di A, B, dan C.
Dokumen terkait
Setelah jejak dikumpulkan, Anda dapat menganalisis data yang tersimpan secara real time dengan menggabungkan berbagai kondisi filter dan dimensi agregasi. Untuk informasi selengkapnya, lihat analisis jejak.