1. Ana Sayfa
  2. Open Source
  3. Jaeger Nedir?
k_zd_m_

Jaeger Nedir?

images (1)
VidyoConnect

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.

 

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ı https://forum.mshowto.org linkini kullanarak ulaşacağınız forum sayfamızda sorabilirsiniz.

Referanslar        

www.mshowto.org

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

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

VidyoConnect
Yorum Yap

Yazar Hakkında

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.

Yorum Yap