Jaeger nedir?

Jaeger, mikro hizmetler adı verilen birbirine bağlı yazılım bileşenlerinde sorunları izlemek ve gidermek için kullanabileceğiniz bir yazılımdır. Birçok mikro hizmet, tek bir yazılım işlevini tamamlamak için birbiriyle iletişim kurar. Geliştiriciler, bir terslik olduğunda sorunu yalıtmak için bu mikro hizmet etkileşimlerindeki olaylar zincirini görselleştirmek amacıyla Jaeger'i kullanır. Bir dizi mikro hizmet etkileşimi üzerinden bir isteğin yolunu takip ettiği veya izlediği için Jaeger'e Jaeger Tracing adı da verilir.   

Jaeger neden önemli?

Geçmişte yazılım tasarımı, birçok fonksiyonun tek bir kod tabanında bir araya getirildiği bir tek parça uygulama halinde gerçekleştiriliyordu. Örneğin, bir yemek siparişi uygulaması tasarlamak için yemek menüsü, restoranlar ve ödeme sistemlerinin tümü tek bir yazılım biriminde bir araya getiriliyordu. Bu tür bir yazılım tasarımı, çözümü daha karmaşık ve bakımı zor bir hale getiriyordu. Geliştiriciler bir alanda kod değişiklikleri yaptığında bu tüm sistemi etkiliyor, dolayısıyla değişiklik yönetimi uzun ve zahmetli bir süreç haline geliyordu. Bu sorunu çözmek için mimari tasarım daha modüler hale geldi.

Mikro hizmetler

Modern uygulamalar, mikro hizmetler olarak adlandırılan daha küçük ve bağımsız bir birimler topluluğu şeklinde işlev gösterir. Örneğin, modern bir yemek siparişi uygulaması şu parçalardan oluşabilir:

  • Müşterinin nerede olduğunu saptamak için bir coğrafi konum hizmeti 
  • Siparişleri toplayıp bunları restoranlara gönderen bir hizmet  
  • Birden çok ödeme seçeneği içeren bir ödeme ağ geçidi

 

Her mikro hizmet bağımsız bir uygulama olarak çalışır ve kendi veritabanına ve mantığına erişimi bulunur. Mikro hizmetler, bir web uygulaması gibi istek ve yanıtları kullanarak birbiriyle iletişim kurar. Mikro hizmetlerin temel sistemi dağıtılmış sistem olarak da adlandırılır.

Mikro hizmetler mimarisinde sorun giderme

Mikro hizmetler karmaşık şekilde davrandığından, dağıtılmış sistemlerdeki sorunları araştırmak zorlu bir iştir. Örneğin, modüler bir uygulamada bir yemek siparişi verilmesi, farklı mikro hizmetlere birden çok istek gönderilmesini tetikleyebilir. Bu istekler eş zamanlı ve bağımsız olarak oluşabilir ve sıralı olması gerekmez. Yemek siparişinde bir sorun meydana gelirse geliştiricilerin buna hangi mikro hizmetin neden olduğunu belirlemesi gerekir. Geleneksel sorun izleme yaklaşımları isteğin yalnızca kısmi bir resmini sunduğundan sorun giderme hizmetlerini zahmetli bir hale getirir.

 

Jaeger, BT ekiplerinin etkinlik zincirinin tamamı üzerinde görünürlük ve netlik kazanmak için kullandığı bir yazılım aracıdır. Ekipler, sorunları daha hızlı şekilde çözümleyerek müşteri deneyimini iyileştirebilir.

Jaeger ne için kullanılır?

Geliştiriciler, dağıtılmış sistem performansını birçok farklı yolla iyileştirmek için Jaeger'i kullanır. Aşağıda birkaç örnek verilmiştir.

Dağıtılmış işlem izleme

Jaeger, mikro hizmetler arasındaki veri hareketlerini izleyen özelliklere sahiptir. Geliştiriciler, sorunları kullanıcı deneyimini kesintiye uğratmadan önce saptayıp çözümlemek için proaktif bir yaklaşım benimseyebilir.

Gecikme süresi optimizasyonu

Jaeger analizi, mikro hizmetlerde bir uygulamayı yavaşlatan darboğazları bulabilir. Geliştiriciler Jaeger'i mikro hizmetlerin davranışını incelemek ve bunları hızlandırmaya yönelik yollar bulmak için kullanır.

Temel neden analizi

Bir mikro hizmet mimarisinde, tek bir sorun başka sorunlara yol açabilir. Geliştiriciler, bir uygulamadaki birbiriyle alakalı sorunlar serisinin başlangıç noktasını bulmak için Jaeger'i kullanabilir.

Hizmet bağımlılık analizi

Hizmet bağımlılığı, bir uygulamanın çalışmak için birden çok bileşene bağlı olduğu anlamına gelir. Örneğin, bir navigasyon uygulaması mobil uygulama üzerindeki konum hizmetlerine bağlıdır. Geliştiriciler, farklı mikro hizmetler arasındaki karmaşık ilişkileri anlamak için Jaeger'i kullanır. 

