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ımaspanId. - 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 ID1c57d88e: Span IDtrue: Ö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.