Ana içeriğe geç

Dağıtık İzleme

İngilizcesi
Distributed Tracing
Türkçe karşılığı
dağıtılmış izleme
Okunuşu
distribyutıd treysing

Günlük kullanımda çoğunlukla İngilizcesi tercih edilir.

Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/distributed-tracing

Kısaca

Dağıtık izleme, tek bir isteği birçok servis boyunca takip eden; her adımın ne kadar sürdüğünü ve nerede başarısız olduğunu kaydeden bir tekniktir.

Dağıtık izleme (distributed tracing) nedir?

Birçok servisten oluşan bir sistemde sipariş vermek gibi tek bir kullanıcı eylemi; bir gateway'e, bir sipariş servisine, bir ödeme servisine, bir veritabanına ve bir mesaj kuyruğuna çağrıları tetikleyebilir. Dağıtık izleme bu yolculuğun tamamını tek bir trace olarak kaydeder; böylece her adımı sırasıyla, her birinin ne kadar sürdüğünü ve hangisinin başarısız olduğunu görebilirsiniz. Yalnızca log'lardan yanıtlaması çok zor olan soruları yanıtlar, örneğin şu tek istek neden yavaştı.

Bir trace, span'lerden oluşur. Her span bir HTTP çağrısı ya da veritabanı sorgusu gibi bir iş birimini temsil eder ve başlangıç zamanını, süresini, durumunu ve özniteliklerini kaydeder; span'ler bir üst span'e işaret ederek bir ağaç oluşturur. Bir servis diğerini çağırdığında trace ID'sini ve mevcut span ID'sini, genellikle standart W3C traceparent HTTP başlığında, istekle birlikte iletir; böylece bir sonraki servis kendi span'lerini aynı trace'e bağlayabilir. Tracing kütüphaneleri, çoğunlukla OpenTelemetry, popüler framework'ler için span'leri otomatik oluşturur ve her trace'i bir zaman çizelgesi olarak çizen bir izleme arka ucuna aktarır.

Kargo takip numarası gibi çalışır: her depo kargoyu tarar ve sonradan kargonun tam olarak nereye gittiğini ve nerede üç gün beklediğini görebilirsiniz. İzleme, hiçbir tek servisin log'unun tüm hikâyeyi göstermediği mikroservis ve serverless sistemlerde şarttır. Yüksek trafikte her isteği kaydetmek pahalı olduğundan sistemler genellikle örnekleme (sampling) kullanır; örneğin normal trace'lerin %1'ini ama hata içeren her trace'i tutar.

Dağıtık izleme sıklıkla loglamayla karıştırılır. Log, tek bir servis tarafından yazılan yalıtılmış bir kayıttır; trace ise paylaşılan bir trace ID'siyle servisler arasındaki işi birbirine bağlar ve zamanlamayı ile neden-sonuç ilişkisini gösterir. İkisi birlikte en iyi çalışır: trace ID'sini her log satırına eklemek, yavaş bir span'den doğrudan eşleşen log kayıtlarına atlamanızı sağlar.

Önemli noktalar

  • Trace, tek bir isteği servisler arasında uçtan uca takip eder.
  • Trace'ler, her biri bir işlemi ölçen ve üst-alt sırasıyla bağlanan span'lerden oluşur.
  • Trace ID'si servisler arasında, genellikle traceparent başlığında iletilir.
  • OpenTelemetry, trace oluşturmak ve dışa aktarmak için yaygın açık standarttır.
  • Örnekleme, yüksek trafik hacimlerinde izlemeyi karşılanabilir tutar.

Örnek

Trace bağlamını bir sonraki servise iletmekjavascript
// W3C trace context header: version-traceId-parentSpanId-flags
// traceparent: 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
import { context, propagation } from "@opentelemetry/api";

async function callPaymentService(order) {
  const headers = { "content-type": "application/json" };
  // Copy the current trace ID and span ID into the outgoing headers
  propagation.inject(context.active(), headers);
  return fetch("https://payments.internal/charge", {
    method: "POST",
    headers,
    body: JSON.stringify(order),
  });
}

Sık sorulan sorular

Dağıtık izlemede span nedir?

Span, bir trace içindeki zamanlanmış tek bir işlemdir; örneğin gelen bir HTTP isteği, bir veritabanı sorgusu ya da başka bir servise yapılan bir çağrı. Bir başlangıç zamanı, süre, durum ve öznitelikleri kaydeder ve üst span'ine işaret eder; böylece tüm istek bir ağaç olarak gösterilebilir.

İzleme (tracing) ile loglama arasındaki fark nedir?

Loglama, tek bir servis içindeki bireysel olayları kaydeder. İzleme ise tek bir istek için birçok servisin yaptığı işi paylaşılan bir trace ID'si aracılığıyla birbirine bağlar ve her adımın sırasını, zamanlamasını ve nedenini gösterir.

Dağıtık izleme bir uygulamayı yavaşlatır mı?

Span oluşturmak küçük bir ek yük getirir; bu yük genellikle ağ çağrılarına kıyasla ihmal edilebilir düzeydedir. Daha büyük maliyet, trace verisini göndermek ve saklamaktır; çoğu sistemin isteklerin yalnızca bir kısmını örneklemesinin nedeni budur.

İlgili sayfalar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar