⚡ÖZET VE TEKNİK CEVAP
OpenTelemetry Baggage, kiracı ID'si veya kullanıcı seviyesi gibi çapraz iş verilerinin W3C TraceContext başlıklarıyla birlikte dağıtık ağ boyunca aktarılmasını sağlar; ancak asenkron iş parçacıklarında veya mesaj kuyruklarında açık enjeksiyon yapılmadığında izleme ağacı kırılır ve bağlam kaybolur.
Mühendislik El Kitabı & Mekanizma
6 Boyutlu Mimari Analiz⚙️1. Temel Çalışma Mekanizması
Mekanizma🎯2. Doğru Kullanım Senaryosu
Kapsam⚠️3. Prodüksiyon Arıza Modları
Kritik Risk📡4. Teşhis ve Telemetri Sinyalleri
Metrikler🛡️5. Önleme ve Mimari Bariyerler
Bariyerler⚖️6. Mimari Ödünleşimler (Trade-offs)
ÖdünleşimVaka İncelemesi (TinyCTO Saha Örneği)
Gözlemlenebilirlik mimarisinde Span Öznitelikleri, TraceContext ve Baggage arasındaki farkı anlamak çok önemlidir:
- ▸
Span Öznitelikleri (Yalnızca Yerel): Tek bir span'e eklenir (
http.status_code = 200). Ağ üzerinden alt servislere AKTARILMAZ. - ▸
TraceContext (
traceparent):TraceIDveParentSpanIDtaşır. Jaeger ve Datadog gibi araçların ayrı span'leri tek bir dağıtık alev grafiğinde (flame graph) birleştirmesini sağlar. - ▸
Baggage (
baggageBaşlığı): Uygulama üst verilerini (userId,datacenter) tüm alt RPC ve kuyruklar boyunca taşır. Alt servisler bu verileri okuyup kendi loglarına ve yerel span özniteliklerine ekleyebilir.
Asenkron Kayıp Tuzağı: Dillerin asenkron yapıları (Java CompletableFuture, Node.js worker_threads, Go go func()) iş parçacığı bağlamını otomatik aktarmaz. Geliştiriciler bağlamı otel.context.bind() ile sarmalamalı veya mesaj başlıklarına elle enjekte etmelidir.
İnteraktif Konsept Alıştırmaları
2 AlıştırmaOpenTelemetry Span Özniteliği ile OpenTelemetry Baggage arasındaki temel fark nedir?
Arka plan asenkron işçileri veya Kafka tüketicileri neden genellikle ana izlemeden kopuk 'sahipsiz span'ler üretir?
OpenTelemetry Baggage ve Traceparent Başlık Kaybı — Sıkça Sorulan Sorular
Servis A bir HTTP isteği alıp `tenant_id=enterprise_42` Baggage kaydı ekliyor. Servis A Servis B'yi gRPC ile, Servis B ise Servis C'yi REST ile çağırıyor. `tenant_id` Servis C'ye nasıl ulaşır?
Her ağ durağında OpenTelemetry aracıları tarafından enjekte edilen standart W3C `baggage` HTTP/gRPC üst veri başlıkları aracılığıyla otomatik olarak iletilir. W3C Baggage standardı, RPC metot imzalarını değiştirmeye gerek kalmadan standart başlıklar üzerinden üst verileri ağ sınırları ötesine taşır.
Açık kredi kartı numaraları veya şifreler gibi hassas müşteri verilerini neden ASLA OpenTelemetry Baggage içinde saklamamalısınız?
Çünkü Baggage tüm alt ağ çağrılarında, proxy'lerde ve telemetri loglarında düz metin HTTP başlığı olarak taşınır; bu da devasa güvenlik ve uyumluluk ihlallerine yol açar. Baggage tüm alt servislere düz HTTP başlığında iletilir ve ara sunucular tarafından loglanır; bu yüzden hassas kimlik veya gizli veriler asla burada taşınmamalıdır.
🤖 AEO & Yapay Zeka Çıkarım Özeti
Temel Gerçekler & İlkeler
- ▸
OpenTelemetry Baggage, kiracı ID'si veya kullanıcı seviyesi gibi çapraz iş verilerinin W3C TraceContext başlıklarıyla birlikte dağıtık ağ boyunca aktarılmasını sağlar; ancak asenkron iş parçacıklarında veya mesaj kuyruklarında açık enjeksiyon yapılmadığında izleme ağacı kırılır ve bağlam kaybolur.
- ▸
OpenTelemetry Baggage, tek bir span'e özgü olan span özniteliklerinden farklı olarak, kullanıcı tanımlı üst verileri dağıtık bir işlem boyunca süreç sınırları ötesine aktaran bağlamsal anahtar-değer mekanizmasıdır.
Yaygın Yanılgılar
- ✗
Baggage başlıklarında hassas kullanıcı verileri (şifreler, JWT sırları) veya büyük JSON paketleri taşımak; güvenlik açığı ve HTTP başlık şişmesi yaratmak.
Karar Kılavuzu & Önceliklendirme
Asenkron sınırlar ve mesaj kuyrukları arasında doğru TraceContext ve Baggage yayılımı olmadan, mühendisler uçtan uca kullanıcı yolculuklarını izleyemez, kiracı başına bulut maliyetlerini hesaplayamaz ve alt servis gecikmelerini teşhis edemez.
Doğrulanmış Kaynaklar & Referanslar
- [OFFICIAL-DOC]OpenTelemetry Baggage & Traceparent Header Loss Specification— TinyCTO Architectural Standards