Dağıtılmış bağlam yayma

Dağıtılmış bağlam yayma, bir uygulamanın verilerle birlikte açıklayıcı bilgiler gönderme yöntemidir. Bu, geliştiricilerin mikro hizmet performansını bir bütün olarak değerlendirmesine yardımcı olur. Örneğin Jaeger, sipariş isteklerini müşterinin adıyla etiketler. Böylece geliştiriciler istek yolunu belirli müşteriyle ilişkilendirebilir. 

Jaeger nasıl çalışır?

Jaeger, dağıtılmış izlemenin ilkelerine dayalı şekilde çalışır ve OpenTracing çerçevesini kullanır.

Dağıtılmış izleme

Dağıtılmış izleme, mikro hizmetler arasındaki etkinlik sıralarını izleyen bir yazılım tekniğidir. Tüm bağlantıları takip ederek, bir uygulama içindeki istek yollarını görselleştirmek üzere çizelge ve grafikler sağlar. Dağıtılmış bir izleme aracı olarak Jaeger, her isteğe benzersiz bir tanımlayıcı atamak ve belirli bir hizmet isteği işleme aldığında bilgi toplamak suretiyle istek hareketlerini izler. 

OpenTracing

OpenTracing, doğru ve kullanıma hazır dağıtılmış izlemeyi modern yazılım sistemleri genelinde mümkün kılmak için gerekli standartları sunan açık kaynak veya ücretsiz şekilde kullanılabilir bir çerçevedir. Örneğin, mikro hizmetler arasında gönderilip alınan izlenen bilgilerin yapısını tanımlamaya yönelik bir ortak standart sunar. Jaeger, mikro hizmet verilerini toplamak, depolamak, yönetmek, analiz etmek ve görselleştirmek üzere eksiksiz bir çözüm sağlamak için OpenTracing'i kullanır.  

OpenTracing veri modeli

OpenTracing veri modeli, farklı bileşenlerden veri bağlamak için gereken temel tanımlamayı sunar. Kullandığı iki ana terim ölçüm aralığı ve izlemedir.

Ölçüm aralığı

Ölçüm aralığı, dağıtılmış bir izleme sisteminde gerçekleştirilen tek bir mantıksal çalışma birimidir. Her ölçüm aralığı şu bileşenlere sahiptir:

  • Bir operasyon adı
  • Bir başlangıç zamanı ve durma zamanı
  • Geliştiricilerin ölçüm aralığını analiz etmesine yardımcı olan etiket veya değerler
  • Mikro hizmetin oluşturduğu tüm iletileri saklayan günlükler
  • Ölçüm aralığı bağlamı veya ölçüm aralığına ilişkin ek açıklamalar

İzleme

İzleme, aynı sürece ait bir veya daha fazla sayıdaki ölçüm aralığının oluşturduğu topluluktur. Belirli bir sürede meydana gelen etkinlikleri temsil eder. Aynı izlemeye ait olan ölçüm aralıkları aynı İzleme Kimliği'ni paylaşır. Örneğin, bir müşteri yemek siparişi verdiğinde oluşturulan bir izleme aşağıdaki ölçüm aralıklarıyla sonuçlanır: 

  • Müşteri bir sipariş gönderir
  • Ödeme işleme alınır
  • Sipariş listesi restorana gönderilir
  • Yemek sevk edilir
  • Yemek teslim edilir

Jaeger'in bileşenleri nelerdir?

Jaeger dağıtılmış izleme platformu aşağıdaki bileşenlerden oluşur. 

Jaeger istemcisi

Jaeger istemcisi; Go, JavaScript, Java, Python, Ruby ve PHP gibi programlama dillerinde dile özgü OpenTracing API uygulamaları içerir.

Geliştiriciler bu API'leri, dağıtılmış izleme için kaynak kod yazmadan Jaeger ölçüm aralıkları oluşturmak için kullanırlar. 

Jaeger aracısı

Jaeger aracısı, diğer süreçlerin gerekli kıldığı işlevleri gerçekleştirmek için arka planda sürekli olarak çalışan bir ağ arka plan programı veya yordamıdır. İstemcinin yolladığı ölçüm aralıklarını, uygulamaların bir ağ üzerinden ileti gönderip almasına olanak tanıyan bir tür iletişim yöntemi olan kullanıcı veri bilimi protokolü (UDP) aracılığıyla dinler.  

Aracı, Amazon Esnek Kubernetes Hizmeti gibi container ortamlarında istemciye bağlanır. Aracı grupları, ölçüm aralıklarını toplu olarak oluşturarak bunları toplayıcıya gönderir. Bu, uygulamanın Jaeger arka ucuna aktif şekilde izleme bilgileri göndermeden çalışmasına olanak tanır. 

Jaeger toplayıcısı

Jaeger toplayıcısı, Jaeger toplayıcısından izlemeler alan bir yazılım bileşenidir. Veritabanındaki izlemeleri kontrol eder, işler ve depolar.

Depolama

