- Która operacja rozpoczęła żądanie.
- Gdzie żądanie traciło czas.
- Która operacja podrzędna zwróciła błąd.
- Które logi, problemy, akcje i metryki mają to samo ID śladu.
- Która usługa wysłała każdy span i z jakiego środowiska oraz wydania.
Pola śladu i spanu
Span główny rozpoczyna ślad i nie ma spanu nadrzędnego. Spany podrzędne mają to
samo ID śladu, własne ID spanów i ID spanu nadrzędnego. Tylko te identyfikatory
łączą operacje. Same znaczniki czasu tego nie robią. LogBrew uznaje span za span
błędu tylko wtedy, gdy jego
status to error.
Żądanie przechodzące przez kilka usług
- Usługa webowa rozpoczyna span serwera dla trasy realizacji zakupu.
- Klient płatności tworzy span podrzędny dla swojego wychodzącego żądania HTTP.
- Usługa płatności kontynuuje ślad własnym spanem serwera.
- Helper bazy danych rejestruje span podrzędny dla zapisu.
- Aplikacja wysyła bezpieczny log błędu wewnątrz aktywnego spanu płatności.
Propaguj kontekst
Zestawy SDK LogBrew korzystają z kontekstu śladu W3C. Na przykład SDK dla Node.js, gdy dostanie prawidłowy nagłówektraceparent, kontynuuje ślad nowym
spanem żądania. Jeśli nagłówka brakuje lub jest nieprawidłowy, SDK rozpoczyna
nowy span główny. Logi, problemy, akcje i metryki zarejestrowane w zakresie tego żądania
należą do śladu żądania.
Instrumentacja ruchu wychodzącego dodaje nagłówek traceparent tylko do
żądań kierowanych do celów, które skonfigurujesz, na przykład w
tracePropagationTargets. Wysyłaj kontekst śladu tylko do zaufanych usług
objętych instrumentacją. ID śladu wiąże ze sobą operacje. Nie służy do
uwierzytelniania.
Wiadomość w kolejce też może przenosić kontekst śladu. W Node.js wywołaj
createLogBrewQueueTraceHeaders() w operacji producenta, aby dodać do
wiadomości nagłówek traceparent. W konsumencie przekaż ten nagłówek do
queueOperationWithLogBrewSpan() jako traceparent. Zobacz
Śledzenie kolejek w JavaScript.
Integracje żądań i ruchu wychodzącego dla Node.js i Pythona nie zapisują w
spanach treści żądań ani odpowiedzi, ciągów zapytań, dowolnych nagłówków ani
surowej wartości traceparent. Nazywaj spany według szablonów tras, a nie
konkretnych adresów URL. Integracje dla twojego środowiska uruchomieniowego
opisuje przewodnik po integracji SDK.
Spany rejestracji
LogBrew zapisuje każdy nowy log, problem, akcję i metrykę z ID śladu. Jeśli sygnał nie odwołuje się do spanu z tej samej wysyłki, LogBrew dodaje dla niego jeden span rejestracji:
Wtedy
span_id sygnału wskazuje jego span rejestracji. Jeśli sygnał nie miał
kontekstu śladu, LogBrew tworzy dla niego nowe ID śladu. Taki ślad pokazuje, że
LogBrew zapisał sygnał. Nie pokazuje ścieżki żądania. Nie traktuj spanów
rejestracji w jednym śladzie jako jednego żądania.
Spany rejestracji wliczają się do span_count i error_span_count. Dlatego
log błędu może sprawić, że --status error wybierze ślad, w którym nie
zawiodła żadna operacja aplikacji. Zanim wyciągniesz wnioski, sprawdź
operation każdego spanu błędu.
Odczytaj ślad
Użyj dokładnego ID śladu z logu, problemu lub listy śladów:--status error wybiera ślady z co najmniej jednym spanem błędu. --status ok
wybiera ślady bez spanu błędu. --min-duration-ms 500 wybiera ślady, które
trwały 500 milisekund lub dłużej.
Najpierw odczytaj czas trwania spanu głównego. Potem zbadaj najdłuższe spany
podrzędne i statusy błędów. Miej na oku projekt, usługę, środowisko i wydanie,
aby ślad ze środowiska staging nie stał się dowodem dla środowiska
produkcyjnego.
Jeden ślad pokazuje jedno wykonanie, a nie punkt odniesienia dla wydajności.
Zanim zaproponujesz zmianę poprawiającą wydajność, porównaj kilka śladów z trendem
powiązanej metryki.
Podsumowanie śladu
GET /api/telemetry/traces/{trace_id}/summary zwraca podsumowanie bez
atrybutów spanów:
Jeśli
root_span.parent_span_id ma wartość, prawdziwego spanu głównego nie ma
w śladzie. Nie traktuj root_span jako początku żądania.
Wyjaśnij ślad
logbrew explain trace zwraca analizę śladu:
analysis.causality ma wartość evidence_only. Analiza nie dowodzi przyczyny
źródłowej. CLI żąda odpowiedzi w wersji 3, w której każdy powiązany problem,
akcja i metryka ma też dokładne span_id.
Aby zbadać jeden span razem z jego spanem nadrzędnym, spanami podrzędnymi i
granicami usług, uruchom:
topology.parent_chain_status informuje, czy łańcuch spanów nadrzędnych jest
kompletny:
Brakujący kontekst śladu
Nie każde zdarzenie ma ślad swojego żądania. Sprawdź stan śladu:not_linked nie jest błędem. Ślad available też może pokazać, że zdarzenie
nie miało kontekstu żądania. Jeśli span rejestracji zdarzenia nie ma
parent_span_id, w chwili rejestracji zdarzenia żaden span nie był aktywny.
Często tak jest w przypadku pracy w tle poza zakresem żądania. Aby znaleźć
brakujące powiązanie:
- Odczytaj projekt, usługę, środowisko, wydanie i czas zdarzenia.
- Sprawdź, czy praca wykonała się wewnątrz żądania lub operacji objętej instrumentacją.
- Sprawdź, czy integracje klienta i serwera propagują kontekst przez tę granicę.
- Po poprawieniu instrumentacji zarejestruj nowe zdarzenie i odczytaj je.
Zaplanuj śledzenie dla jednego projektu
Zacznij od jednego ważnego żądania lub zadania, na przykład realizacji zakupu. Dodawaj instrumentację po jednej granicy naraz:- Utwórz span dla przychodzącego żądania lub operacji w tle.
- Dodaj spany podrzędne dla ważnych wywołań wychodzących.
- Kontynuuj kontekst śladu W3C przez granice zaufanych usług.
- Wyślij bezpieczny log wewnątrz aktywnego spanu.
- Odczytaj ten log, otwórz jego ID śladu i sprawdź span główny, spany podrzędne, usługę, środowisko, wydanie, status i czas trwania.
logbrew traces --project "<project_id>" --pagination cursor --json. Obiekt
naming_quality liczy ślady na tej stronie, które mają ogólną nazwę spanu
głównego (generic_name_traces) lub niedopasowaną trasę
(unmatched_route_traces). Jeśli nazwy wymagają poprawy,
naming_quality.next_action.code ma wartość improve_trace_naming.