Dokumen ini menjelaskan cara mengonfigurasi pelacakan terdistribusi untuk Load Balancer Aplikasi menggunakan Cloud Trace. Anda membuat kebijakan telemetri yang menargetkan aturan penerusan load balancer, lalu melihat trace yang dihasilkan di Cloud Trace.
Contoh dalam dokumen ini menggunakan aplikasi e-commerce yang memiliki arsitektur berikut:
- Load Balancer Aplikasi eksternal global yang menerima traffic pelanggan untuk etalase web.
- Load Balancer Aplikasi internal regional yang merutekan permintaan checkout dari etalase ke layanan keranjang, inventaris, dan pembayaran internal.
Untuk mengetahui informasi tentang cara kerja pelacakan terdistribusi, termasuk mode pengambilan sampel dan penanganan header konteks trace, lihat Ringkasan pelacakan terdistribusi.
Sebelum memulai
Aktifkan Cloud Trace API dan Network Services API di project Anda:
gcloud services enable \ cloudtrace.googleapis.com \ networkservices.googleapis.comPastikan Anda telah men-deploy load balancer yang didukung. Untuk informasi selengkapnya, lihat referensi berikut:
Catat nama dan cakupan aturan penerusan load balancer Anda. Cakupan aturan penerusan bergantung pada jenis load balancer:
- Aturan penerusan global: digunakan oleh Load Balancer Aplikasi eksternal global dan Load Balancer Aplikasi internal lintas region.
- Aturan penerusan regional: digunakan oleh Load Balancer Aplikasi eksternal regional dan Load Balancer Aplikasi internal regional.
Untuk mencantumkan aturan penerusan dalam project Anda, gunakan perintah
gcloud compute forwarding-rules list:gcloud compute forwarding-rules list
Peran yang diperlukan
Untuk mendapatkan izin yang diperlukan guna mengonfigurasi kebijakan telemetri dan melihat trace, minta administrator untuk memberi Anda peran Identity and Access Management (IAM) berikut di project Anda:
- Untuk membuat, memperbarui, atau menghapus kebijakan telemetri:
Compute Network Admin
(
roles/compute.networkAdmin) atau Compute Admin (roles/compute.admin) - Untuk melihat trace di konsol Google Cloud :
Cloud Trace User
(
roles/cloudtrace.user)
Agar load balancer dapat menulis span trace ke Cloud Trace, berikan
peran Cloud Trace Agent
(roles/cloudtrace.agent) di project Anda ke akun layanan berikut:
- Agen layanan Compute Engine:
service-PROJECT_NUMBER@compute-system. - Agen layanan Network Security:
service-PROJECT_NUMBER@gcp-sa-networksecurity. - Akun layanan workload backend Anda, jika backend Anda mengekspor span-nya sendiri ke Cloud Trace. Tanpa peran ini, Cloud Trace hanya menampilkan span load balancer, dan trace tidak berisi span backend.
Ganti PROJECT_NUMBER dengan nomor projectGoogle Cloud Anda.
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.
Konfigurasi kebijakan telemetri
Anda menentukan kebijakan telemetri dalam file YAML yang menggunakan format berikut:
name: "projects/PROJECT_ID/locations/LOCATION/telemetryPolicies/POLICY_NAME"
displayName: "DISPLAY_NAME"
telemetryTarget:
resources:
- "FORWARDING_RULE_URI"
tracingConfiguration:
samplingRate: SAMPLING_RATE
parentBasedSampling:
enabled: ENABLE_PARENT_BASED_SAMPLING
samplingRate: PARENT_BASED_SAMPLING_RATE
Tabel berikut menjelaskan kolom dalam kebijakan telemetri:
| Kolom | Deskripsi |
|---|---|
name |
Nama resource kebijakan telemetri. Ganti kode berikut:
|
displayName |
Opsional. Nama yang dapat dibaca manusia
(DISPLAY_NAME) untuk kebijakan telemetri. |
telemetryTarget.resources |
Daftar nama resource lengkap (
|
tracingConfiguration.samplingRate |
Proporsi permintaan yang akan dilacak
(SAMPLING_RATE), yang ditentukan sebagai nilai dari
0.0 (0%) hingga 1.0 (100%). Misalnya,
0.01 mengambil sampel 1% permintaan. Nilai defaultnya adalah
0.0. |
tracingConfiguration.parentBasedSampling.enabled |
Opsional. Apakah load balancer mematuhi flag sampel di header traceparent W3C yang masuk (ENABLE_PARENT_BASED_SAMPLING) adalah true atau false. Nilai defaultnya adalah false. Hanya didukung di Load Balancer Aplikasi internal. |
tracingConfiguration.parentBasedSampling.samplingRate |
Opsional. Proporsi permintaan yang diambil sampelnya di upstream untuk dilacak
(PARENT_BASED_SAMPLING_RATE),
yang ditentukan sebagai nilai dari 0.0 hingga 1.0. Misalnya, 1.0 melacak semua permintaan yang telah diambil sampelnya oleh klien atau layanan upstream. |
Mengonfigurasi pelacakan untuk load balancer eksternal
Contoh ini mengonfigurasi pengambilan sampel probabilistik pada aturan penerusan
Load Balancer Aplikasi eksternal global untuk etalase e-commerce. Frekuensi sampling 0.01
melacak 1% permintaan, yang menangkap latensi dan error edge sekaligus menjaga
biaya penyerapan Cloud Trace tetap dapat diprediksi selama traffic tinggi.
Buat file YAML bernama
storefront-tracing-policy.yaml:cat <<EOF > storefront-tracing-policy.yaml name: "projects/PROJECT_ID/locations/global/telemetryPolicies/storefront-tracing-policy" displayName: "Tracing policy for the storefront load balancer" telemetryTarget: resources: - "//compute.googleapis.com/projects/PROJECT_ID/global/forwardingRules/FORWARDING_RULE_NAME" tracingConfiguration: samplingRate: 0.01 EOFGanti kode berikut:
PROJECT_ID: ID project Google Cloud AndaFORWARDING_RULE_NAME: nama aturan penerusan global load balancer Anda
Untuk Load Balancer Aplikasi eksternal regional, ganti
globaldalam nama kebijakan dengan region aturan penerusan, dan gunakan format aturan penerusan regional.Impor kebijakan telemetri menggunakan perintah
gcloud beta network-services telemetry-policies import:gcloud beta network-services telemetry-policies import storefront-tracing-policy \ --source=storefront-tracing-policy.yaml \ --location=global
Mengonfigurasi pelacakan untuk load balancer internal
Contoh ini mengonfigurasi Load Balancer Aplikasi internal regional untuk layanan checkout dan pembayaran internal. Kebijakan ini menggunakan setelan pengambilan sampel berikut:
samplingRatedasar pengukuran sebesar0.01(1%) untuk permintaan yang tidak membawa keputusan pengambilan sampel upstream.- Sampling berbasis induk dengan
samplingRatesebesar1.0(100%), sehingga setiap permintaan checkout yang telah diambil sampelnya di etalase, atau oleh layanan upstream, dilacak di seluruh load balancer internal.
Untuk mengonfigurasi kebijakan, lakukan hal berikut:
Buat file YAML bernama
checkout-tracing-policy.yaml:cat <<EOF > checkout-tracing-policy.yaml name: "projects/PROJECT_ID/locations/REGION/telemetryPolicies/checkout-tracing-policy" displayName: "Tracing policy for the internal checkout load balancer" telemetryTarget: resources: - "//compute.googleapis.com/projects/PROJECT_ID/regions/REGION/forwardingRules/FORWARDING_RULE_NAME" tracingConfiguration: samplingRate: 0.01 parentBasedSampling: enabled: true samplingRate: 1.0 EOFGanti kode berikut:
PROJECT_ID: ID project Google Cloud AndaREGION: region aturan penerusan, sepertius-central1FORWARDING_RULE_NAME: nama aturan penerusan regional load balancer Anda
Untuk Load Balancer Aplikasi internal lintas region, gunakan
globalsebagai lokasi dalam nama kebijakan, dan gunakan format aturan penerusan global.Impor kebijakan telemetri:
gcloud beta network-services telemetry-policies import checkout-tracing-policy \ --source=checkout-tracing-policy.yaml \ --location=REGION
Memverifikasi kebijakan telemetri
Untuk memverifikasi bahwa kebijakan telemetri ada dan menargetkan aturan penerusan yang benar, gunakan perintah gcloud beta network-services telemetry-policies describe:
gcloud beta network-services telemetry-policies describe POLICY_NAME \
--location=LOCATION
Ganti kode berikut:
POLICY_NAME: nama kebijakan telemetriLOCATION:globalatau region kebijakan telemetri
Untuk mencantumkan semua kebijakan telemetri di suatu lokasi, gunakan
perintah
gcloud beta network-services telemetry-policies list:
gcloud beta network-services telemetry-policies list \
--location=LOCATION
Memperbarui kebijakan telemetri
Untuk mengubah setelan pengambilan sampel, atau menerapkan kebijakan yang sama ke aturan penerusan tambahan, lakukan hal berikut:
Edit file YAML kebijakan. Misalnya, untuk menerapkan kebijakan etalase ke beberapa aturan penerusan global, tambahkan setiap aturan penerusan ke daftar
telemetryTarget.resources:telemetryTarget: resources: - "//compute.googleapis.com/projects/PROJECT_ID/global/forwardingRules/storefront-https-fr" - "//compute.googleapis.com/projects/PROJECT_ID/global/forwardingRules/cart-https-fr"Impor kebijakan yang telah diperbarui:
gcloud beta network-services telemetry-policies import POLICY_NAME \ --source=POLICY_FILE \ --location=LOCATIONGanti
POLICY_FILEdengan jalur ke file YAML kebijakan Anda.
Lihat pelacakan
Setelah Anda mengonfigurasi pelacakan dan mengirim traffic melalui load balancer, lihat trace di konsol Google Cloud :
Di konsol Google Cloud , buka halaman Trace Explorer.
Pilih project Google Cloud Anda.
Di kolom Filter, masukkan filter untuk menemukan trace yang ingin Anda periksa. Misalnya, ID atribut atau batas latensi.
Secara opsional, untuk menjelajahi trace tertentu, buka toolbar, klik Trace ID, lalu masukkan ID trace.
Klik trace untuk melihat span-nya dalam tampilan linimasa dan grafik.
Periksa span load balancer untuk melihat detail seperti total durasi dan backend yang menyajikan permintaan.
Untuk mengetahui informasi selengkapnya tentang cara menggunakan Trace Explorer, lihat Menemukan dan menjelajahi trace.
Menghubungkan trace dengan log dan metrik
Anda dapat menghubungkan span trace load balancer dengan log dan metrik permintaan untuk mengisolasi sumber latensi atau error.
Menghubungkan trace dengan log
Jika Anda mengaktifkan logging
di layanan backend, load balancer akan menambahkan kolom trace ke setiap entri log
permintaan untuk permintaan yang dijadikan sampel. Kolom ini menggunakan format berikut:
projects/PROJECT_ID/traces/TRACE_ID
Melihat trace dari entri log load balancer
Di konsol Google Cloud , buka halaman Logs Explorer.
Luaskan entri log load balancer.
Di ringkasan entri log, klik ikon trace.
Pilih Lihat detail trace.
Trace akan terbuka di halaman Trace Explorer.
Melihat log load balancer dari trace
Di konsol Google Cloud , buka halaman Trace Explorer.
Klik trace untuk membuka panel Details.
Klik View Logs.
Entri log load balancer untuk permintaan akan muncul.
Menghubungkan trace dengan metrik
Bandingkan lonjakan latensi dalam metrik load balancer dengan perincian span trace untuk menentukan apakah latensi berasal dari load balancer atau backend. Anda dapat melihat dan membuat kueri metrik ini di Metrics Explorer di Cloud Monitoring. Gunakan metrik berikut:
- Load Balancer Aplikasi eksternal global:
loadbalancing.googleapis.com/https/total_latenciesdanloadbalancing.googleapis.com/https/backend_latencies - Load Balancer Aplikasi eksternal regional:
loadbalancing.googleapis.com/https/external/regional/total_latencies - Load Balancer Aplikasi Internal:
loadbalancing.googleapis.com/https/internal/total_latencies
Menonaktifkan pelacakan
Untuk berhenti melacak permintaan untuk load balancer, lakukan salah satu tindakan berikut:
- Hapus aturan penerusan dari daftar
telemetryTarget.resourceskebijakan, lalu impor kebijakan yang telah diperbarui. Hapus kebijakan telemetri menggunakan perintah
gcloud beta network-services telemetry-policies delete:gcloud beta network-services telemetry-policies delete POLICY_NAME \ --location=LOCATION
Praktik terbaik
Pertimbangkan praktik terbaik berikut saat Anda mengonfigurasi pelacakan terdistribusi:
- Sesuaikan frekuensi sampling untuk volume traffic Anda: untuk workload produksi dengan traffic tinggi, gunakan
samplingRatesebesar0.01(1%) atau0.001(0,1%) untuk menyeimbangkan visibilitas dengan biaya penyerapan Cloud Trace. - Gunakan pengambilan sampel berbasis induk untuk arsitektur multi-tingkat: di Load Balancer Aplikasi internal, aktifkan pengambilan sampel berbasis induk sehingga permintaan yang diambil sampelnya di upstream dilacak di setiap hop internal.
- Lakukan instrumentasi backend Anda: gunakan SDK OpenTelemetry dengan propagator W3C Trace Context di layanan backend Anda sehingga span backend bergabung dengan trace yang dimulai oleh load balancer.
Memecahkan masalah
Bagian ini menjelaskan masalah umum dan penyelesaiannya.
Trace tidak muncul di Cloud Trace
Jika trace tidak muncul di Cloud Trace, lakukan hal berikut:
Pastikan Cloud Trace API diaktifkan di project Anda:
gcloud services enable cloudtrace.googleapis.com \ --project=PROJECT_IDPastikan peran Agen Cloud Trace (
roles/cloudtrace.agent) diberikan ke akun layanan yang tercantum dalam Peran yang diperlukan.Pastikan kebijakan telemetri ada di lokasi yang benar dan menargetkan aturan penerusan yang benar. Untuk mengetahui informasi selengkapnya, lihat Memverifikasi kebijakan telemetri.
Periksa
samplingRateyang dikonfigurasi. Jika volume traffic atau frekuensi sampling rendah, load balancer mungkin tidak langsung menangkap trace. Untuk mengonfirmasi bahwa pelacakan berfungsi, tetapkansamplingRateke1.0untuk sementara, lalu pulihkan rasio produksi setelah Anda selesai melakukan pengujian.
Span trace terputus atau tidak lengkap
Jika span load balancer muncul sebagai trace root terpisah, bukan sebagai bagian dari trace aplikasi Anda, lakukan hal berikut:
Untuk Load Balancer Aplikasi internal, pastikan pengambilan sampel berbasis induk diaktifkan (
parentBasedSampling.enabled: true) dalam kebijakan telemetri.Pastikan akun layanan workload klien dan backend Anda memiliki peran Agen Cloud Trace (
roles/cloudtrace.agent), sehingga span-nya dapat diekspor ke Cloud Trace.Pastikan aplikasi Anda menggunakan OpenTelemetry SDK dengan propagasi W3C Trace Context yang diaktifkan, sehingga header
traceparentdisebarkan di seluruh batas layanan. Untuk mengetahui informasi selengkapnya, lihat dokumentasi propagasi konteks OpenTelemetry.