Koncepcje i architektura X-Ray

Monitoring and Troubleshooting AWS

John Q. Martin

Principal Consultant

Wyzwania systemów rozproszonych

 

Aplikacja monolityczna

  • Liniowy przepływ, jeden proces
  • Łatwa do debugowania

 

Aplikacja rozproszona

  • Jedno żądanie trafia do wielu serwisów, baz danych i zewnętrznych API
  • Gdy coś się psuje — który serwis zawinił?

Duży splątany węzeł z kolorowych nitek — ilustracja trudności śledzenia jednego żądania w systemie rozproszonym

Monitoring and Troubleshooting AWS

Czym jest AWS X-Ray?

 

X-Ray to usługa śledzenia rozproszonego, która:

  • Śledzi żądania przez wszystkie serwisy od początku do końca
  • Mierzy opóźnienia i wykrywa błędy na każdym etapie
  • Wizualizuje architekturę aplikacji jako mapę serwisów

 

Przykładowa ścieżka żądania:

  Diagram ścieżki żądania przepływającego przez wiele serwisów w śledzeniu rozproszonym

Monitoring and Troubleshooting AWS

Pięć głównych możliwości

 

Pięć głównych możliwości X-Ray: śledzenie żądań, analiza wydajności, wykrywanie błędów, mapa serwisów i wgląd w dane

Monitoring and Troubleshooting AWS

Jak działa śledzenie

 

Przepływ śledzenia rozproszonego: żądanie trafia do serwisu A, który wywołuje serwis B, a następnie C; każdy przekazuje Trace ID w nagłówku HTTP; każdy serwis wysyła segment z tym samym Trace ID do demona X-Ray, który przesyła je do X-Ray, gdzie są składane w jeden kompletny ślad

Monitoring and Troubleshooting AWS

Trace ID i propagacja nagłówków

 

Format Trace ID:

Format Trace ID w X-Ray: numer wersji, znacznik czasu Unix w hex i unikalny identyfikator

 

Nagłówek HTTP:

X-Amzn-Trace-Id:
  Root=1-5e8c1234-...;
  Parent=abc123;
  Sampled=1
  • Root — Trace ID, wspólny dla wszystkich serwisów
  • Parent — ID segmentu nadrzędnego
  • Sampled — 0 lub 1, śledzony lub pominięty
Monitoring and Troubleshooting AWS

Demon X-Ray

 

Co robi demon:

  • Nasłuchuje na porcie UDP 2000
  • Odbiera dane segmentów z aplikacji
  • Buforuje, grupuje i przesyła do API X-Ray
  • Oddziela aplikację od usługi X-Ray

 

Wdrożenie według środowiska:

Wdrożenie demona X-Ray: automatyczne w Lambda, jako serwis na EC2 i jako sidecar na ECS

Monitoring and Troubleshooting AWS

Próbkowanie

 

Reguła domyślna:

  • Pierwsze żądanie na sekundę — zawsze śledzone
  • 5% kolejnych żądań — próbkowane

Pola reguły niestandardowej:

  • fixed_target — żądań/s zawsze śledzonych
  • rate — procent dodatkowych żądań
  • priority — niższa liczba ma pierwszeństwo

 

Przykładowa strategia:

Rule 1 (priority 1):
  5xx errors -> 100% sampling

Rule 2 (priority 10):
  Normal traffic -> 5% sampling
Monitoring and Troubleshooting AWS

Segmenty

 

Co rejestruje segment:

  • Nazwa serwisu
  • Czas rozpoczęcia i zakończenia
  • Trace ID
  • Szczegóły żądania i odpowiedzi HTTP
  • Konto AWS i region

 

Stany segmentu:

Pięć stanów segmentu X-Ray: in progress, ok, error, fault i throttle

Monitoring and Troubleshooting AWS

Subsegmenty

 

Porównanie osi czasu: bez subsegmentów — jeden pasek 800 ms; z subsegmentami — te same 800 ms podzielone na: DynamoDB 50 ms, PaymentService 400 ms (wąskie gardło) i InventoryService 300 ms

Co robią subsegmenty:

  • Zapewniają szczegółowy pomiar czasu wewnątrz segmentu
  • Śledzą wywołania zewnętrzne
  • Rozkładają 800 ms na:
    • DynamoDB.PutItem: 50 ms
    • Wywołanie PaymentService: 400 ms
    • Wywołanie InventoryService: 300 ms

 

Przestrzenie nazw:

Trzy przestrzenie nazw subsegmentów: aws dla wywołań AWS, remote dla zewnętrznych HTTP i local dla własnego kodu

Monitoring and Troubleshooting AWS

Adnotacje

 

Najważniejsze informacje:

  • Indeksowane pary klucz-wartość — można przeszukiwać i filtrować
  • Limit: 50 indeksowanych na ślad
  • Typy: string, number, boolean

Zastosowania:

  • user_id, order_id, środowisko
  • wersja, flagi funkcji, kody błędów

 

Składnia filtrów:

annotation.user_id = "user-123"
annotation.environment = "production"
AND annotation.version = "1.2.3"
Monitoring and Troubleshooting AWS

Metadane

 

Najważniejsze informacje:

  • Nie są indeksowane — nie można przeszukiwać ani filtrować
  • Brak limitu rozmiaru
  • Obsługują dowolną strukturę JSON

Zastosowania:

  • Pełne treści żądań i odpowiedzi
  • Komunikaty błędów i stosy wywołań
  • Kontekst biznesowy (pozycje zamówienia, adresy)

 

Adnotacje a metadane:

Tabela porównawcza: adnotacje — indeksowane i przeszukiwalne; metadane — szczegółowe, nieindeksowane

Monitoring and Troubleshooting AWS

Kompletna struktura śladu

 

Kompletna struktura śladu z czterema segmentami; zewnętrzne API płatności jako najwolniejsza operacja

Monitoring and Troubleshooting AWS

Podsumowanie lekcji

 

  • X-Ray — usługa śledzenia rozproszonego zapewniająca pełny wgląd w działanie serwisów
  • Mechanizm śledzenia — propagacja Trace ID przez nagłówki HTTP, segmenty zbierane przez demona, konfigurowalne reguły próbkowania
  • Składniki śladu:
    • Segmenty — rekordy pracy na poziomie serwisu
    • Subsegmenty — szczegółowy pomiar czasu wywołań zewnętrznych
    • Adnotacje — indeksowane pary klucz-wartość do filtrowania i wyszukiwania
    • Metadane — szczegółowy kontekst, nieindeksowany
Monitoring and Troubleshooting AWS

Czas na praktykę!

Monitoring and Troubleshooting AWS

Preparing Video For Download...