İz bağlamı yayma, dağıtılmış bir uygulamadaki hizmetler arasında iz meta verilerini (iz kimlikleri, span kimlikleri ve örnekleme kararları) aktarır. Bu sayede bir istek içindeki tüm span'lar tek bir uçtan uca izde ilişkilendirilebilir.
Application Real-Time Monitoring Service (ARMS), beş iz yayma protokolünü destekler.
| Protokol | Tür | Üst bilgi ön eki |
|---|---|---|
| EagleEye | Alibaba Cloud'a özel | EagleEye- |
| W3C Trace Context | W3C standardı | traceparent, tracestate |
| Zipkin (B3) | Açık kaynak | X-B3- |
| Jaeger | Açık kaynak | uber-trace-id |
| SkyWalking | Açık kaynak | sw8 |
EagleEye protokolü
EagleEye, ARMS tarafından geliştirilen ve Alibaba Cloud hizmetlerinde yaygın olarak kullanılan Alibaba Cloud'a özel bir protokoldür.
Üst bilgi alanları
| Üst Bilgi | Açıklama | Örnek |
|---|---|---|
EagleEye-TraceID |
İz tanımlayıcısı (rastgele 32 bitlik dize). | -- |
EagleEye-RpcID |
Hiyerarşik span ilişkisi. 0 üst span'dir; 0.1 ve 0.2, 0 öğesinin alt span'leridir; 0.1.1 ise 0.1 öğesinin alt span'idir. |
0, 0.1, 0.2, 0.1.1 |
EagleEye-SpanID |
Span tanımlayıcısı (rastgele uzun tamsayı). Açık kaynak yedekli alanlarla uyumludur. | -- |
EagleEye-pSpanID |
Üst span tanımlayıcısı (rastgele uzun tamsayı). Açık kaynak yedekli alanlarla uyumludur. | -- |
EagleEye-Sampled |
Örnekleme bayrağı. | -- |
EagleEye-pAppName |
Yukarı akış uygulama adı. | -- |
EagleEye-pRpc |
Yukarı akış uygulama arabirimi. | -- |
EagleEye-UserData |
İzle birlikte yayılan bagaj verileri. | k1=v1&k2=v2 |
W3C Trace Context protokolü
W3C Trace Context belirtimi, World Wide Web Consortium (W3C) tarafından tanımlanan satıcıdan bağımsız bir standarttır.
Üst bilgi alanları
| Üst Bilgi | Biçim | Örnek |
|---|---|---|
traceparent |
<version>-<trace-id>-<parent-span-id>-<Sampling identifier> (2 bit sürüm, 32 bit iz kimliği, 16 bit üst span kimliği, örnekleme tanımlayıcısı) |
00-0af7651916cd43dd8448eb211c80319c-b7ad6b7169203331-01 |
tracestate |
İzle birlikte yayılan bagaj verileri. | k1=v1&k2=v2 |
Zipkin (B3) protokolü
B3 yayma biçimi, Zipkin tarafından kullanılır.
Üst bilgi alanları
| Üst Bilgi | Açıklama | Örnek |
|---|---|---|
X-B3-TraceId |
32 bit iz tanımlayıcısı. | 0af7651916cd43dd8448eb211c80319c |
X-B3-SpanId |
16 bit span tanımlayıcısı. | b7ad6b7169203331 |
X-B3-ParentSpanId |
16 bit üst span tanımlayıcısı. | b7ad6b7169203331 |
X-B3-Sampled |
Örnekleme bayrağı. 1 = örneklenmiş, 0 = örneklenmemiş. |
1 |
baggage- |
Bagaj verisi ön eki. Anahtar adını ön ekin sonuna ekleyin. | baggage-k1=v1, baggage-k2=v2 |
Jaeger protokolü
Jaeger yayma biçimi, Jaeger tarafından kullanılır.
Üst bilgi alanları
| Üst Bilgi | Biçim | Örnek |
|---|---|---|
uber-trace-id |
<trace-id>:<span-id>:<parent-span-id>:<flags> |
0af7651916cd43dd8448eb211c80319c:b7ad6b7169203331:b7ad6b7169203331:1 |
uberctx- |
Bagaj verisi ön eki. Anahtar adını ön ekin sonuna ekleyin. | uberctx-k1=v1, uberctx-k2=v2 |
SkyWalking protokolü
SkyWalking yayma biçimi, Apache SkyWalking tarafından kullanılır.
sw8 üst bilgisi
sw8 üst bilgisi, tire ile ayrılmış sekiz alandan oluşur. Tüm dize değerleri Base64 kodlu olmalıdır. Toplam üst bilgi uzunluğu 2.000 karakterden az olmalıdır.
| Alan | Konum | Açıklama |
|---|---|---|
| Örnek | 1 | 0 = bağlam mevcuttur ancak yoksayılabilir. 1 = örnekle ve arka uca gönder. |
| İz Kimliği | 2 | Benzersiz iz tanımlayıcısı. Noktalarla (.) ayrılmış üç uzun değerin Base64 kodlu dizesi. |
| Üst iz segmenti kimliği | 3 | Genel olarak benzersiz segment tanımlayıcısı. Base64 kodlu dize. |
| Üst span kimliği | 4 | 0 veya pozitif bir tamsayı. |
| Üst hizmet | 5 | Base64 kodlu dize. 50 UTF-8 karakterini aşmalıdır. |
| Üst hizmet örneği kimliği | 6 | Base64 kodlu dize. 50 UTF-8 karakterini aşmalıdır. |
| Üst hizmet uç noktası | 7 | Üst iz segmentindeki ilk giriş span'inin uç noktası. Base64 kodlu dize. 50 UTF-8 karakterini aşmalıdır. |
| Hedef URL | 8 | Hedef hizmetin URL'si. Biçim, <IP address><Port number> adresinden farklı olabilir. Base64 kodlu dize. |
Örnek:
1-TRACEID-SEGMENTID-3-PARENT_SERVICE-PARENT_INSTANCE-PARENT_ENDPOINT-IPPORT
sw8-x üst bilgisi
sw8-x üst bilgisi, yine tire ile ayrılan uzantı alanlarını taşır. Alanlar gerektiğinde genişletilebilir.
İzleme modu null, 0 veya 1 değerlerini kabul eder:
nullveya0(varsayılan): Mevcut bağlamda oluşturulan tüm span'ler analiz edilmez. Bağlam, izleme sırasında değiştirilmedikçe varsayılan olarak yukarı akışa yayılır.1: Span'ler analiz edilir.
Çalışma mekanizması
ARMS aracısı, gelen her istekte bulunan üst bilgilere göre otomatik olarak bir iz yayma protokolü seçer.
Seçim akışı
A, B ve C hizmetlerinden geçen bir izi ele alalım. Her hizmet bir istek aldığında ARMS aracısı şu mantığı izler:
-
Protokole özgü alanlar için istek üst bilgilerini tarayın. Tarama sabit bir öncelik sırasını takip eder:
ARMS aracı sürümü Öncelik sırası (yüksekten düşüğe) v4.5.x ve sonrası W3C > EagleEye > SkyWalking > Jaeger > Zipkin v4.x ile v4.4.x arası EagleEye > W3C > SkyWalking > Jaeger > Zipkin v4.x öncesi EagleEye > Jaeger > Zipkin > SkyWalking > W3C Eşleşen bir üst bilgi bulunursa, aracı iz bağlamını istekten geri yükler ve aynı protokolü kullanarak bağlamı aşağı akış hizmetlerine yayar.
Eşleşen bir üst bilgi bulunamazsa, aracı yeni bir iz bağlamı oluşturur ve bunu en yüksek öncelikli protokolü kullanarak yayar. Varsayılan olarak bu, EagleEye protokolüdür.
Protokol önceliğini özelleştirme
Varsayılan protokol önceliğini değiştirmek için şuraya gidin: Configuration > Custom Configurations ve Trace context propagation protocol settings bölümünü güncelleyin. Ayrıntılar için bkz. İz bağlamı yayma protokolü ayarları.