Dokumen ini menjelaskan secara singkat konteks, yang merujuk pada status, dan penyebaran konteks, yang merujuk pada penerusan informasi status ke operasi turunan. Untuk pelacakan terdistribusi, ID rekaman aktivitas 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 Rekaman Aktivitas: ID unik operasi menyeluruh tempat operasi keseluruhan tertentu ini terjadi. Nilai kolom 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 trace, ID span, dan ID span induk memungkinkan sistem pelacakan terdistribusi menautkan span dengan benar untuk membentuk trace. Misalnya, Cloud Trace menyimpan span di repositori, dan menggunakan kolom ID ini untuk mengidentifikasi span yang menyusun rekaman aktivitas.
Konteks mungkin menyertakan informasi status lain yang berguna untuk pelacakan terdistribusi. Misalnya, standar World Wide Web Consortium (W3C) menyertakan informasi tentang apakah span induk dipilih 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
diseragamkan oleh W3C.
Layanan Google Cloud yang mendukung penyebaran 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 | Header traceparent |
X-Cloud-Trace-Context header |
---|---|---|
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 sudah ada sebelum
spesifikasi W3C.
Untuk kompatibilitas mundur, beberapa layanan Google Cloud terus menerima,
membuat, dan menyebarkan header X-Cloud-Trace-Context
. Namun, kemungkinan
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 ditentukan sebagai berikut:
TRACE_ID
adalah nilai heksadesimal 32 karakter yang mewakili angka 128-bit.SPAN_ID
adalah representasi desimal 64-bit dari ID span tanpa tanda tangan.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
.
Penyebaran konteks untuk layanan Google Cloud
Layanan Google Cloud dapat bertindak sebagai inisiator atau perantara dalam pemrosesan permintaan. Misalnya, layanan berikut diketahui berpartisipasi dalam memproses permintaan:
- Apigee
- App Engine
- Cloud Endpoints
- Cloud Run Functions
- Cloud Load Balancing
- Cloud Run
- Cloud Scheduler
- Cloud Tasks
- Pub/Sub
Dukungan untuk inisiasi dan penyebaran konteks rekaman aktivitas bergantung pada layanan Google Cloud tertentu. Untuk meminta layanan Google Cloud menambahkan dukungan untuk penyebaran konteks, gunakan Pelacak Masalah Google.
Penyebaran konteks di aplikasi Anda
Beberapa library instrumentasi, seperti OpenTelemetry,
otomatis menyebarkan objek context
yang berisi data yang diperlukan
untuk pelacakan. 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 trace dan metrik dengan Go.
Jika Anda mengandalkan library open source, tentukan apakah penyebaran konteks tersedia dan apakah konfigurasi diperlukan.
Jika tidak ada library instrumentasi yang sesuai, Anda harus memastikan bahwa aplikasi Anda menyebarkan konteks rekaman aktivitas ke operasi turunan.
Langkah selanjutnya
Pelajari Pengambilan sampel rekaman aktivitas.
Referensi OpenTelemetry: