Śledzenie rozproszone
Śledź żądania między usługami za pomocą Activity.
Śledzenie rozproszone to bezpłatna lekcja C# Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej C# Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs C# Academy zawiera 4 lekcji w sumie.
Czym jest śledzenie rozproszone
Śledzenie rozproszone śledzi pojedyncze żądanie w miarę jego przechodzenia przez usługi i komponenty. Każda jednostka pracy staje się spanem, a połączone spany tworzą ślad, wizualizowany jako oś czasu z zagnieżdżonymi operacjami.
Spany i ślady
Span ma nazwę, czas rozpoczęcia i zakończenia, a także atrybuty i status. Spany są zagnieżdżane: span nadrzędny (żądanie HTTP) zawiera spany podrzędne (zapytanie do bazy danych lub wywołanie wychodzące). Całe drzewo współdzieli jeden identyfikator śladu.
Activity jako span w .NET
W .NET klasa System.Diagnostics.Activity jest implementacją spanu OpenTelemetry. Aktywności tworzy się za pomocą ActivitySource.
using System.Diagnostics;
private static readonly ActivitySource Source =
new("Checkout.Orders");Uruchamianie aktywności
StartActivity rozpoczyna span. Należy umieścić go w bloku using, aby span zakończył się (i zarejestrował swój czas trwania) po wyjściu z bloku.
using Activity activity = Source.StartActivity("PlaceOrder");
// work happens here; span ends when disposedDodawanie tagów do spanu
Tagi (atrybuty) dołączają do spanu kontekst w postaci par klucz-wartość, na przykład identyfikator lub kwotę zamówienia, dzięki czemu ślady można przeszukiwać i łatwiej interpretować.
activity?.SetTag("order.id", orderId);
activity?.SetTag("order.amount", amount);Rejestrowanie zdarzeń i statusu
Proszę używać AddEvent do rejestrowania adnotacji dotyczących konkretnego momentu, a SetStatus do oznaczania powodzenia lub niepowodzenia. Dzięki temu błędy są widoczne w backendzie śledzenia.
activity?.AddEvent(new ActivityEvent("inventory.reserved"));
activity?.SetStatus(ActivityStatusCode.Error, "Payment declined");Rejestrowanie ActivitySource
OTel zbiera aktywności tylko ze źródeł zarejestrowanych za pomocą AddSource, dlatego należy przekazać tracerowi nazwę elementu ActivitySource.
builder.Services.AddOpenTelemetry()
.WithTracing(tracing => tracing
.AddSource("Checkout.Orders"));Instrumentacja automatyczna
Wbudowana instrumentacja automatycznie tworzy spany dla przychodzących żądań ASP.NET Core i wychodzących wywołań HttpClient, dzięki czemu otrzymują Państwo podstawowy ślad bez pisania kodu.
tracing
.AddAspNetCoreInstrumentation()
.AddHttpClientInstrumentation();Propagacja kontekstu
Aby ślad obejmował wiele usług, jego identyfikator musi być przekazywany między nimi. OTel wstrzykuje go do wychodzących nagłówków HTTP (W3C traceparent) i odczytuje po stronie odbiorcy, automatycznie łącząc spany w jeden ślad.
Relacje nadrzędny–podrzędny
Gdy aktywność jest uruchamiana, kiedy inna aktywność jest bieżąca, nowa aktywność staje się jej elementem podrzędnym za pośrednictwem Activity.Current. Takie zagnieżdżanie buduje drzewo śladu bez ręcznego łączenia elementów.
using var parent = Source.StartActivity("PlaceOrder");
using var child = Source.StartActivity("ChargeCard");
// child is nested under parent automaticallyPróbkowanie
Śledzenie każdego żądania może być kosztowne. Próbkowanie rejestruje tylko część danych (na przykład 10%), aby kontrolować koszty, zachowując reprezentatywne informacje.
Szybkie sprawdzenie
Proszę sprawdzić znajomość śledzenia rozproszonego.
Podsumowanie
Śledzenie rozproszone śledzi żądanie za pomocą połączonych spanów współdzielących identyfikator śladu. W .NET Activity jest spanem tworzonym z zarejestrowanego ActivitySource za pomocą StartActivity (należy użyć using, aby go zakończyć). Kontekst można dodawać za pomocą SetTag, AddEvent i SetStatus. Instrumentacja automatyczna wraz z propagacją kontekstu W3C łączy ślady między usługami, a próbkowanie kontroluje koszty.
Często zadawane pytania
Czy lekcja „Śledzenie rozproszone” jest bezpłatna?
Tak — pełny tekst „Śledzenie rozproszone” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu C# Academy, przejdź na CoddyKit PRO. Kurs C# Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Śledzenie rozproszone”?
Śledź żądania między usługami za pomocą Activity. Ćwiczysz C# Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć C# Academy?
Nie wymagamy żadnego doświadczenia. C# Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Śledzenie rozproszone”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji C# Academy?
Tak. Każda lekcja C# Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Trzy filary obserwowalności
- Śledzenie rozproszone
- Zbieranie metryk
- Eksportowanie do systemów zaplecza