← Bütün Patternlər
🔎

Distributed Tracing

Bir istəyin 10 fərqli servis arasından keçdiyi yolu izləmək — TraceID ilə "detektiv" kimi problemi tapmaq.

🎯
Nə üçün lazımdır?

İstək yavaşdı, amma hansı servis gecikdirir? Monolitdə stack trace baxırdıq. Mikroservisdə TraceID lazımdır.

🆔
TraceID / SpanID

TraceID: Bir istəyin ümumi ID-si. SpanID: Hər servis daxili əməliyyatın ID-si. Birlikdə zənciri qurur.

🛠️
Alətlər

Jaeger, Zipkin, OpenTelemetry, Spring Cloud Sleuth/Micrometer Tracing, AWS X-Ray.

İNTERAKTİV

Vizual İzah

Mərhələ {{ currentStep + 1 }}: {{ steps[currentStep].title }}

{{ span.spanId }} {{ span.icon }} {{ span.name }} {{ span.duration }}
🎯 Bottleneck tapıldı: Payment Service — 1200ms!
JAVA

Kod Nümunəsi — Micrometer Tracing

application.yml + pom.xml
<!-- pom.xml —  dependency əlavə et -->
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-tracing-bridge-otel</artifactId>
</dependency>
<dependency>
    <groupId>io.opentelemetry</groupId>
    <artifactId>opentelemetry-exporter-jaeger</artifactId>
</dependency>

# application.yml
management:
  tracing:
    sampling:
      probability: 1.0   # 100% istəkləri trace et
  zipkin:
    tracing:
      endpoint: http://jaeger:9411/api/v2/spans

# Log-larda TraceID avtomatik görünür:
# [user-service,traceId=abc123,spanId=def456] GET /users/1 — 45ms
✅ Üstünlükləri
  • Bottleneck-ləri dəqiq tapır (hansı servis yavaşdır?)
  • Bir TraceID ilə bütün zənciri görür
  • Performance optimizasiyası üçün vazkeçilməz
⚠️ Riskləri
  • yüksək trafiklə trace data həcmi böyüyür (sampling lazım)
  • Əlavə latency ola bilər (minimal)
  • Infra setup (Jaeger/Zipkin) lazımdır