Pengambilan sampel trace

Sampling rekaman aktivitas menentukan permintaan dan rentang mana yang di-ingest Cloud Trace, membantu Anda mengontrol biaya penyimpanan dan tetap berada dalam kuota sambil merekam data yang cukup untuk memecahkan masalah performa. Untuk mengelola volume permintaan yang tinggi, komponen dalam sistem pelacakan terdistribusi biasanya hanya mengambil sampel sebagian kecil dari rekaman aktivitas atau mengikuti keputusan pengambilan sampel rentang induk.

Sampling berbeda dengan penerapan konteks: sampling mengontrol apakah komponen mencatat data rentang, sedangkan penerapan konteks meneruskan ID rekaman aktivitas antar-komponen sehingga rentang yang diambil sampelnya dapat ditautkan.

Strategi pengambilan sampel

Keputusan pengambilan sampel dapat berbasis head atau berbasis tail. Dalam sampling berbasis head, keputusan sampling dibuat saat permintaan diterima oleh komponen yang memproses rentang. Dalam pengambilan sampel berbasis ekor, keputusan pengambilan sampel ditunda hingga setelah seluruh rekaman aktivitas tersedia.

Anda mungkin menemukan frasa "sampling 100%" dalam dokumentasi untuk sistem pelacakan terdistribusi. Frasa ini mungkin berlaku untuk rekaman aktivitas atau komponen. Jika diterapkan ke rekaman aktivitas, berarti semua rentang telah diambil sampelnya, atau dengan kata lain, rekaman aktivitas telah selesai. Jika diterapkan pada komponen, artinya komponen tersebut mengambil sampel setiap rentang yang diprosesnya.

Pengambilan sampel berbasis kepala

Sampler berbasis header biasanya dikonfigurasi untuk selalu mengambil sampel rentang atau menggunakan strategi pengambilan sampel probabilistik:

  • Dengan konfigurasi selalu ambil sampel, komponen yang memproses dan menulis data rekaman aktivitas akan mengambil sampel setiap rentang. Idealnya, semua rekaman aktivitas sudah lengkap, sehingga Anda memiliki informasi yang diperlukan untuk memecahkan masalah kegagalan. Namun, konfigurasi selalu sampel dapat menyebabkan Anda melampaui kuota atau batas biaya penyimpanan.

  • Dengan pengambilan sampel probabilistik, tidak semua rentang diambil sampelnya. Perilaku sebenarnya untuk pendekatan ini bergantung pada penerapan komponen. Dalam beberapa penerapan, semua rentang memiliki probabilitas yang sama untuk diambil sampelnya. Di span lain, keputusan pengambilan sampel induk memengaruhi apakah span diambil sampelnya atau tidak.

Rekaman aktivitas mungkin tidak berisi setiap rentang. Jika Anda menggunakan pengambilan sampel probabilistik, melampaui kuota, atau menggunakan komponen yang memproses tetapi tidak mengambil sampel rentang, maka rekaman aktivitas yang tidak lengkap akan terjadi.

Pengambilan sampel berbasis ekor

Cloud Trace tidak mendukung pengambilan sampel berbasis ekor; keputusan pengambilan sampel harus dibuat di komponen yang mengirim data ke Cloud Trace.

Jika menggunakan pengambilan sampel berbasis ekor, Anda juga dapat menggunakan server perantara untuk menerima data rekaman aktivitas, mengevaluasi keputusan pengambilan sampel, dan meneruskan rentang yang diambil sampelnya ke Trace. Misalnya, Anda dapat menggunakan OpenTelemetry Collector dengan Tail Sampling Processor untuk membuat keputusan sampling yang tertunda.

Jika Anda berencana menggunakan pengambilan sampel ekor, pertimbangkan hal berikut:

  • Anda harus menyimpan semua rentang dalam rekaman aktivitas sebelum membuat keputusan pengambilan sampel. Oleh karena itu, Anda mungkin memerlukan penyimpanan sementara dalam jumlah besar atau menimbulkan biaya operasional lainnya.
  • Secara umum, semua komponen yang dapat membuat rentang untuk rekaman aktivitas perlu berkoordinasi. Biasanya, developer yang menggunakan OpenTelemetry akan merutekan semua rentang untuk ID pelacakan yang sama ke pengumpul yang sama.

Komponen membuat keputusan pengambilan sampel

Setiap komponen membuat keputusannya sendiri tentang apakah akan mengambil sampel rentang yang sedang diprosesnya. Namun, keputusan pengambilan sampel induk, yang mungkin tersedia untuk komponen melalui konteks rekaman aktivitas, dapat memengaruhi keputusan komponen. Aplikasi yang menggunakan header traceparent dapat meneruskan keputusan sampling induk menggunakan flag sampled.

Misalnya, asumsikan setiap komponen memiliki aturan yang menyatakan "jika span induk diambil sampelnya, maka ambil sampel span saat ini; jika tidak, ambil sampel 50% span". Dalam skenario ini, hal berikut ini benar:

  • Rentang root menentukan apakah semua rentang dalam rekaman aktivitas diambil sampelnya.
  • Saat rentang root diambil sampelnya, semua rentang dalam rekaman aktivitas akan diambil sampelnya. Oleh karena itu, pelacakan selesai.

Layanan pengambilan sampel dan Google Cloud

Setiap layanan Google Cloud membuat keputusan pengambilan sampelnya sendiri, dan tidak semua layanan Google Cloud mengambil sampel. Artinya, layanan mungkin tidak pernah mengirim data ke Cloud Trace.

Jika pengambilan sampel didukung oleh layanan Google Cloud , layanan tersebut biasanya menerapkan hal berikut:

  • Frekuensi sampel default.
  • Mekanisme untuk menggunakan keputusan pengambilan sampel induk sebagai petunjuk tentang apakah akan mengambil sampel rentang.
  • Frekuensi sampling maksimum.

Untuk meminta layanan Google Cloud menambahkan dukungan untuk pengambilan sampel, gunakan Issue Tracker Google.

Langkah berikutnya