1. W3C Trace Context (standard propagacji śledzenia przyjęty przez W3C):
Ten standard został wprowadzony, aby zapewnić jednolity format propagacji kontekstu śledzenia między różnymi systemami, serwisami i narzędziami. Działa niezależnie od implementacji i ma na celu ujednolicenie formatu w różnych środowiskach. W3C Trace Context składa się z dwóch kluczowych nagłówków:
-
traceparent: To główny nagłówek w W3C Trace Context. Zawiera najważniejsze informacje o kontekście śledzenia:-
Wersja: Numer wersji standardu (obecnie
00). - Trace ID: Globalny unikalny identyfikator całego śledzenia (np. cała ścieżka od producenta do konsumenta).
- Parent ID (Span ID): Identyfikator spana reprezentującego bezpośredniego rodzica w śledzeniu.
- Flagi: Informacje na temat próbkowania (czy dany span ma być śledzony i przesyłany do systemu zbierającego).
-
Wersja: Numer wersji standardu (obecnie
Przykład nagłówka traceparent:
traceparent: 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
Gdzie:
-
00to wersja. -
4bf92f3577b34da6a3ce929d0e0e4736toTrace ID. -
00f067aa0ba902b7toParent ID(Span ID). -
01to flagi (bit flagi próbkowania, gdzie01oznacza, że span ma być śledzony).-
tracestate: To dodatkowy nagłówek używany w W3C Trace Context. Zawiera bardziej zaawansowane informacje, które mogą być specyficzne dla dostawcy systemu śledzenia (np. dodatkowe dane potrzebne narzędziu śledzącemu). Pozwala na propagowanie dodatkowych metadanych związanych z śledzeniem, np. priorytety lub informacje specyficzne dla narzędzia (np. Jaeger, Zipkin).
-
Przykład:
tracestate: congo=t61rcWkgMzE
2. B3 Propagation (standard używany przez Zipkin):
B3 to inny, popularny standard propagacji kontekstu śledzenia, stosowany głównie w systemie Zipkin, ale obsługiwany także przez inne tracery, takie jak Jaeger. B3 działa w sposób nieco prostszy niż W3C Trace Context i składa się z kilku nagłówków:
-
x-B3-TraceId: To globalny identyfikator śledzenia (trace). Odpowiada za identyfikację całego cyklu śledzenia, podobnie jakTrace IDw W3C. Ten identyfikator jest unikalny dla całego śledzenia i pozwala połączyć wszystkie spany w jeden trace.
Przykład:
x-B3-TraceId: 4bf92f3577b34da6a3ce929d0e0e4736
-
x-B3-ParentSpanId: Identyfikator rodzica aktualnego spana. Ten nagłówek zawiera ID spana, który bezpośrednio poprzedza obecny span. Jest on podobny doParent IDw W3C Trace Context.
Przykład:
x-B3-ParentSpanId: 00f067aa0ba902b7
-
x-B3-SpanId: To identyfikator spana w ramach śledzenia. Każdy span w trace ma swój unikalny identyfikator, który odróżnia go od innych spanów w danym trace. Jest podobny doParent IDw W3C Trace Context, ale dotyczy konkretnego spana, a nie rodzica.
Przykład:
x-B3-SpanId: 00f067aa0ba902b7
-
x-B3-Sampled: To flaga określająca, czy dany span (i cały trace) powinien być próbkowany i wysyłany do systemu zbierającego. Możliwe wartości to:-
1oznacza, że span ma być śledzony. -
0oznacza, że span nie będzie śledzony.
-
Przykład:
x-B3-Sampled: 1
Podział nagłówków:
-
W3C Trace Context:
traceparenttracestate
-
B3 Propagation (Zipkin):
x-B3-TraceIdx-B3-ParentSpanIdx-B3-SpanIdx-B3-Sampled
Jakie są różnice między tymi standardami?
W3C Trace Context jest bardziej nowoczesnym, ujednoliconym standardem wspieranym przez organizację W3C, co oznacza, że jest neutralny w stosunku do narzędzi do śledzenia (np. Jaeger, Zipkin). Umożliwia bardziej elastyczną propagację informacji o śledzeniu, w tym dostarczanie zaawansowanych metadanych poprzez
tracestate.B3 jest starszym standardem propagacji, który został wprowadzony przez Zipkin. Jest prostszy i używa osobnych nagłówków dla każdego elementu kontekstu śledzenia (trace ID, span ID itd.), zamiast jednej złożonej struktury, jak w W3C Trace Context.
Co to oznacza dla Twojej aplikacji?
- Twoja aplikacja aktualnie obsługuje zarówno W3C Trace Context (
traceparent,tracestate), jak i B3 (x-B3-*). - W wielu przypadkach, systemy takie jak Jaeger, Zipkin, lub OpenTelemetry potrafią obsługiwać oba standardy, ale powinno się wybrać jeden spójny standard propagacji. Korzystanie z obu może wprowadzać zamieszanie i niespójności, zwłaszcza gdy różne systemy interpretują nagłówki inaczej.
- Jeśli chcesz mieć pełną kontrolę nad śledzeniem, najlepiej jest zdecydować się na jeden standard (najczęściej rekomendowany jest W3C Trace Context, ponieważ jest to standard uznawany przez W3C i ma szersze wsparcie).
Jeśli twój system korzysta z różnych narzędzi do śledzenia (np. Jaeger, Zipkin) i musisz wspierać oba standardy, konieczne może być skonfigurowanie odpowiednich integracji lub middleware, które będą konwertować nagłówki między tymi standardami.

Top comments (0)