AWS X-Ray
Monitoring Developer Associate DevOps Engineer Professional Solutions Architect Associate

AWS X-Ray

AWS X-Ray

Distributed tracing w AWS. Sledz requesty przez caly stos mikroserwisów, wizualizuj zaleznosci na service map i szybko znajdz przyczyne problemów z wydajnoscia.

AWS X-Ray to serwis do distributed tracing, który pomaga analizowac i debugowac aplikacje rozproszone. Gdy request przechodzi przez wiele mikroserwisów (API Gateway, Lambda, ECS, DynamoDB, SQS), X-Ray laczy wszystkie te interakcje w jeden trace, pokazujac pelna sciezke requestu i czas spedzony w kazdym komponencie.

X-Ray generuje service map - wizualna mape wszystkich serwisów i ich zaleznosci. Na pierwszy rzut oka widzisz, który komponent jest wolny, gdzie wystepuja bledy i jak plynie ruch w Twojej aplikacji. To nieocenione narzedzie do debugowania problemów z latency i bledami w architekturze mikroserwisowej.

Czy wiesz, ze...

X-Ray automatycznie instrumentuje wiele serwisów AWS bez dodatkowego kodu. Lambda, API Gateway, App Runner i inne serwisy moga wysylac trace do X-Ray po wlaczeniu jednego ustawienia. X-Ray Daemon w Lambda jest wbudowany - nie musisz go instalowac. Service Map aktualizuje sie w czasie rzeczywistym, pokazujac zmiany w architekturze i wydajnosci.

Pro Tip

Uzywaj Annotations do indeksowania trace po kluczowych atrybutach biznesowych (userId, orderId, tenantId). Pozwoli Ci to szybko znalezc wszystkie requesty danego uzytkownika lub zamówienia. W Lambda wlacz Active Tracing jednym kliknieciem. Dla ECS/EC2 zainstaluj X-Ray Daemon jako sidecar container. Dostosuj sampling rules - nie musisz tracowac 100% healthchecków.

AWS X-Ray umozliwia sledzenie requestow przez rozproszone aplikacje - od frontendu przez API Gateway, Lambda, ECS az po bazy danych. Ponizej przedstawiamy proces instrumentacji i analizy trace-ow.

1

Instrumentacja aplikacji

X-Ray oferuje dwa podejscia: SDK (manualny - dodajesz X-Ray SDK do kodu, owijasz klienty AWS, HTTP i SQL w segmenty) oraz auto-instrumentacje (OpenTelemetry ADOT - automatyczne przechwytywanie bez zmian w kodzie). Dla Lambda i API Gateway wystarczy wlaczyc "Active Tracing" w konfiguracji - instrumentacja jest automatyczna. SDK wspiera Java, Python, Node.js, Go, .NET i Ruby.

2

Wysylanie trace-ow

Zinstrumentowana aplikacja wysyla segmenty do X-Ray daemon (proces nasluchujacy na UDP port 2000) lub bezposrednio do X-Ray API. Daemon buforuje segmenty i wysyla je batchami do backendu X-Ray. W ECS/EKS daemon dziala jako sidecar container. W Lambda daemon jest wbudowany. ADOT Collector zastepuje daemon i wspiera OpenTelemetry Protocol (OTLP).

3

Mapa serwisow (Service Map)

X-Ray automatycznie generuje wizualna mape serwisow - kazdy node to serwis (Lambda, ECS, DynamoDB), a krawedzie pokazuja zaleznosci i latency. Kolory sygnalizuja kondycje: zielony (OK), zolty (bledy 4xx), czerwony (bledy 5xx/faulty). Mapa pokazuje sredni czas odpowiedzi, liczbe requestow i procent bledow dla kazdego serwisu.

4

Analiza trace-ow

Kazdy trace to pelna sciezka requestu przez system. Widok timeline (waterfall) pokazuje kazdy segment i subsegment z czasem trwania. Widzisz dokladnie, gdzie request spedzil czas - np. 200ms na Lambda cold start, 50ms na DynamoDB query, 10ms na S3 GetObject. Mozesz kliknac kazdy segment, aby zobaczyc metadata, annotations i bledy.

5

Grupy i wyrazenia filtrujace

Filter expressions pozwalaja przeszukiwac trace-y: service("payment-api") AND responsetime > 3 AND http.status = 500. Grupy (Groups) to zapisane filtry - np. "Slow payment requests" - ktore generuja wlasne metryki CloudWatch. Mozesz ustawic alarmy na metrykach grupy, np. alert gdy sredni czas odpowiedzi payment-api przekroczy 2 sekundy.

6

X-Ray Insights

