Traces en servicemaps analyseren

Monitoring en troubleshooting van AWS

John Q. Martin

Principal Consultant

Wat is een servicemap?

 

Automatisch gegenereerd uit je trace-data: geen handmatige setup

Vertrekbord met rijen services, elk met een gekleurd statuslampje: groen op tijd, amber vertraagd, rood gestopt

In één oogopslag: groen = op tijd · amber = vertraagd · rood = gestopt

 

Zo open je het:

  • X-Ray-console → Service map
  • Pas filters toe
  • Klik een node → gedetailleerde uitsplitsing
Monitoring en troubleshooting van AWS

Kleurcodering servicemap

 

Kleursleutel servicemap: groen geslaagde calls, geel clientfouten, rood serverfouten, paars throttling, grijs geen verkeer

Als je een servicemap opent, ga direct naar alles wat niet groen is.

Klik op een node voor: verdeling van responstijden, uitsplitsing HTTP-status, fouttypes.

Monitoring en troubleshooting van AWS

Een servicemap lezen

 

Servicemap met API Gateway en OrderService die uitwaaieren naar DynamoDB Inventory en een gele Payment-service

Monitoring en troubleshooting van AWS

Analyse van het kritieke pad

 

Kritiek pad = langste keten van servicecalls

API Gateway (50ms)
  -> OrderService (50ms)
    -> PaymentService (100ms)
      -> External API (200ms)

Totaal: 400ms

External API = 50% van totale latency

 

Wat doe je hiermee:

  • External API is je optimalisatiedoel
  • Opties: caching toevoegen, timeout + fallback, SLA's afspreken

Vergelijk alternatief pad:

OrderService -> DynamoDB
Totaal: 120ms (snel)
Monitoring en troubleshooting van AWS

Afhankelijkheidsrisico's

 

Servicemap-afhankelijkheidsrisico's cirkelafhankelijkheden single points of failure en risicovolle externe afhankelijkheden

Monitoring en troubleshooting van AWS

Trace-tijdlijnen begrijpen

 

Trace-tijdlijn met subsegmenten langs een tijdas, waarbij een payment-api-call de langste bewerking is

 

  • Horizontale as tijd: wanneer bewerkingen starten en hoe lang ze duren
  • Verticale as servicehiërarchie: subsegmenten inspringend onder ouders
  • HTTP.POST naar payment-api (100-250ms) = de langste enkele bewerking
Monitoring en troubleshooting van AWS

Patroon 1: Sequentiële bottlenecks

 

Voor (sequentieel - 80ms):

Query 1 (10-30ms)
         -> Query 2 (30-50ms)
                  -> Query 3 (50-70ms)
                           -> Query 4 (70-90ms)

 

Na (parallel - 20ms):

Trace-tijdlijn van vier parallelle queries die overlappen en in 20ms klaar zijn

Monitoring en troubleshooting van AWS

Patroon 2: N+1-queries en pratende services

 

N+1-queryprobleem:

Gebruikerslijst ophalen       (10-20ms)
Details gebruiker 1 ophalen  (20-30ms)
Details gebruiker 2 ophalen  (30-40ms)
... ×100 sequentiële queries

Oplossing: batchqueries, eager loading

 

Pratende services:

  • 50 kleine calls tussen twee services i.p.v. 1 batch
  • Elke call: connectie opzetten + serialisatie + round-trip
  • 50× de overhead

Oplossing: batchverzoeken, message queues, caching

Monitoring en troubleshooting van AWS

Patroon 3: Cold starts en cascaderende fouten

 

Twee tijdlijnbalken: een cold start heeft een groot oranje initialisatieblok en dan een kleine groene handler; een warm start is alleen de kleine groene handler

Lambda Cold Start:

  • Cold: 3000ms (2500ms init + 500ms handler)
  • Warm: 500ms (alleen handler)
  • Zichtbaar als groot init-segment bij eerste aanroep

Oplossing: provisioned concurrency, initialisatie optimaliseren

 

Cascading failure:

Service A [Error]
  -> Service B [Timeout 5s]
    -> Service C [Timeout 5s]
      -> Database [Timeout 5s]

Overeenkomende timeout-blokken gestapeld door de trace-hiërarchie

Oplossing: timeouts, circuit breakers, fallbacks

Monitoring en troubleshooting van AWS

Traces filteren met annotations

X-Ray-console die traces filtert op annotation key-valueparen

Groepen vergelijken:

  • Premiumgebruikers gem. 200ms vs. gratis gebruikers gem. 150ms → premiumfuncties voegen latency toe
  • EU West 3× trager dan US East → cross-region data-toegang probleem
Monitoring en troubleshooting van AWS

Trace-analyseworkflow

 

  1. Identificeer - filter: response_time > 1000ms, sorteer op duur
  2. Analyseer - vind langste bewerkingen, sequentiële bottlenecks, parallelkansen
  3. Annoteer - check annotations voor businesscontext: user ID, order ID, environment
  4. Review - bekijk metadata: requestdetails, foutmeldingen
  5. Correleer - kruisverwijzing met CloudWatch Logs
  6. Diagnoseer - kernoorzaak: trage query, timeout, algoritme, resource-uitputting
  7. Fix - optimaliseer code, voeg caching toe, paralleliseer, schaal
  8. Verifieer - vergelijk voor/na-traces, monitor latency en foutpercentages
Monitoring en troubleshooting van AWS

Alerts maken van X-Ray-data

 

# Hoge-latency-alarm
aws cloudwatch put-metric-alarm \
  --alarm-name HighLatency \
  --metric-name ResponseTime \
  --namespace AWS/XRay \
  --statistic Average \
  --period 300 \
  --threshold 1000 \
  --comparison-operator GreaterThanThreshold

 

# Hoog foutaantal-alarm
aws cloudwatch put-metric-alarm \
  --alarm-name HighErrorCount \
  --metric-name ErrorCount \
  --namespace AWS/XRay \
  --statistic Sum \
  --period 300 \
  --threshold 50 \
  --comparison-operator GreaterThanThreshold
Monitoring en troubleshooting van AWS

Videosamenvatting

 

  • Servicemaps - automatisch gegenereerde architectuurdiagrammen: nodes (services), edges (verbindingen), kleurgecodeerde health
  • Kleurcodering - groen (success), geel (4xx), rood (5xx-fouten), paars (429), grijs (geen verkeer)
  • Kritiek pad - langste call-keten, wijst je optimalisatiedoel aan
  • Trace-tijdlijnen - onthullen sequentiële bottlenecks, N+1-queries, cold starts, cascaderende fouten
  • Annotations - filter en groepeer traces op businesscontext
  • Workflow - acht stappen: identify → analyze → annotate → review → correlate → diagnose → fix → verify
Monitoring en troubleshooting van AWS

Traces en servicemaps analyseren

Monitoring en troubleshooting van AWS

Preparing Video For Download...