Cloud Trace dan Anthos Service Mesh

Cloud Trace adalah sistem pelacakan terdistribusi yang mengumpulkan data latensi dari aplikasi dan menampilkannya secara mendekati real-time. Hal ini memungkinkan Anda mengikuti permintaan contoh melalui sistem terdistribusi, mengamati panggilan jaringan, dan membuat profil sistem Anda secara menyeluruh.

Cloud Trace tersedia dengan penginstalan Anthos Service Mesh di platform berikut:

  • GKE di Google Cloud
  • Cluster GKE Enterprise secara lokal jika Anda menginstal dengan certificate authority Anthos Service Mesh (Mesh CA)

Perhatikan bahwa Cloud Trace dinonaktifkan secara default. Setelah diaktifkan, halaman Anthos Service Mesh di Konsol Google Cloud menyediakan link ke trace di halaman Cloud Trace . Untuk mengetahui informasi harga selengkapnya, lihat halaman harga Cloud Trace.

Aktifkan Cloud Trace

Bagian ini menunjukkan cara mengaktifkan Cloud Trace.

Terkelola

Bagian ini menunjukkan cara mengaktifkan Cloud Trace di Anthos Service Mesh terkelola.

  1. Jalankan perintah berikut:

    cat <<EOF | kubectl apply -f -
    apiVersion: v1
    data:
       mesh: |-
          defaultConfig:
            tracing:
              stackdriver: {}
    kind: ConfigMap
    metadata:
       name: istio-release-channel
       namespace: istio-system
    EOF
    

    dengan release-channel sebagai saluran rilis (asm-managed, asm-managed-stable, atau asm-managed-rapid).

  2. Jalankan perintah berikut untuk melihat configmap:

    kubectl get configmap istio-release-channel -n istio-system -o yaml
    
  3. Untuk memverifikasi bahwa Cloud Trace diaktifkan, pastikan baris berikut muncul di bagian mesh:.

    ...
    apiVersion: v1
    data:
       mesh: |
       ....
       defaultConfig:
          tracing:
             stackdriver:{}
    ...
    
  4. Mulai ulang proxy.

    Perhatikan bahwa konfigurasi tracer saat ini adalah bagian dari konfigurasi bootstrap proxy, sehingga setiap pod harus dimulai ulang dan dimasukkan ulang untuk mengambil update tracer. Misalnya, Anda dapat menggunakan perintah berikut untuk memulai ulang pod yang termasuk dalam deployment:

    kubectl rollout restart deployment -n NAMESPACE DEPLOYMENT_NAME

Dalam cluster

Bagian ini menunjukkan cara mengaktifkan Cloud Trace di Anthos Service Mesh dalam cluster.

Untuk mengaktifkan Cloud Trace, deploy ulang bidang kontrol yang dikelola pelanggan menggunakan file overlay berikut. Untuk informasi selengkapnya tentang file overlay, lihat Tentang file overlay.

Default

Jalankan perintah berikut untuk mengaktifkan Cloud Trace:

 ./asmcli install \
    OTHER_FLAGS \
    --option cloud-trace

Perintah ini menerapkan file overlay berikut untuk mengaktifkan perekaman aktivitas dengan opsi default. Perhatikan bahwa frekuensi sampling default adalah 1%. Jika ingin mengganti default, Anda harus menggunakan --custom-overlay.

 apiVersion: install.istio.io/v1alpha1
 kind: IstioOperator
 spec:
 meshConfig:
    enableTracing: true
 values:
    global:
       proxy:
         tracer: stackdriver

Untuk daftar opsi, lihat paket anthos-service-mesh.

Khusus

Anda dapat mengganti nilai default dengan menentukan nilai tracing.sampling. Nilai ini harus dalam rentang 0,0 hingga 100,0 dengan presisi 0,01. Misalnya, untuk melacak 5 permintaan dari setiap 10.000 permintaan,gunakan 0, 05.

Contoh berikut menunjukkan frekuensi sampling 100% (yang hanya akan Anda lakukan untuk tujuan demo atau pemecahan masalah).

 apiVersion: install.istio.io/v1alpha1
 kind: IstioOperator
 spec:
 meshConfig:
    enableTracing: true
    defaultConfig:
       tracing:
       sampling: 100
 values:
    global:
       proxy:
         tracer: stackdriver

Jalankan perintah berikut untuk mengaktifkan Cloud Trace:

 ./asmcli install \
    OTHER_FLAGS \
    --custom_overlay PATH_TO_FILE

Perlu diperhatikan bahwa konfigurasi tracer adalah bagian dari konfigurasi bootstrap proxy, sehingga pod harus dimulai ulang dan dimasukkan ulang untuk mengambil update tracer. Gunakan perintah berikut untuk memulai ulang pod yang termasuk dalam deployment:

kubectl rollout restart deployment -n NAMESPACE DEPLOYMENT_NAME

Melacak propagasi konteks

Meskipun proxy file bantuan dapat secara otomatis mengirim span rekaman aktivitas, proxy tersebut memerlukan beberapa petunjuk untuk mengaitkan seluruh rekaman aktivitas. Aplikasi perlu menyebarkan header HTTP yang sesuai sehingga saat proxy mengirim informasi span, span dapat dikorelasikan dengan benar ke dalam satu pelacakan.