Jaeger izleme sistemi, ölçüm aralıklarını alır ve bunları kalıcı bir depolama arka ucunda veya veritabanında saklar. Kalıcı depolama, saklanan verilerin bilgisayar kapatıldığında bile sağlam şekilde muhafaza edilmesi anlamına gelir. Örneğin geliştiriciler, ölçüm aralıklarını depolamak ve kabul etmek için kalıcı depolama olarak AWS OpenSearch Hizmeti'ni kullanırlar.

Alıcı

Jaeger'i dağıtma yollarından biri de izleme verilerini, uygulamaların bilgi akışlarını depolaması ve almasına yönelik dağıtılmış bir sistem olan Kafka'ya göndermektir. Alıcı, izleme verilerini Kafka'dan okuyup bunları ayrı şekilde depolayan bir modüldür. 

Sorgu

Sorgu hizmeti veritabanından izleme verilerini alır. Geliştiriciler belirli bir zaman, etiket, süre ve operasyon içeren izlemeleri bulmak için sorguları kullanır. 

Jaeger Konsolu

Jaeger Konsolu, izlemeleri görüntülemek ve analiz etmek için kullanabileceğiniz, kullanıcı arabirimi içeren bir yazılım programıdır. İzleme verilerini grafikler ve çizelgeler halinde görüntüler. 

Geliştiriciler Jaeger'i nasıl kullanır?

Bir uygulama oluştururken geliştiriciler, ölçüm aralıkları oluşturmak için Jaeger istemci kitaplıklarını kullanırlar. İzleme verileri üretmek için programa kod ekleyerek, aygıtlı uygulama olarak bilinen öğeyi oluştururlar. Aygıtlı uygulama aşağıdakileri otomatik olarak oluşturur:

 

  1. Aralık kimliği, izleme kimliği, etiketler, günlükler ve aralık bağlamı içeren ölçüm aralıkları 
  2. Her istek için izlemeler

 

Geliştiriciler bu dağıtılmış izleme verilerini aramak, filtrelemek, görselleştirmek ve analiz etmek için Jaeger Konsolu'nu kullanır. Mikro hizmetlerden alınan yordam süresi, hatalar ve günlükler gibi ayrıntılı bilgileri görüntülemek için Jaeger Kullanıcı Arabirimi yazılımını kullanabilirler. 

Jaeger örnekleme stratejileri nedir?

Aygıtlı uygulama, uygulama her çalıştığında izleme verilerini otomatik olarak aktarır. Bu izleme verilerini uygulama performansını ölçmek için kullanabilirsiniz. Bu, telemetri verileri olarak da adlandırılır. Jaeger arka ucunun fazla telemetri verisiyle aşırı yüklenmesini önlemek için, Jaeger uygulamanızda örnekleme stratejileri yapılandırarak Jaeger arka ucunu filtreleyebilir veya örnekleyebilirsiniz. Bazı örnekleme stratejileri şunlardır:

  • Sürekli örneklemede, tüm izleme türleri için aynı sayıda örnek toplanır.
  • OIasılıkçı örneklemede örnekler, belirli bir yüzdeye ulaşana kadar rastgele toplanır.
  • Hız sınırlayıcı örneklemede, her saniye belirli bir sayıda örnek alınır.
  • Uyarlanabilir örneklemede, belirli bir sürede belirli sayıda izleme elde etmek için örnek hızı otomatik olarak ayarlanır.

AWS App Mesh nedir?

AWS App Mesh, mikro hizmetlere dayalı dağıtılmış sistemleri daha kolay yönetebilmeniz için ağır işleri yapan bir hizmet ağı veya yazılım altyapısıdır. AWS App Mesh, şunları yapar: 

  • Uygulamalarınız için tutarlı uçtan uca görünürlük ve yüksek düzeyde erişilebilirlik sağlar.
  • Her hizmeti telemetri verilerini dışarı aktaracak şekilde yapılandırır ve uygulamanız genelinde tutarlı iletişim denetim mantığı uygular. 
  • Geliştiricilerin güvenli bulut uygulamaları oluşturmasına yardımcı olmak için ağ trafiği denetimi sunar. 

AWS App Mesh'i dağıtılmış izleme ihtiyaçlarınız için bağımsız bir çözüm olarak kullanabilirsiniz. Ayrıca, Jaeger gibi mikro hizmet iletişimleri izlemek, günlüğe kaydetmek veya takip etmek için kullanabileceğiniz AWS dışı çeşitli üçüncü taraf araçlarını da destekler.

Hemen bir AWS hesabı oluşturarak App Mesh'te Jaeger'i kullanmaya başlayın.

AWS'de Jaeger için sonraki adımlar

Ürünle ilgili diğer kaynaklara göz atın
AWS App Mesh hakkında daha fazla bilgi edinin 
Ücretsiz bir hesap için kaydolun

AWS Ücretsiz Kullanım için anında erişim elde edin. 

Kaydolun 
Konsolda oluşturmaya başlayın

AWS Management Console'da AWS ile oluşturmaya başlayın.

Oturum açın