Insights automatycznie wykrywa anomalie w zachowaniu aplikacji - nagle wzrosty latency, skoki bledow, zmiany w rozkadzie czasu odpowiedzi. X-Ray koreluje anomalie z root cause - np. "wzrost latency payment-api spowodowany przez spowolnienie DynamoDB". Insights generuje notyfikacje przez EventBridge, co pozwala na automatyczna reakcje.

Praktyczne wskazowki z wdrazania X-Ray w srodowiskach produkcyjnych - od kontroli kosztow po integracje z OpenTelemetry.

Sampling rules - kontrola kosztow

Domyslnie X-Ray probkuje 1 request/sekunde + 5% reszty. Dla produkcyjnych systemow z tysiacami requestow/sekunde to generuje duze koszty. Skonfiguruj custom sampling rules: np. 100% dla bledow 5xx, 10% dla /api/health, 1% dla /static/*. Sampling rules mozesz zmieniac dynamicznie bez redeployu - X-Ray daemon pobiera je co 10 sekund.

Zaawansowany

X-Ray daemon vs ADOT Collector

X-Ray daemon to lekki proces (< 50 MB RAM) wysylajacy dane tylko do X-Ray. ADOT (AWS Distro for OpenTelemetry) Collector to bardziej wszechstronny - wysyla dane do X-Ray, CloudWatch, Prometheus i zewnetrznych backendow jednoczesnie. Dla nowych projektow wybieraj ADOT - jest przyszlosciowy, wspiera OpenTelemetry standard i daje wiecej opcji eksportu.

Zaawansowany

Integracja z OpenTelemetry

X-Ray w pelni wspiera OpenTelemetry (OTel) - mozesz instrumentowac aplikacje OTel SDK i wysylac trace-y do X-Ray przez ADOT Collector. Zaleta: ten sam kod instrumentacji dziala z dowolnym backendem (Jaeger, Zipkin, Datadog). Uzyj propagacji kontekstu W3C Trace Context dla kompatybilnosci z serwisami spoza AWS.

Zaawansowany

Annotations - metadane do wyszukiwania

Annotations to pary klucz-wartosc indeksowane przez X-Ray - mozesz po nich filtrowac trace-y. Dodaj annotations typu: userId, orderId, tenantId, environment. Przyklad: putAnnotation("orderId", "ORD-12345") pozwala pozniej znalezc wszystkie trace-y dotyczace konkretnego zamowienia. Limit: 50 annotations na segment.

Poczatkujacy

Subsegmenty dla granularnosci

Subsegmenty pozwalaja mierzyc czas poszczegolnych operacji wewnatrz segmentu - np. czas parsowania JSON, walidacji, zapytania do cache vs bazy. SDK automatycznie tworzy subsegmenty dla wywolan AWS SDK, HTTP i SQL. Dodaj wlasne subsegmenty dla kluczowej logiki biznesowej: beginSubsegment("calculateDiscount") ... endSubsegment().

Poczatkujacy

Lambda - automatyczne sledzenie

Dla Lambda wlacz Active Tracing jednym ustawieniem - X-Ray automatycznie sladzi cold starty, czas inicjalizacji i execution time. Lambda automatycznie propaguje trace ID do kolejnych wywolan AWS SDK. Dla Lambdy z API Gateway caly request jest widoczny jako jeden trace: klient -> API GW -> Lambda -> DynamoDB. Nie musisz uruchamiac daemona - jest wbudowany.

Poczatkujacy

Screenshoty z AWS Console

Wkrotce pojawia sie tu zrzuty ekranu pokazujace jak korzystac z AWS X-Ray bezposrednio w konsoli AWS.

Do czego sluzy AWS X-Ray?

01

Analiza latency

Znajdz najwolniejsze komponenty w lancuchu requestów. X-Ray pokazuje dokladny czas kazdego wywolania, zapytania do bazy i wywolania API.

02

Debugowanie bledów

Sledz bledy (4xx, 5xx) przez caly stos. X-Ray pokazuje dokladnie, który serwis zwrócil blad i jaki byl kontekst.

03

Service Map i zaleznosci

Automatyczna wizualizacja architektury mikroserwisów. Mapa pokazuje serwisy, polaczenia, latency i error rate w czasie rzeczywistym.

04

Optymalizacja wydajnosci

Identyfikuj bottlenecki, wolne zapytania do bazy danych, nieefektywne wywolania API i cold starty Lambda na podstawie danych trace.

Co musisz wiedziec?

Trace

Pelna sciezka pojedynczego requestu przez wszystkie serwisy. Sklada sie z segmentów i subsegmentów tworzacych drzewo wywolan.

Segment

Jednostka pracy reprezentujaca jeden serwis w trace. Zawiera nazwe serwisu, czas rozpoczecia/zakonczenia, status HTTP i metadane.

Subsegment

Szczególowy zapis operacji wewnatrz segmentu - np. wywolanie DynamoDB, zapytanie HTTP, wywolanie funkcji. Daje granularny widok co zajelo czas.

Annotations

Indeksowane pary klucz-wartosc dodawane do segmentów. Mozna po nich filtrowac trace - np. annotation userId="123" pozwala znalezc wszystkie requesty uzytkownika.

Sampling Rules

Reguly okreslajace jaki procent requestów jest tracowany. Domyslnie: 1 req/sek + 5% reszty. Mozna dostosowac per serwis lub URL.

Service Map

Wizualna mapa wszystkich serwisów, ich polaczen, latency i error rate. Generowana automatycznie na podstawie zebranych trace.

Architektura: Distributed Tracing z X-Ray

Architektura sledzenia requestow w aplikacji serverless/kontenerowej. X-Ray zbiera trace-y z kazdego serwisu i buduje mape zaleznosci, umozliwiajac szybka diagnoztyke problemow wydajnosciowych.

Klient Request HTTP z unikalnym Trace ID
HTTPS
API Gateway
API Gateway Propagacja Trace ID, pomiar latency bramy
Trace context
Lambda / ECS
Lambda / ECS Instrumentacja aplikacji, tworzenie segmentow i subsegmentow
Segmenty UDP/HTTPS
AWS X-Ray
AWS X-Ray Zbieranie trace-ow, budowanie mapy serwisow, analiza anomalii
Wizualizacja
Service Map + Trace Analysis Wizualizacja zaleznosci i waterfall timeline requestow
Metryki/Alarmy
Amazon CloudWatch
Amazon CloudWatch Metryki z grup X-Ray, alarmy na anomalie, dashboard
Skonfiguruj custom sampling rules zanim wlaczysz X-Ray na produkcji - domyslny sampling moze generowac niespodziewane koszty przy duzym ruchu.
Uzyj ADOT Collector zamiast X-Ray daemon dla nowych wdrozen - wspiera OpenTelemetry standard i umozliwia eksport do wielu backendow jednoczesnie.
Dodaj annotations (userId, orderId) do kazdego trace-a, aby moc szybko znalezc sciezke konkretnego requestu klienta podczas debugowania incydentow.

Ile kosztuje AWS X-Ray?

Traces recorded

Oplata za kazdy zarejestrowany trace (segment wysłany do X-Ray).

$5.00 za milion zarejestrowanych trace

Traces retrieved/scanned

Oplata za pobieranie i skanowanie trace przy wyszukiwaniu i analizie.

$0.50 za milion pobranych trace, $0.50 za milion przeskanowanych

Free Tier (zawsze)

100 000 zarejestrowanych trace i 1 000 000 pobranych/przeskanowanych trace miesiecznie - za darmo, bez limitu czasowego.

Wystarczy dla malych/srednich aplikacji

Przyklady AWS CLI

Pobierz podsumowanie trace

Wyszukuje trace z ostatnich 10 minut z bledami

aws xray get-trace-summaries \
 --start-time $(date -d "10 minutes ago" +%s) \
 --end-time $(date +%s) \
 --filter-expression "service(\"moja-api\") AND fault"

Pobierz service map

Generuje mape serwisów z ostatniej godziny

aws xray get-service-graph \
 --start-time $(date -d "1 hour ago" +%s) \
 --end-time $(date +%s)

Utwórz sampling rule

Tworzy regule samplowania: 10% requestów do /api/health

aws xray create-sampling-rule --sampling-rule '{"RuleName":"health-check","Priority":100,"FixedRate":0.1,"ReservoirSize":1,"ServiceName":"*","ServiceType":"*","Host":"*","ResourceARN":"*","HTTPMethod":"GET","URLPath":"/api/health","Version":1}'

Pobierz pelny trace

Pobiera szczególy konkretnego trace po ID

aws xray batch-get-traces \
 --trace-ids 1-67890abc-def1234567890abc \
 --query 'Traces[0].Segments[].{Name:Document}'

Quiz: AWS X-Ray

Sprawdz czy dobrze rozumiesz podstawy. Kliknij odpowiedz — feedback pojawi sie od razu.

Twoj wynik: 0 / 4

1. Co to jest Trace w X-Ray?

2. Czym róznia sie Annotations od Metadata w X-Ray?

3. Jaka jest domyslna regula samplowania w X-Ray?

4. Który komponent X-Ray zbiera segmenty i wysyla je do API?

Chcesz poznac AWS X-Ray w praktyce?

Darmowy kurs "AWS od podstaw" pokazuje jak uzywac AWS X-Ray krok po kroku. Teoria + praktyka od zera.

Zacznij darmowy kurs Wszystkie serwisy