Untuk melakukannya, aplikasi harus mengumpulkan dan menyebarkan header yang sesuai dari permintaan masuk ke permintaan keluar. Konfigurasi pelacakan Stackdriver Anthos Service Mesh akan menerima salah satu format header berikut, dan akan menerapkan semua format berikut:

  • B3 (x-b3-traceid, x-b3-spanid, x-b3parentspanid, x-b3-sampled, x-b3-flags)
  • TraceContext W3C (traceparent)
  • Google Cloud Trace (x-cloud-trace-context)
  • TraceBin gRPC (grpc-trace-bin)

Artinya, aplikasi Anda dapat menggunakan salah satu format tersebut untuk menyebarkan konteks pelacakan dan trace akan dibuat serta ditetapkan ke Stackdriver sebagaimana mestinya.

Contoh

Berikut adalah contoh permintaan HTTP-Get dengan header traceparent dalam permintaan asli. Perhatikan header konteks rekaman aktivitas tambahan yang ditambahkan oleh proxy.

$ kubectl exec -it sleep-557747455f-n6flv -- curl "httpbin:8000/anything?freeform=" -H "accept: application/json" -H "Traceparent: 00-7543d15e09e5d61801d4f74cde1269b8-604ef051d35c5b3f-01" -vv
*   Trying 10.12.3.52:8000...
* Connected to httpbin (10.12.3.52) port 8000 (#0)
> GET /anything?freeform= HTTP/1.1
> Host: httpbin:8000
> User-Agent: curl/7.80.0-DEV
> accept: application/json
> Traceparent: 00-7543d15e09e5d61801d4f74cde1269b8-604ef051d35c5b3f-01
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< server: envoy
< date: Wed, 10 Nov 2021 20:36:04 GMT
< content-type: application/json
< content-length: 1032
< access-control-allow-origin: *
< access-control-allow-credentials: true
< x-envoy-upstream-service-time: 5
<
{
  "args": {
    "freeform": ""
  },
  "data": "",
  "files": {},
  "form": {},
  "headers": {
    "Accept": "application/json",
    "Grpc-Trace-Bin": "AAB1Q9FeCeXWGAHU90zeEmm4AaDHmGRtdM7wAgE",
    "Host": "httpbin:8000",
    "Traceparent": "00-7543d15e09e5d61801d4f74cde1269b8-a0c798646d74cef0-01",
    "User-Agent": "curl/7.80.0-DEV",
    "X-B3-Sampled": "1",
    "X-B3-Spanid": "a0c798646d74cef0",
    "X-B3-Traceid": "7543d15e09e5d61801d4f74cde1269b8",
    "X-Cloud-Trace-Context": "7543d15e09e5d61801d4f74cde1269b8/11585396123534413552;o=1",
    "X-Envoy-Attempt-Count": "1",
    "X-Forwarded-Client-Cert": "<REDACTED>"
  },
  "json": null,
  "method": "GET",
  "origin": "127.0.0.6",
  "url": "http://httpbin:8000/anything?freeform="
}

Perhatikan bahwa dalam kumpulan header permintaan yang ditampilkan, terdapat set lengkap header konteks rekaman aktivitas.

Untuk mengetahui contoh lain yang menyebarkan header, lihat propagasi konteks pelacakan.

Membuat rekaman aktivitas dari klien dengan ID kustom

Untuk membuat rekaman aktivitas dari klien dengan ID kustom, gunakan perintah curl untuk membuat permintaan dengan klien eksternal dan memaksanya untuk menampilkan rekaman aktivitas. Contoh:

curl $URL --header "x-client-trace-id: 105445aa7843bc8bf206b12000100000"

Untuk mengetahui informasi selengkapnya tentang x-client-trace-id, lihat dokumentasi Envoy.

Mengakses rekaman aktivitas

Melihat contoh trace untuk layanan

Untuk melihat sampling trace untuk layanan di aplikasi Anda, ikuti langkah-langkah berikut:

  1. Buka halaman Anthos Service Mesh di Konsol Google Cloud.

    Buka halaman Anthos Service Mesh

  2. Di bagian Layanan, pilih nama Layanan yang ingin diperiksa.

    Screenshot berikut menunjukkan contoh Layanan frontend.

    Grafik rekaman aktivitas Anthos Service Mesh

  3. Di bagian Pelacakan permintaan, klik pelacakan mana pun untuk melihat informasi selengkapnya.

    Screenshot berikut menunjukkan contoh subpanel permintaan rekaman aktivitas.

    Sub-panel rekaman aktivitas Anthos Service Mesh

Lihat semua trace

Untuk melihat semua trace untuk Layanan, ikuti langkah-langkah berikut:

  1. Buka halaman Anthos Service Mesh di Konsol Google Cloud.

    Buka halaman Anthos Service Mesh

  2. Di bagian Layanan, pilih nama Layanan yang ingin diperiksa.

  3. Buka halaman Metrics.

  4. Tentukan rentang waktu dari menu dropdown Time Span atau tetapkan span kustom dengan linimasa.

  5. Klik Lihat pelacakan.

Trace untuk layanan di Anthos Service Mesh berisi informasi berikut:

  • Latensi permintaan di berbagai layanan dalam mesh.
  • Properti permintaan HTTP, termasuk ID, URL, ukuran, latensi, dan protokol.
  • Nama layanan, namespace, dan ID mesh masing-masing sebagai bagian dari label istio.canonical_service, istio.namespace, dan istio.mesh_id.

Langkah selanjutnya