Spring Sleuth Nedir? Mikroservislerde Log Takibi ve Dağıtık İzleme Rehberi

Mikroservis mimarisinde bir isteğin hangi servisten geçtiğini, nerede hata aldığını veya ne kadar zaman harcadığını görmek zordur. Spring Cloud Sleuth, her isteğe benzersiz kimlikler (traceId, spanId) ekleyerek dağıtık izlemeyi kolaylaştırır.

Spring Cloud Sleuth Nedir?

Spring Sleuth, mikroservis tabanlı uygulamalarda log takibini kolaylaştıran bir Spring Cloud bileşenidir. Logback ve SLF4J ile entegre çalışır, böylece loglara manuel müdahale olmadan, her isteğe özel detaylı bilgiler eklenir.

Spring Sleuth’un Avantajları

  • Benzersiz Tanımlayıcılar: Her isteğe traceId, her adıma spanId.
  • Kolay Log Takibi: Servisler arası akışı uçtan uca izleme.
  • Otomatik Entegrasyon: Spring Boot ile minimum konfigürasyon.
  • Hızlı Sorun Giderme: Hata ve performans darboğazlarını hızlı teşhis.
  • Dağıtık Sistem Uyumu: Mikroservis topolojilerinde net görünürlük.

Kurulum: Maven ve Uygulama Adı

1) Maven bağımlılığı

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>

2) Uygulama adını belirleme

spring.application.name=latestpost

İpucu: Uygulama adını loglarda görmek, hangi servisin hangi işlemi yaptığını hızlıca anlamanızı sağlar.

Yapılandırma: Trace & Span

Spring Cloud Sleuth 2.0.0 ve sonrası, temelinde Brave kütüphanesini kullanır. Brave, bir web isteğine otomatik bir traceId ekler ve bu kimliği isteğin tüm adımlarında taşır.

  • Trace: Tek bir iş/akış (örn. bir HTTP isteği).
  • Span: Trace içindeki alt adımlar (örn. DB sorgusu, başka servise HTTP çağrısı).

Örnek Log Formatı

2024-12-21 10:32:15.123 INFO [latestpost,3fa85f64,1c57d88e,true] 12345 --- [nio-8080-exec-1] c.example.LatestPostController : İşlem başarılı
  • latestpost: Uygulama adı
  • 3fa85f64: Trace ID
  • 1c57d88e: Span ID
  • true: Örnekleme durumu

Öne Çıkan Özellikler

Log örnekleme oranı

spring.sleuth.sampler.probability=0.5

Özel span oluşturma

@Autowired Tracer tracer;

public void customSpanExample() {
    Span newSpan = tracer.nextSpan().name("customSpan").start();
    try (Tracer.SpanInScope ws = tracer.withSpan(newSpan)) {
        // Özel işlem kodları
    } finally {
        newSpan.end();
    }
}

Spring Sleuth & Zipkin Entegrasyonu

Sleuth, Zipkin/Jaeger gibi dağıtık izleme araçlarıyla birleştiğinde loglar görsel olarak analiz edilebilir.

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-sleuth-zipkin</artifactId>
</dependency>

Sonuç

Spring Sleuth, mikroservislerde log yönetimini basitleştirir, benzersiz tanımlayıcılarla izlenebilirliği artırır ve sorunları daha hızlı teşhis etmenizi sağlar. Zipkin ile birlikte kullanıldığında uçtan uca görünürlük elde edersiniz.

Beğendiysen bir çay ısmarlayabilirsin ☕

Bana çay ısmarla

Devops ile ilgili yorumlar

Yorum Paylaş

EMail Zorunlu alanlar * *