Decoder traceparent — W3C Trace Context
Berhenti menghitung digit hex. Decoder traceparent online gratis — jalan di browser Anda, tanpa unggahan. Trace ID, span ID, 8 bit trace-flags, tracestate, Datadog/X-Ray/B3.
- Version
00- Trace ID
4bf92f3577b34da6a3ce929d0e0e4736- Parent ID (span ID)
00f067aa0ba902b7- Trace flags
01
| Bit | Mask | Nama | Status |
|---|---|---|---|
| 0 | 0x01 | sampled | 1 |
| 1 | 0x02 | random-trace-id | 0 |
| 2 | 0x04 | reserved | 0 |
| 3 | 0x08 | reserved | 0 |
| 4 | 0x10 | reserved | 0 |
| 5 | 0x20 | reserved | 0 |
| 6 | 0x40 | reserved | 0 |
| 7 | 0x80 | reserved | 0 |
Baca ini dengan operasi AND bitwise. Membandingkan seluruh byte dengan 01 akan salah melaporkan trace mana pun yang turut membawa bit cadangan.
- x-datadog-trace-id
11803532876627986230- x-datadog-tags: _dd.p.tid
4bf92f3577b34da6- x-datadog-parent-id
67667974448284343- AWS X-Ray trace ID
1-4bf92f35-77b34da6a3ce929d0e0e4736- b3 (single header)
4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-1- X-B3-TraceId
4bf92f3577b34da6a3ce929d0e0e4736- X-B3-SpanId
00f067aa0ba902b7- X-B3-Sampled
1
Datadog membawa 64 bit bawah dari trace ID sebagai string desimal dan 64 bit atas sebagai heksadesimal di sebuah tag. Mengirim seluruh nilai 128-bit sebagai desimal adalah alasan klasik trace ID dari log Anda tidak menemukan apa pun di UI.
ID X-Ray menyematkan timestamp 32-bit; trace ID W3C sama sekali tidak membawa timestamp. Tanggal di bawah hanya bermakna jika identifier itu memang berasal dari X-Ray.
| # | Key | Value | Status |
|---|---|---|---|
| 1 | rojo | 00f067aa0ba902b7 | OK |
| 2 | congo | t61rcWkgMzE | OK |
Format traceparent: Anatomi Field
| Field | Digit hex | Byte | Arti | Nilai tidak valid |
|---|---|---|---|---|
| version | 2 | 1 | Versi format. Selalu 00 hari ini; ff dilarang. | ff |
| trace-id | 32 | 16 | Menandai keseluruhan trace dari ujung ke ujung. | Nol semua |
| parent-id | 16 | 8 | Menandai span pemanggil, bukan permintaannya. | Nol semua |
| trace-flags | 2 | 1 | Field 8-bit — baca bit demi bit, jangan sebagai boolean. | — |
Nilai trace-flags: 00, 01, 02, dan 03 Dijelaskan
| Hex | Biner | sampled | random-trace-id | Arti |
|---|---|---|---|---|
| 00 | 00000000 | 0 | 0 | Hulu memilih tidak men-sample — lihat pemanggilnya, bukan layanan Anda. |
| 01 | 00000001 | 1 | 0 | Direkam normal. Inilah yang paling sering Anda lihat. |
| 02 | 00000010 | 0 | 1 | Trace ID acak dideklarasikan, tetapi tidak di-sample. |
| 03 | 00000011 | 1 | 1 | Direkam, dan trace ID dideklarasikan acak seragam. |
bit 0 — Pemanggil merekam trace ini. Kosong berarti ia sengaja memilih tidak merekam.
bit 1 — Level 2: 7 byte paling kanan dari trace ID acak seragam.
bit 2-7 — Cadangan. Harus diabaikan, dan dikosongkan pada permintaan keluar.
Dibangun langsung mengacu pada rekomendasi W3C Trace Context dan rekomendasi kandidat Level 2, dengan parser yang diliput uji unit untuk setiap bentuk valid maupun tidak valid yang disebut spesifikasi.
Apa Itu Header traceparent?
traceparent adalah header HTTP yang membawa distributed trace dari satu layanan ke layanan berikutnya. Sebelum distandarkan, tiap vendor tracing merambatkan konteks lewat headernya sendiri, sehingga permintaan yang melintasi sistem kehilangan identitasnya di perbatasan. Spesifikasi W3C Trace Context menuntaskan itu dengan satu format yang sengaja dibuat mungil: version-trace-id-parent-id-trace-flags, empat field heksadesimal yang dirangkai tanda hubung, total 55 karakter untuk versi saat ini.
Tiap field mengerjakan satu tugas. version selalu 00 hari ini, dan ff dilarang mutlak. trace-id berukuran 16 byte, menandai keseluruhan permintaan dari ujung ke ujung — nilainya tetap di setiap hop. parent-id berukuran 8 byte, menandai span pemanggil langsung, jadi tidak seperti trace-id ia berubah di tiap hop. Byte trace-flags adalah tempat sebagian besar kebingungan bersarang: ia tampak seperti boolean karena 01 jauh lebih sering muncul daripada nilai lain, padahal ia delapan bit. Bit 0 adalah sampled. Bit 1, ditambahkan pada Trace Context Level 2, adalah random-trace-id, yang menegaskan bahwa tujuh byte paling kanan dari trace ID benar-benar acak seragam sehingga sistem hilir boleh men-sample atau melakukan sharding padanya. Enam bit sisanya dicadangkan, dan justru itulah alasan field ini harus dibaca dengan operasi AND bitwise, bukan dibandingkan sama dengan.
Header pendampingnya, tracestate, membawa pasangan kunci-nilai khas vendor di sampingnya, dibatasi 32 anggota. Batas itu menjelaskan gejala yang membingungkan: data vendor yang masih ada di edge lalu lenyap beberapa hop kemudian, karena perantara mulai membuang entri begitu daftarnya melewati batas. Header ini benar-benar menjadi universal setelah OpenTelemetry mengadopsinya, dan halaman ini men-decode semuanya — field, bit, anggota tracestate, dan identifier setara untuk format propagasi lain — tanpa mengirim apa pun ke mana pun.
# The header as it travels on the wire
traceparent: 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
tracestate: rojo=00f067aa0ba902b7,congo=t61rcWkgMzE
# Read the four fields apart
# version 00
# trace-id 4bf92f3577b34da6a3ce929d0e0e4736 (16 bytes, whole request)
# parent-id 00f067aa0ba902b7 (8 bytes, calling span)
# trace-flags 01 (bit 0 set = sampled)
# Send one yourself
$ curl -H 'traceparent: 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01' \
https://example.com/api Fitur Utama
Setiap field terpisah dan bisa disalin
Version, trace-id, parent-id, dan trace-flags masing-masing mendapat barisnya sendiri dan tombol salinnya sendiri, sehingga mengangkat trace ID 32 karakter ke sebuah query cukup satu klik, bukan seret-menyeret yang hati-hati.
trace-flags dibaca sebagai delapan bit
Byte flag dijabarkan ke delapan posisi lengkap dengan mask heksadesimalnya. Bit 0 adalah sampled, bit 1 adalah flag random-trace-id Level 2, dan bit cadangan ikut ditampilkan alih-alih dibuang diam-diam.
Konversi Datadog, X-Ray, dan B3
64 bit bawah sebagai trace ID desimal Datadog, 64 bit atas sebagai tag yang menyertainya, bentuk X-Ray 1-{8}-{24}, serta tata letak B3 single maupun multi-header — semuanya dihitung dengan BigInt sehingga tidak ada yang meluap.
Diagnosis, bukan sekadar vonis
Trace ID nol semua dijelaskan sebagai tracing yang tidak pernah diinisialisasi; bit sampled yang kosong dijelaskan sebagai keputusan yang diambil di hulu. Mengetahui mana dari keduanya yang sedang Anda hadapi biasanya sudah menyelesaikan seluruh sesi debugging.
tracestate dengan batas 32 anggota
Anggotanya didaftar lengkap dengan validasi key dan value per anggota serta hitungan berjalan terhadap batas spesifikasi — batas yang menjelaskan mengapa data vendor lenyap beberapa hop di hilir.
Tidak ada yang meninggalkan browser Anda
Penguraiannya hanya operasi string biasa dan BigInt, tanpa dependensi dan tanpa panggilan jaringan, diverifikasi uji kontrak otomatis pada setiap build. Salin tautan memakai fragmen URL, yang tidak pernah dikirimkan.
Contoh traceparent, Dibongkar
Contoh milik spesifikasi sendiri, dibongkar
00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
version 00 · trace-id 4bf92f3577b34da6a3ce929d0e0e4736 · parent-id 00f067aa0ba902b7 · trace-flags 01 (sampled)
Empat field dipisahkan tanda hubung, total 55 karakter untuk version 00. trace-id menandai keseluruhan permintaan saat melintasi setiap layanan; parent-id — sering disebut span ID — hanya menandai pemanggil langsung, itulah sebabnya nilainya berubah di tiap hop sementara trace-id tidak. Angka 01 di ujung adalah satu byte utuh, bukan boolean: bit 0 diset, jadi pemanggil merekam trace ini.
trace-flags 00 — pemanggil memutuskan tidak merekam
00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-00
Header valid · bit sampled kosong
Header ini benar-benar valid, dan justru itulah intinya. Bit sampled yang kosong adalah instruksi dari hulu, bukan cacat di layanan Anda: siapa pun yang memanggil Anda sudah menjalankan sampler miliknya dan memilih untuk tidak merekam. Mengejar span yang hilang di konfigurasi sendiri pada kasus ini menghabiskan berjam-jam. Pertanyaan yang tepat adalah layanan mana yang memanggil Anda, mengirim parent span, lalu memutuskan tidak men-sample trace tersebut.
Trace ID nol semua berarti tracing tidak pernah dimulai
00-00000000000000000000000000000000-00f067aa0ba902b7-01
Tidak valid — trace-id nol semua
Spesifikasi menyatakan trace-id yang seluruhnya nol tidak valid, dan mewajibkan seluruh traceparent diabaikan. Yang perlu diketahui adalah maknanya di lapangan: bukan "trace yang belum punya data", melainkan SDK yang tidak pernah diinisialisasi, atau middleware yang menyuntikkan header placeholder. Aturan yang sama berlaku untuk parent-id yang seluruhnya nol.
Trace ID yang sama dalam format Datadog
00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
x-datadog-trace-id 11803532876627986230 · _dd.p.tid 4bf92f3577b34da6
Datadog membawa 64 bit bawah dari trace ID 128-bit sebagai string desimal, dan 64 bit atas sebagai heksadesimal di tag terpisah. Masukkan seluruh nilai 128-bit sebagai desimal, dan Anda mendapat angka yang tidak cocok dengan apa pun — persis alasan konversi ini terus muncul di issue tracker berbagai tracer. Paruh bawahnya di sini adalah a3ce929d0e0e4736, dan 64 bit melampaui kemampuan JavaScript number, jadi halaman ini berhitung memakai BigInt.
Cara Memakai Decoder traceparent
- 1
Tempel header traceparent
Masukkan nilai header mentahnya — misalnya 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01. Decoding berjalan saat Anda mengetik; tidak ada tombol yang perlu ditekan.
- 2
Baca keempat field secara terpisah
Version, trace-id, parent-id, dan trace-flags dipecah ke barisnya masing-masing, lengkap dengan tombol salin, sehingga Anda bisa mengangkat trace ID saja ke sebuah query tanpa menyeleksi 32 karakter dengan tangan.
- 3
Periksa flag bit demi bit
Byte trace-flags dijabarkan menjadi delapan bit beserta mask-nya, sehingga sampled dan flag random-trace-id Level 2 terlihat satu per satu, bukan tersembunyi di dalam nilai dua karakter.
- 4
Konversikan ke format backend Anda
Datadog, AWS X-Ray, dan kedua bentuk B3 dihasilkan di bawahnya, termasuk trace ID desimal 64 bit bawah yang diharapkan Datadog serta tag 64 bit atas yang menyertainya.
- 5
Tambahkan tracestate dan bagikan hasilnya
Tempel header tracestate untuk mendaftar anggotanya dengan validasi per anggota dan hitungan terhadap batas 32 anggota, lalu pakai Salin tautan untuk merekam state persis itu dalam URL yang bisa Anda tempel ke tiket.
Kesalahan traceparent yang Umum
Membandingkan seluruh byte flag dengan 01
Ini memperlakukan field delapan bit sebagai enumerasi. Trace yang di-sample sekaligus membawa flag random-trace-id Level 2 memiliki flags 03, dan pemeriksaan sama-dengan melaporkannya sebagai tidak di-sample.
if (traceFlags === 0x01) { record(); } if (traceFlags & 0x01) { record(); } Mengonversi seluruh 128 bit menjadi satu angka desimal
Datadog mengharapkan 64 bit bawah sebagai desimal dan 64 bit atas sebagai heksadesimal di tag terpisah. Mengirim nilai penuh sebagai satu angka desimal menghasilkan identifier yang tidak cocok dengan apa pun.
x-datadog-trace-id: 100985939111033328018442752961257817910
x-datadog-trace-id: 11803532876627986230 x-datadog-tags: _dd.p.tid=4bf92f3577b34da6
Menolak setiap versi yang bukan 00
Spesifikasi meminta parser membaca apa yang dikenalinya dari versi yang lebih tinggi dan memaklumi field di belakangnya. Menolak mentah-mentah akan memulai ulang trace dan memutus tautannya di perbatasan.
if (version !== '00') throw new Error('bad traceparent'); if (version !== '00' && header.length >= 55) { /* parse the known prefix */ } Mengeluarkan heksadesimal huruf besar
Tata bahasanya hanya menerima huruf kecil. Trace ID huruf besar membawa nilai yang benar namun tetap ditolak penerima yang patuh spesifikasi, dan itu membuatnya menjadi bug yang sangat menjengkelkan untuk dikenali dengan mata.
traceparent: 00-4BF92F3577B34DA6A3CE929D0E0E4736-00F067AA0BA902B7-01
traceparent: 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
Apa yang Bisa Anda Lakukan dengan Decoder traceparent
- Mencari tahu kenapa sebuah trace tidak punya span
- Tempel header yang masuk lalu baca bit sampled-nya. Jika kosong, trace itu memang tidak akan pernah direkam dan jawabannya ada di pemanggil, bukan di instrumentasi Anda — pembedaan yang menghemat banyak waktu yang biasanya habis untuk mengaudit konfigurasi sampler sendiri.
- Menemukan trace yang tidak bisa ditemukan backend Anda
- Ketika trace ID yang disalin dari log aplikasi tidak membuahkan apa pun di Datadog, biang keladinya biasanya format. Konversikan di sini untuk melihat identifier desimal 64 bit bawah yang diharapkan API, berikut tag 64 bit atas yang harus menyertainya.
- Memverifikasi header yang disuntikkan gateway Anda
- Proxy dan service mesh membangkitkan trace context di jalur masuk. Tempel apa yang benar-benar tiba untuk memastikan panjangnya, heksadesimal huruf kecilnya, dan identifier bukan-nol sebelum berasumsi bahwa masalahnya ada di hilir.
- Mereproduksi trace produksi secara manual
- Ambil header dari permintaan nyata dan putar ulang ke endpoint staging untuk mengikuti trace yang sama. Susun permintaannya dengan pembuat perintah curl lalu tempel headernya langsung ke sana.
- Menjelaskan trace context ke satu tim
- Tabel anatomi field dan tabel trace-flags di halaman ini adalah materi rujukan statis yang bisa Anda tunjuk langsung, dan chip preset memperagakan tiap bentuk kegagalan tanpa perlu ada yang merusak layanan demi memancingnya.
Cara Kerja Validator W3C Trace Context
- Tata bahasa empat field
- version "-" trace-id "-" parent-id "-" trace-flags, seluruhnya heksadesimal huruf kecil. Version 2 digit, trace-id 32, parent-id 16, dan trace-flags 2 — 52 digit hex ditambah 3 tanda hubung, tepat 55 karakter untuk version 00. Heksadesimal huruf besar membuat header tidak valid walaupun nilainya terlihat benar, dan baik trace-id maupun parent-id yang seluruhnya nol dinyatakan tidak valid secara eksplisit, bukan sekadar dianggap kosong.
- trace-flags adalah field bit
- Bit 0 (mask 0x01) adalah sampled: diset berarti pemanggil mungkin merekam data trace. Bit 1 (mask 0x02), diperkenalkan pada Level 2, adalah random-trace-id: ketika diset, setidaknya 7 byte paling kanan dari trace-id wajib dipilih acak dengan distribusi seragam, yang membuat sistem hilir bisa men-sample atau melakukan sharding padanya. Bit 2 sampai 7 dicadangkan, harus diabaikan saat diterima dan dikosongkan pada permintaan keluar. Karena bit cadangan bisa muncul, field ini wajib diuji dengan operasi AND bitwise — pemeriksaan sama-dengan terhadap 0x01 akan salah melaporkan trace yang di-sample tetapi turut membawa bit cadangan.
- Kompatibilitas maju dengan versi berikutnya
- Version hari ini adalah 00 dan ff dilarang, tetapi parser yang menolak segala nilai lain adalah parser yang keliru. Spesifikasi meminta penerima tetap mencoba mengurai ketika versinya lebih tinggi dan headernya setidaknya sepanjang format yang dikenal, membaca field yang dikenalinya dan memaklumi data ekstra di belakang, alih-alih memulai ulang trace. Decoder ini mengikuti aturan tersebut: versi masa depan berhasil diurai dan ditandai sebagai peringatan, bukan kesalahan.
- Batas tracestate yang benar-benar menggigit di produksi
- Paling banyak 32 list-member — ini batas gramatikal yang keras, jadi daftar yang lebih panjang membuat header tidak valid dan penerima membuangnya. Tiap key maksimal 256 karakter dan diawali huruf kecil atau angka; sejak Level 2, @ adalah karakter key biasa, bukan lagi pemisah tenant. Tiap value berisi 1 sampai 256 karakter ASCII yang dapat dicetak, tidak pernah memuat koma atau tanda sama dengan. Key duplikat tidak valid, tetapi list-member kosong justru diizinkan secara eksplisit — koma yang tertinggal di ujung setelah perantara menghapus satu entri tetap membentuk header yang valid. Terpisah dari itu, vendor sebaiknya meneruskan setidaknya 512 karakter dari header gabungan; ketika harus dipangkas agar muat dalam anggaran itu, entri yang lebih panjang dari 128 karakter mesti dibuang lebih dulu — itulah sebabnya data vendor yang bertele-tele lenyap sebelum data vendor yang ringkas.
Praktik Terbaik Trace Context
- Uji flag dengan operasi AND bitwise
- Tulis flags & 0x01, bukan flags == 0x01. Enam dari delapan bit dicadangkan untuk pemakaian di masa depan, dan pemeriksaan sama-dengan akan mulai salah melaporkan trace yang di-sample begitu salah satunya muncul di lapangan.
- Perlakukan ID nol semua sebagai pipeline yang rusak
- Ia bukan nilai kosong yang boleh dimaklumi. Tolak headernya, lalu carilah komponen yang gagal menginisialisasi tracer-nya atau yang menyuntikkan placeholder.
- Lihat ke hulu ketika bit sampled kosong
- Sampler berbasis parent meneruskan keputusan pemanggil. Jika trace menghilang, identifikasi dulu layanan mana yang mengirimi Anda parent span dengan sampling mati sebelum mengaudit konfigurasi Anda sendiri.
- Jaga tracestate tetap ringkas
- Batas 32 anggota adalah batas gramatikal yang keras — begitu dilewati, header menjadi tidak valid. Terpisah dari itu, hanya 512 karakter dari header gabungan yang dijamin diteruskan, dan pemangkasan membuang entri di atas 128 karakter lebih dulu. Apa pun yang harus bertahan melewati rantai panggilan panjang tidak layak ditaruh di tracestate.
- Jangan pernah mencatat trace ID sebagai JavaScript number
- Trace ID 128-bit, bahkan identifier Datadog 64-bit sekalipun, sama-sama melampaui Number.MAX_SAFE_INTEGER. Simpan sebagai string, dan konversikan dengan BigInt bila memang harus berhitung, atau digit terakhirnya akan rusak diam-diam.
FAQ Decoder traceparent
Apa itu header traceparent?
Apa arti trace-flags 00 pada traceparent?
Apa beda trace-flags 01, 02, dan 03?
Kenapa trace ID saya nol semua?
Bagaimana cara mengonversi trace ID W3C ke trace ID Datadog?
Apakah traceparent memuat timestamp?
Apakah header yang saya tempel di sini diunggah ke suatu tempat?
Apakah decoder ini bekerja offline?
Alat Terkait
Lihat semua alat →Generator & Builder Perintah cURL
Web & API
Buat perintah curl di browser Anda — atur metode, header, autentikasi, dan body, dapatkan perintah siap salin secara instan. Preset untuk Bearer, POST JSON, unggah file. Gratis, privat, tanpa pendaftaran.
Generator htpasswd — bcrypt, Apache MD5 (apr1) & Basic Auth
Web & API
Buat entri htpasswd dengan bcrypt, Apache MD5 (apr1), SHA-1 & lainnya. Dapatkan konfigurasi Apache, nginx & Docker siap pakai. 100% di browser Anda — tanpa upload.
Generator Meta Tag & Open Graph
Web & API
Buat tag meta Open Graph, Twitter Card & SEO dengan pratinjau langsung Google, Facebook & X. 100% gratis, di browser, tanpa daftar — salin & tempel kodenya.
Penguji nginx location — mengapa blok itu menang
Web & API
Blok location nginx mana yang menang — dan mengapa yang lain kalah. Penguji gratis untuk =, ^~, ~ dan ~*, sepenuhnya di browser Anda.
Alat Dekripsi AES — Kompatibel OpenSSL & CryptoJS
Alat Keamanan
Dekripsi AES online — GCM/CBC/CTR, frasa sandi atau kunci mentah, otomatis mendeteksi format OpenSSL & CryptoJS "U2FsdGVkX1". 100% di browser, kunci tidak pernah meninggalkan halaman.
Alat Enkripsi AES — GCM, CBC & CTR
Alat Keamanan
Enkripsi AES online gratis — AES-128/192/256, GCM/CBC/CTR, frasa sandi (PBKDF2) atau kunci mentah. Berjalan 100% di browser Anda; tidak ada yang diunggah.