All Products
Search
Document Center

Application Real-Time Monitoring Service:Protokol propagasi jejak yang didukung

Last Updated:Sep 05, 2025

Topik ini menjelaskan protokol propagasi jejak yang didukung oleh Application Real-Time Monitoring Service (ARMS).

Protokol EagleEye

Protokol EagleEye dikembangkan oleh ARMS dan banyak digunakan di Alibaba Cloud.

Header protokol mencakup informasi berikut:

  • EagleEye-TraceID: string acak 32-bit.

  • EagleEye-RpcID: hubungan hierarkis antara rentang. Contoh: 0, 0.1, 0.2, 0.1.1. Dalam contoh ini, 0 adalah rentang induk, sedangkan 0.1 dan 0.2 adalah rentang anak.

  • EagleEye-SpanID: bilangan bulat panjang acak yang kompatibel dengan bidang redundan sumber terbuka.

  • EagleEye-pSpanID: bilangan bulat panjang acak yang kompatibel dengan bidang redundan sumber terbuka.

  • EagleEye-Sampled: menentukan apakah jejak diambil sampelnya.

  • EagleEye-pAppName: aplikasi hulu.

  • EagleEye-pRpc: antarmuka aplikasi hulu.

  • EagleEye-UserData: baggage yang akan dipropagasi dalam jejak. Format: k1=v1&k2=v2.

W3C protocol

Protokol W3C adalah protokol default yang digunakan oleh World Wide Web Consortium (W3C).

Header protokol mencakup informasi berikut:

  • traceparent: Format: <nomor versi 2-bit>-<ID jejak 32-bit>-<ID rentang induk 16-bit>-<Pengenal pengambilan sampel>. Contoh: 00-0af7651916cd43dd8448eb211c80319c-b7ad6b7169203331-01.

  • tracestate: baggage yang akan dipropagasi dalam jejak. Contoh: k1=v1&k2=v2.

Protokol Zipkin

Protokol Zipkin digunakan oleh Zipkin sumber terbuka.

Header protokol mencakup informasi berikut:

  • X-B3-TraceId: ID jejak 32-bit. Contoh: 0af7651916cd43dd8448eb211c80319c.

  • X-B3-SpanId: ID rentang 16-bit. Contoh: b7ad6b7169203331.

  • X-B3-ParentSpanId: ID rentang induk 16-bit. Contoh: b7ad6b7169203331.

  • X-B3-Sampled: pengenal pengambilan sampel. Sebagai contoh, 1 menunjukkan bahwa jejak diambil sampelnya, sedangkan 0 menunjukkan bahwa jejak tidak diambil sampelnya.

  • baggage-: baggage yang akan dipropagasi dalam jejak. Contoh: baggage-k1=v1, baggage-k2=v2.

Protokol Jaeger

Protokol Jaeger digunakan oleh Jaeger sumber terbuka.

Header protokol mencakup informasi berikut:

  • uber-trace-id: Format: traceId:spanId:parentSpanId:flag. Contoh: 0af7651916cd43dd8448eb211c80319c:b7ad6b7169203331:b7ad6b7169203331:1.

  • uberctx-: baggage yang akan dipropagasi dalam jejak. Contoh: uberctx-k1=v1, uberctx-k2=v2.

Protokol SkyWalking

Protokol SkyWalking digunakan oleh SkyWalking sumber terbuka.

  • sw8: terdiri dari delapan bidang. Pisahkan bidang dengan tanda hubung (-). Jumlah maksimum karakter dalam header protokol secara default harus kurang dari 2.000. Header protokol mencakup bidang berikut. Semua nilai string harus dienkripsi Base64.

    Bidang berikut wajib:

    • Sample: 0 atau 1. 0 menunjukkan bahwa konteks ada dan dapat diabaikan. 1 menunjukkan bahwa jejak perlu diambil sampelnya dan dikirim ke backend.

    • Trace Id: pengenal unik operasi pelacakan. Nilainya adalah string yang dienkripsi Base64. String tersebut terdiri dari tiga nilai panjang yang dipisahkan dengan titik (.).

    • Parent trace segment Id: ID segmen global unik. Nilainya adalah string yang dienkripsi Base64.

    • Parent span ID: 0 atau bilangan bulat positif.

    • Parent service: string yang dienkripsi Base64. String tersebut harus terdiri dari lebih dari 50 karakter UTF-8.

    • Parent service instance ID: string yang dienkripsi Base64. String tersebut harus terdiri dari lebih dari 50 karakter UTF-8.

    • Parent service endpoint: titik akhir rentang entri pertama dalam segmen jejak induk. Nilainya adalah string yang dienkripsi Base64. String tersebut harus terdiri dari lebih dari 50 karakter UTF-8.

    • Destination URL permintaan: URL layanan tujuan yang ingin diakses klien. Format URL bisa berbeda dari <Alamat IP><Nomor Port>. Nilainya adalah string yang dienkripsi Base64.

    Contoh header protokol sw8: 1-TRACEID-SEGMENTID-3-PARENT_SERVICE-PARENT_INSTANCE-PARENT_ENDPOINT-IPPORT.

  • sw8-x: Pisahkan bidang dengan tanda hubung (-). Bidang dapat diperluas.

    Mode pelacakan dapat disetel ke null, 0, atau 1. Nilai default null atau 0 menunjukkan bahwa semua rentang yang dihasilkan dalam konteks tidak dianalisis. Konteks dipropagasi ke hulu secara default, kecuali diubah selama pelacakan.

Pilih protokol propagasi jejak

Secara default, agen ARMS memilih protokol propagasi jejak yang sesuai berdasarkan apakah header protokol tertentu termasuk dalam header permintaan.

Ambil jejak A > B > C sebagai contoh, di mana A, B, dan C adalah aplikasi yang berbeda. Ketika mereka menerima permintaan, mereka mengikuti logika berikut secara berurutan untuk memilih protokol propagasi jejak:

  1. Cari semua header permintaan untuk header spesifik protokol apa pun.

    • Untuk agen ARMS v4.x dan yang lebih baru, urutan pencarian adalah: EagleEye, W3C, SkyWalking, Jaeger, Zipkin.

    • Untuk agen ARMS sebelum v4.x, urutan pencarian adalah: EagleEye, Jaeger, Zipkin, SkyWalking, W3C.

    Jika header yang sesuai dengan protokol propagasi jejak tertentu ditemukan, lanjutkan ke Langkah 2; jika tidak, lanjutkan ke Langkah 3.

  2. Ketika header yang sesuai dengan protokol tertentu ada, pertama-tama pulihkan konteks jejak dari permintaan berdasarkan protokol tersebut, lalu gunakan protokol ini untuk mempropagasi konteks jejak untuk panggilan berikutnya ke aplikasi hilir.

  3. Jika tidak ada header protokol yang valid ditemukan dalam permintaan, buat konteks jejak baru, lalu ikuti protokol prioritas tertinggi untuk mempropagasi konteks jejak nanti. Protokol prioritas tertinggi defaultnya adalah protokol EagleEye. Anda dapat mengubah prioritas protokol di bagian Pengaturan Protokol Propagasi Konteks Jejak tab Konfigurasi > Konfigurasi Kustom. Untuk informasi lebih lanjut, lihat Pengaturan Protokol Propagasi Konteks Jejak.