Konteks rekaman aktivitas

Dokumen ini menjelaskan secara singkat konteks, yang mengacu pada status, dan pada propagasi konteks, yang mengacu pada penerusan informasi status ke operasi turunan. Untuk pelacakan terdistribusi, ID trace dan ID span yang sedang diproses harus diteruskan ke operasi turunan.

Operasi turunan membuat span dan menetapkan kolom berikut:

  • ID Span: ID unik untuk operasi turunan. Jika operasi yang sama dijalankan beberapa kali, akan ada beberapa span untuk operasi tersebut, masing-masing dengan ID unik.
  • ID Trace: ID unik dari operasi menyeluruh tempat operasi khusus ini terjadi. Nilai {i>field<i} ini disediakan oleh induk.
  • ID span induk: ID unik span induk. Nilai kolom ini diberikan oleh induk. Untuk span root, ID ini adalah null.

Nilai kolom ID rekaman aktivitas, ID span, dan ID span induk memungkinkan sistem pelacakan terdistribusi menautkan span secara benar untuk membentuk pelacakan. Misalnya, Cloud Trace menyimpan span di repositori, dan menggunakan kolom ID ini untuk mengidentifikasi span mana yang menyusun trace.

Konteks mungkin mencakup informasi status lain yang berguna untuk pelacakan terdistribusi. Misalnya, standar World Wide Web Consortium (W3C) menyertakan informasi tentang apakah span induk diambil sampelnya.

Protokol untuk penerapan konteks

Bagian berikut menjelaskan cara protokol permintaan tertentu menyebarkan konteks.

Permintaan HTTP

Untuk permintaan HTTP, penerapan konteks biasanya dilakukan melalui header HTTP seperti header traceparent dan tracestate, yang distandarkan oleh W3C. Layanan Google Cloud yang mendukung propagasi konteks rekaman aktivitas biasanya mendukung traceparent dan header X-Cloud-Trace-Context lama.

Jika memungkinkan, sebaiknya gunakan header traceparent di aplikasi Anda. Aplikasi Anda mungkin perlu menggunakan header X-Cloud-Trace-Context lama atau mungkin perlu mendukung penerimaan konteks rekaman aktivitas dalam format yang berbeda.

Jika Anda memiliki aplikasi yang hanya mendukung header X-Cloud-Trace-Context, sebaiknya update aplikasi Anda untuk mendukung dan memprioritaskan header traceparent. Aplikasi Anda dapat terus menggunakan header X-Cloud-Trace-Context sebagai solusi penggantian.

Tabel berikut merangkum beberapa perbedaan signifikan antara kedua header tersebut:

Atribut traceparent
header
Header X-Cloud-Trace-Context
Pemisah tanda hubung (-) garis miring (/) dan titik koma (;)
Representasi ID
span
Heksadesimal Desimal

Header X-Cloud-Trace-Context lama

Header X-Cloud-Trace-Context yang digunakan oleh Google Cloud mendahului spesifikasi W3C. Untuk kompatibilitas mundur, beberapa layanan Google Cloud terus menerima, membuat, dan menyebarkan header X-Cloud-Trace-Context. Namun, mungkin sistem ini juga mendukung header traceparent.

Header X-Cloud-Trace-Context memiliki format berikut:

X-Cloud-Trace-Context: TRACE_ID/SPAN_ID;o=OPTIONS

Kolom header didefinisikan sebagai berikut:

  • TRACE_ID adalah nilai heksadesimal 32 karakter yang mewakili angka 128-bit.
  • SPAN_ID adalah representasi desimal 64-bit dari ID span yang tidak ditandatangani.
  • OPTIONS mendukung 0 (induk tidak diambil sampelnya) dan 1 (induk diambil sampelnya).

Permintaan gRPC

Untuk permintaan gRPC, penerapan konteks dilakukan menggunakan metadata gRPC, yang diterapkan di atas header HTTP. Aplikasi gRPC mungkin menggunakan header traceparent atau kunci konteks metadata yang disebut grpc-trace-bin.

Untuk komponen yang Anda miliki, sebaiknya gunakan header traceparent.

Penerapan konteks untuk layanan Google Cloud

Layanan Google Cloud dapat bertindak sebagai inisiator atau perantara dalam pemrosesan permintaan. Misalnya, layanan berikut diketahui berpartisipasi dalam permintaan pemrosesan:

Dukungan untuk inisiasi dan penerapan konteks rekaman aktivitas bergantung pada layanan Google Cloud tertentu. Untuk meminta agar layanan Google Cloud menambahkan dukungan untuk penerapan konteks, gunakan Issue Tracker Google.

Penerapan konteks di aplikasi Anda

Beberapa library instrumentasi, seperti OpenTelemetry, otomatis menyebarkan objek context yang berisi data yang diperlukan untuk perekaman aktivitas. Jika Anda menggunakan jenis library ini, span yang dihasilkan oleh aplikasi Anda akan dikonfigurasi dengan benar. Untuk mengetahui daftar library OpenTelemetry yang mendukung pelacakan, lihat API & SDK Bahasa. Untuk contoh instrumentasi, lihat Membuat rekaman aktivitas dan metrik dengan Go.

Jika Anda mengandalkan library open source, tentukan apakah propagasi konteks tersedia dan apakah konfigurasi diperlukan.

Jika tidak ada library instrumentasi yang sesuai, Anda harus memastikan bahwa aplikasi menyebarkan konteks rekaman aktivitas ke operasi turunan.

Langkah selanjutnya