Jaeger Nedir?
  1. Anasayfa
  2. Open Source

Jaeger Nedir?

0

Yazılım mimarileri gün geçtikçe değişmeye ve gelişmeye devam etmektedir. Bu değişim ve gelişmeler ile mikroservis mimarisi de Monolith mimarisinin yetersiz kaldığı noktalarda bir çözüm olarak ortaya çıkmıştır. Bu yazıda mikroservis mimarisindeki yazılımların Jaeger aracığıyla nasıl Trace edilebileceğinden bahsedeceğim. Öncelikle Trace, kelime anlamı olarak iz sürmek, izini sürmek anlamına gelmekte. Bu yazıda da dağıtık sistem üzerindeki uygulamalara yapılan isteklerin, izini sürme anlamında kullanacağız.

Resim-1

Monolith bir uygulamaya gelen isteğin baştan sona takibi oldukça kolaydır. Monolith bir mimariye sahip uygulamada, uygulamaya gelen bir isteği debug edip hangi sınıfların, hangi metotların kullanıldığını rahatlıkla görebilirsiniz. Dağıtık sistemlerin bir türü olarak söylebileceğimiz mikroservis mimarisinde ise gelen isteği izlemek oldukça zordur. Uygulama, birden fazla servis ile ilişkilidir. Bu nedenle uygulamanın ilişkili olduğu bu servisleri ve üzerinde çalıştığı farklı sunucuları da izlemek gerekmektedir. Transaction sırasında oluşan hatanın kaynağını bulmak için tek tek bu servislerin izini sürmek hem zor hem de zaman kaybı olacaktır. Bu gibi senaryolarda dağıtık sistemlerdeki uygulamalarımızın takibi icin açık kaynak bir çözüm olan Jaeger‘dan bahsedelim.

Resim-2

Jaeger, açık kaynak kodlu Go dilinde yazılmış, Uber Technologies tarafından yayınlanmış bir dağıtık sistem izleme uygulamasıdır. Dağıtık yapıdaki mikroservisleri izlemek ve hata anında sorunun kaynağının bulunması için kullanılır. Jaeger entegrasyonu yapabilmek için kod tarafında gerekli trace kodlarının  Jaeger Client Kütüphaneleri kullanılarak yapılması gerekmektedir. Jaeger’in localimizde kurulumu için de Docker Image’ını kullanmak yeterli olacaktır.

Jaeger terminolojisinden bahsetmek gerekirse:

Jaeger’da yapılan her bir istek Trace olarak gösterilir. Trace bir işlemin akışını baştan sona gösterir ve birden fazla Span‘dan oluşabilir. Her Span’da içerisinde işlemin adını, başlangıç zamanını ve süresini tutar. Jaeger bu Span’ları ve Trace’leri toplamak, depolamak ve görselleştirmek için birden fazla bileşenden oluşur.

Jaeger Agent, container’lara kurulan ve UDP(User Datagram Protocol) üzerinden gönderilen Span’ların dinlemesi için kullanılan bir servistir.

Jaeger Collector, Agent’tan Span’ları alarak bunları işlemek için bir Queue’da tutar. Desteklediği veritabanları da Elasticsearch ve Cassandra‘dır.

Jaeger Query’de veritabanından Trace’leri getiren bir servistir.

Jaeger UI, aracığıyla da Trace’lerin izlenmesi yapılır.

Localimizde Jaeger’ın Docker Image’ını kullanıp aşağıdaki adımlar ile kurulumunu hızlıca gerçekleştirebiliriz:

İlk olarak all-in one imajını Docker Hub‘dan bu komut ile alıyouz. All-in-one olan Image’ı kullanmamız daha hızlı ve kolay olacaktır. Bu Image Jaeger UI, Collector, Agent ve Query’in bileşenlerinden oluşmaktadır.

$ docker pull jaegertracing/all-in-one

Resim-3

Artık jaegertracing imajı localimizde mevcut. Şimdi bu Image’ı kullanarak docker run komutu ile Container’ı ayağa kaldıralım.

$ docker run -d --name jaeger \

  -e COLLECTOR_ZIPKIN_HTTP_PORT=9411 \

  -p 5775:5775/udp \

  -p 6831:6831/udp \

  -p 6832:6832/udp \

  -p 5778:5778 \

  -p 16686:16686 \

  -p 14268:14268 \

  -p 14250:14250 \

  -p 9411:9411 \

  jaegertracing/all-in-one:latest

 

Resim-4

Artık Jaeger Dashboard’una http://localhost:16686 url’i üzerinden erişim sağlayabiliriz.

Resim-5

Gerekli entegrasyonu uygulamanızda yaptığınızda UI üzerinden yapılan isteklerinizi takip edebilir olacaksınız.

Bu konuyla ilgili sorularınızı  alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar        

www.mshowto.org

https://www.jaegertracing.io/docs/1.16/

TAGs: Open Source, Opentracing, Jaeger, Microservice, Tracing, Monolith, Span, Jaeger Nedir, DevOps

Bu İçeriğe Tepkin Ne Oldu?
  • 33
    harika_
    Harika!!
  • 1
    be_enmedim
    Beğenmedim
  • 0
    _ok_iyi
    Çok iyi
  • 0
    sevdim_
    Sevdim!
  • 0
    bilemedim_
    Bilemedim!
  • 0
    olmad_
    Olmadı!
  • 0
    k_zd_m_
    Kızdım!

Gökçe Demir. 1996 İstanbul doğumluyum. Gebze Teknik Üniversitesi Bilgisayar Mühendisliği bölümü mezunuyum. Stajlarımı Logo Siber Güvenlik ve Ağ Teknolojileri A.Ş. ve Intertech'in Network Güvenlik Operasyonları bölümünde tamamladım. Üniversitenin 3. sınıfından itibaren Intertech'te Yazılım Süreçleri bölümünde Junior DevOps Mühendisi olarak 2 yıl çalıştım. 2019 yılında mezun oldum. Aynı bölümde Devops Mühendisi olarak tam zamanlı çalışmaya başladım ve bu pozisyonda çalışmaya devam ediyorum. Aynı zamanda Türkiye'nin Mühendis Kızları projesinde gönüllü olarak üniversite öğrencilerine mentorlük yapmaktayım.

Yazarın Profili

Bültenimize Katılın

Tıklayın, üyemiz olun ve yeni güncellemelerden haberdar olan ilk kişi siz olun.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir