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
mendukung0
(induk tidak diambil sampelnya) dan1
(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:
- Apigee
- App Engine
- Cloud Endpoints
- Cloud Functions
- Cloud Load Balancing
- Cloud Run
- Cloud Scheduler
- Cloud Tasks
- Pub/Sub
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
Pelajari Pengambilan sampel trace.
Referensi OpenTelemetry: