X-Ray kavramları ve mimarisi

AWS'i İzleme ve Sorun Giderme

John Q. Martin

Principal Consultant

Dağıtık sistemlerin zorluğu

 

Monolitik uygulama

  • Tek süreçte, doğrusal akış
  • Hata ayıklaması kolay

 

Dağıtık uygulama

  • Bir istek birden çok servis, veritabanı ve harici API'ye dokunur
  • Hata olursa, hangisi sebep oldu?

Bir dağıtık sistemde tek bir isteğin izini sürmenin zorluğunu anlatan, birbirine dolanmış çok renkli iplerden büyük bir düğüm

AWS'i İzleme ve Sorun Giderme

AWS X-Ray nedir?

 

X-Ray, şu işleri yapan bir dağıtık izleme servisidir:

  • İstekleri uçtan uca servisler arasında takip eder
  • Her adımda gecikmeyi ölçer, hataları saptar
  • Uygulama mimarisini servis haritası olarak görselleştirir

 

Örnek istek yolu:

  Dağıtık izde bir isteğin birden çok servisten akışını gösteren diyagram

AWS'i İzleme ve Sorun Giderme

Beş temel yetenek

 

Beş temel X-Ray yeteneği: istek izleme, performans analizi, hata tespiti, servis haritası ve içgörüler

AWS'i İzleme ve Sorun Giderme

İzleme nasıl çalışır

 

Dağıtık izleme akışı: bir istek Service A'ya girer, sonra Service B ve Service C çağrılır; her biri Trace ID'yi HTTP başlığında iletir; her servis aynı Trace ID ile X-Ray daemon'a segment yollar; daemon bunları X-Ray'e iletir ve tek bir izle birleştirilir

AWS'i İzleme ve Sorun Giderme

Trace ID ve başlık aktarımı

 

Trace ID biçimi:

Sürüm numarası, onaltılık Unix zaman damgası ve benzersiz tanımlayıcı içeren X-Ray Trace ID biçimi

 

HTTP başlığı:

X-Amzn-Trace-Id:
  Root=1-5e8c1234-...;
  Parent=abc123;
  Sampled=1
  • Root, Trace ID, tüm servislerde aynı
  • Parent, Yukarı akış segment ID'si
  • Sampled, 0 veya 1, izlendi ya da atlandı
AWS'i İzleme ve Sorun Giderme

X-Ray daemon

 

Ne yapar:

  • UDP 2000 portunu dinler
  • Uygulamandan segment verisi alır
  • Arabelleğe alır, biriktirir ve X-Ray API'ye iletir
  • Uygulamanı X-Ray servisten ayrıştırır

 

Ortama göre kurulum:

Orama göre X-Ray daemon kurulumu: Lambda'da otomatik, EC2'de servis, ECS'de sidecar

AWS'i İzleme ve Sorun Giderme

Örnekleme

 

Varsayılan kural:

  • Saniyedeki ilk istek - her zaman izlenir
  • Ek isteklerin %5'i - örneklenir

Özel kural alanları:

  • fixed_target - her zaman izlenecek istek/saniye
  • rate - ek isteklerin yüzdesi
  • priority - küçük sayı kazanır

 

Örnek strateji:

Kural 1 (öncelik 1):
  5xx hataları -> %100 örnekleme

Kural 2 (öncelik 10):
  Normal trafik -> %5 örnekleme
AWS'i İzleme ve Sorun Giderme

Segmentler

 

Bir segment ne kaydeder:

  • Servis adı
  • Başlangıç ve bitiş zamanı
  • Trace ID
  • HTTP istek ve yanıt ayrıntıları
  • AWS hesap ve bölge

 

Segment durumları:

Beş X-Ray segment durumu: in progress, ok, error, fault ve throttle

AWS'i İzleme ve Sorun Giderme

Subsegmentler

 

Zaman çizelgesi karşılaştırması: subsegment olmadan tek bir 800ms çubuk; subsegmentlerle aynı 800ms, darboğaz olarak vurgulanan PaymentService 400ms, ayrıca DynamoDB 50ms ve InventoryService 300ms olarak ayrılır

Subsegmentler ne yapar:

  • Segment içinde ayrıntılı zamanlama sağlar
  • Aşağı akış çağrılarını izler
  • 800ms toplamı şöyle böler:
    • DynamoDB.PutItem: 50ms
    • PaymentService çağrısı: 400ms
    • InventoryService çağrısı: 300ms

 

Ad alanları (namespaces):

Üç subsegment namespace: AWS çağrıları için aws, harici HTTP için remote ve özel kod için local

AWS'i İzleme ve Sorun Giderme

Annotations

 

Temel bilgiler:

  • İndekslenen anahtar-değer çiftleri - aranabilir ve filtrelenebilir
  • Sınır: iz başına 50 indeksli
  • Türler: string, number, boolean

Şunlar için kullan:

  • user_id, order_id, environment
  • version, feature flag'ler, hata kodları

 

Filtre söz dizimi:

annotation.user_id = "user-123"
annotation.environment = "production"
AND annotation.version = "1.2.3"
AWS'i İzleme ve Sorun Giderme

Metadata

 

Temel bilgiler:

  • İndekslenmez - arama/filtre yapılamaz
  • Boyut sınırı yok
  • Her türlü JSON yapısını destekler

Şunlar için kullan:

  • Tam istek ve yanıt gövdeleri
  • Hata mesajları ve yığın izleri
  • İş bağlamı (sipariş kalemleri, adresler)

 

Annotations vs. Metadata:

Karşılaştırma tablosu: annotations indeksli ve aranabilir; metadata ayrıntılı ve indekslenmez

AWS'i İzleme ve Sorun Giderme

Tam iz yapısı

 

Dört segmentli tam iz yapısı ve en yavaş işlem olarak harici ödeme API'si

AWS'i İzleme ve Sorun Giderme

Ders özeti

 

  • X-Ray - servisler arası uçtan uca görünürlük için dağıtık izleme servisi
  • İzleme mekanizması - HTTP başlıklarıyla Trace ID yayılımı, daemon tarafından toplanan segmentler, yapılandırılabilir örnekleme kuralları
  • İz bileşenleri:
    • Segmentler - servis düzeyinde iş kayıtları
    • Subsegmentler - ayrıntılı aşağı akış işlem zamanlaması
    • Annotations - filtreleme ve arama için indeksli anahtar-değer çiftleri
    • Metadata - ayrıntılı bağlam, indekslenmez
AWS'i İzleme ve Sorun Giderme

Hadi pratik yapalım!

AWS'i İzleme ve Sorun Giderme

Preparing Video For Download...