Melacak traffic masuk dengan Cloud Trace

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

  1. Aktifkan Cloud Trace API dan Network Services API di project Anda:

    gcloud services enable \
        cloudtrace.googleapis.com \
        networkservices.googleapis.com
    
  2. Pastikan Anda telah men-deploy load balancer yang didukung. Untuk informasi selengkapnya, lihat referensi berikut:

  3. 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:

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:

  • PROJECT_ID: ID project Google Cloud Anda.
  • LOCATION: lokasi kebijakan telemetri, yang harus cocok dengan cakupan aturan penerusan yang ditargetkan oleh kebijakan. Untuk aturan penerusan global, gunakan global. Untuk aturan penerusan regional, gunakan region aturan penerusan, seperti us-central1.
  • POLICY_NAME: nama kebijakan telemetri. Nama harus terdiri dari 4 hingga 63 karakter, diawali dengan huruf kecil, hanya berisi huruf kecil, angka, dan tanda hubung, serta diakhiri dengan huruf kecil atau angka.
displayName Opsional. Nama yang dapat dibaca manusia (DISPLAY_NAME) untuk kebijakan telemetri.
telemetryTarget.resources

Daftar nama resource lengkap (FORWARDING_RULE_URI) dari aturan penerusan yang menerapkan kebijakan. Anda dapat menentukan hingga 50 fasilitas. Gunakan salah satu format berikut:

  • Aturan penerusan global: //compute.googleapis.com/projects/PROJECT_ID/global/forwardingRules/FORWARDING_RULE_NAME
  • Aturan penerusan regional: //compute.googleapis.com/projects/PROJECT_ID/regions/REGION/forwardingRules/FORWARDING_RULE_NAME
Ganti kode berikut:
  • FORWARDING_RULE_NAME: nama aturan penerusan
  • REGION: region aturan penerusan, misalnya us-central1
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.

  1. 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
    EOF
    

    Ganti kode berikut:

    • PROJECT_ID: ID project Google Cloud Anda
    • FORWARDING_RULE_NAME: nama aturan penerusan global load balancer Anda

    Untuk Load Balancer Aplikasi eksternal regional, ganti global dalam nama kebijakan dengan region aturan penerusan, dan gunakan format aturan penerusan regional.

  2. 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:

  • samplingRate dasar pengukuran sebesar 0.01 (1%) untuk permintaan yang tidak membawa keputusan pengambilan sampel upstream.
  • Sampling berbasis induk dengan samplingRate sebesar 1.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:

  1. 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
    EOF
    

    Ganti kode berikut:

    • PROJECT_ID: ID project Google Cloud Anda
    • REGION: region aturan penerusan, seperti us-central1
    • FORWARDING_RULE_NAME: nama aturan penerusan regional load balancer Anda

    Untuk Load Balancer Aplikasi internal lintas region, gunakan global sebagai lokasi dalam nama kebijakan, dan gunakan format aturan penerusan global.

  2. 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 telemetri
  • LOCATION: global atau 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:

  1. 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"
    
  2. Impor kebijakan yang telah diperbarui:

    gcloud beta network-services telemetry-policies import POLICY_NAME \
        --source=POLICY_FILE \
        --location=LOCATION
    

    Ganti POLICY_FILE dengan jalur ke file YAML kebijakan Anda.

Lihat pelacakan

Setelah Anda mengonfigurasi pelacakan dan mengirim traffic melalui load balancer, lihat trace di konsol Google Cloud :

  1. Di konsol Google Cloud , buka halaman Trace Explorer.

    Buka Trace Explorer

  2. Pilih project Google Cloud Anda.

  3. Di kolom Filter, masukkan filter untuk menemukan trace yang ingin Anda periksa. Misalnya, ID atribut atau batas latensi.

  4. Secara opsional, untuk menjelajahi trace tertentu, buka toolbar, klik Trace ID, lalu masukkan ID trace.

  5. Klik trace untuk melihat span-nya dalam tampilan linimasa dan grafik.

  6. 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

  1. Di konsol Google Cloud , buka halaman Logs Explorer.

    Buka Logs Explorer

  2. Luaskan entri log load balancer.

  3. Di ringkasan entri log, klik ikon trace.

    Ikon rekaman aktivitas di samping ringkasan entri log di Logs Explorer.

  4. Pilih Lihat detail trace.

Trace akan terbuka di halaman Trace Explorer.

Melihat log load balancer dari trace

  1. Di konsol Google Cloud , buka halaman Trace Explorer.

    Buka Trace Explorer

  2. Klik trace untuk membuka panel Details.

  3. 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_latencies dan loadbalancing.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:

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 samplingRate sebesar 0.01 (1%) atau 0.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:

  1. Pastikan Cloud Trace API diaktifkan di project Anda:

    gcloud services enable cloudtrace.googleapis.com \
        --project=PROJECT_ID
    
  2. Pastikan peran Agen Cloud Trace (roles/cloudtrace.agent) diberikan ke akun layanan yang tercantum dalam Peran yang diperlukan.

  3. Pastikan kebijakan telemetri ada di lokasi yang benar dan menargetkan aturan penerusan yang benar. Untuk mengetahui informasi selengkapnya, lihat Memverifikasi kebijakan telemetri.

  4. Periksa samplingRate yang dikonfigurasi. Jika volume traffic atau frekuensi sampling rendah, load balancer mungkin tidak langsung menangkap trace. Untuk mengonfirmasi bahwa pelacakan berfungsi, tetapkan samplingRate ke 1.0 untuk 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:

  1. Untuk Load Balancer Aplikasi internal, pastikan pengambilan sampel berbasis induk diaktifkan (parentBasedSampling.enabled: true) dalam kebijakan telemetri.

  2. Pastikan akun layanan workload klien dan backend Anda memiliki peran Agen Cloud Trace (roles/cloudtrace.agent), sehingga span-nya dapat diekspor ke Cloud Trace.

  3. Pastikan aplikasi Anda menggunakan OpenTelemetry SDK dengan propagasi W3C Trace Context yang diaktifkan, sehingga header traceparent disebarkan di seluruh batas layanan. Untuk mengetahui informasi selengkapnya, lihat dokumentasi propagasi konteks OpenTelemetry.

Langkah berikutnya