IBM Instana ile yeni nesil uygulama performansını gözlemleme.

Engin Özkurt
5 min readJul 22, 2023

--

Bu makalede sizlere daha önce “Kurumsal Gözlemlenebilirlik — Instana Enterprise Observability” başlıklı yazımda bahsetmiş olduğum Instana ürününün yeteneklerinden kısaca bahsedeceğim.

Instana, bir gözlemlenebilirlik ve uygulama performansı izleme platformudur ve kurumsal düzeyde uygulama izleme ve yönetimini kolaylaştırmak için geliştirilmiştir.

Instana’nın micro servis olarak geliştirilmiş bir uygulamada oluşan Event’leri nasıl hızla identify, debug ve resolve ettiğine bakalım.

Uygulamamamız adı Stan’s Robot Shop ve JAVA, Python, MySQL gibi çeşitli teknolojileri kullanıyor.

Hadi başlayalım!

1- RobotShop uygulamasının bağımlılıklarına göz atalım..

RobotShop uygulamasındaki tüm servis bağımlılıklarını görüntülemek için Instana’yı kullanacağız. Instana, servisler arasındaki ilişkileri otomatik olarak keşfeder ve bunları Dynamic Graph özelliği dinamik bir grafikte ilişkilendirir.

Daha sonra açılan ekranda Dependenciessekmesine tıklayacağız.

“Dependencies” kısmında ise uygulamaya ait servislerimizin dinamik haritasını göreceğiz.

Aynı zamanda gelen isteklerin uygulama üzerinde gerçek zamanlı olarak nasıl ilerlediğini görebiliriz. Görünüm için pattern değiştirerek izleme açınızı oluşturabilirsiniz. Instana uygulamanız üzerinden geçen her isteği (1sn granularity) izleyebildiği için bunu yapabiliyor.

Dikkatli incelediğimizde iki servisin renkli vurgulandığını görebilirsiniz. Bu servislerde birer uyarının olduğu mesajı veriyor. Eğer istersek burada “Incoming Calls” , “Max Erroneous Call Rate”, “Max Latency” filtrelerini kullanarak vurgu yönünü değiştirebilirsiniz.

Servisin hangi teknoloji ile geliştirildiği hakkında bilgi almak için imleci o servisin üzerine getirdiğimiz servisin detaylarını görebiliriz. Örneğin, Discount servisine baktığımızda HTTP, Java Virtual Machine (JVM) ve Spring Boot kullanıldığını ve database olarakta MongoDB kullanıldığını görüyoruz.

2- Events & Alerts otomatik olarak değerlendirme

Genelde bir problem olduğunda kontrol paneline girip bakmayacağımız için, bir Event meydana geldiğinde SRE/IT operatörünün bakış açısına değerlendirelim biraz.

Instana, ilgili olayları ve sorunları otomatik olarak incident halinde gruplandırır.

“Dynamic Graph” özelliğini kullanarak hangi olayların ve/veya sorunların ilişkili olduğunu belirler.

Instana ayrıca, hangilerinin son kullanıcıları etkilediğini veya son kullanıcıları etkileme konusunda yakın bir risk oluşturduğunu belirlemek için olay ve sorun gruplarını sürekli olarak değerlendirir.

Bunlar Instana’nın alarm vereceği şeylerdir, bu nedenle bir SRE/IT operatörü olarak çok önemli olmayan şeyler için sürekli kesintiye uğramazsınız.

Sidebar menüde “Events” bölümüne girdiğimize “Incidents”, “Issues”ve “Changes” kayıtlarını görebiliriz.

ŞimdiEventsbölümünü detaylı inceleyelim..

Instana, erroneous calls sayısında ani artışın olduğunu ve önemli bir şey olduğunu fark ediyor, bu nedenle bu Eventi almak için herhangi bir konfigürasyon veya threshold belirlememiz gerekmedi.

Daha fazla ayrıntı için ‘discount’ hizmetindeki Eventi inceleyelim.

“Incident Timeline”, “Triggering Event”, and “Related Events” için detayları aşağıdaki gibi görebiliriz.

Şimdi bu eventi daha detaylı inceleyelim..

Eventi incelediğimizde , soruna MySQL veritabanının anormal bir şekilde terminate olduğunu görebiliriz. Veritabanına erişimi olmayan her sorgu hakkında daha fazla detaya ulaşabiliriz.

“Erroneous calls” ani artışla ilgili Eventi seçmeniz ve Analyze Calls seçeceğini ile tüm sorguları analiz edebilirsiniz.

İncelemeye devam edelim :)

Tüm sorguları analiz etmek zaman alır, Instana bizim için tüm sorguları End Point seviyesinde gruplandırıyor.

Şu anda sadece tek bir End Point var, daha fazla End Point olsaydı listeli bir şekilde görebilecektik. EndPoint’ler Instana tarafından otomatik olarak discovery edilir ve map edilir.

(CONNECT) endpointi ile birlikte MySQL’e yapılan her hatalı çağrının ayrıntılarına girebiliriz.

3- End-to-end traces

Şimdi bir sorgunun uçtan uca izleme detaylarına göz atalım.

Listedeki ilk “Connect”sorgusuna ait detayları gösteren dashboard kısmına bakalım..

İsteğin nerede başladığını ve yol boyunca yapılan her aramayı görebiliriz. Timeline görünümü, her sorguda harcanan sürenin yanı sıra Erreneous Calls, Error Logs, Warning Logs ve Latency gibi temel performans metriklerini sağlar.

İhtiyacınız olan tüm herşey tek bir dashboard üzerinde sunulmaktadır. Böylece birden fazla araç kullanmadan veya çok sayıda dashboard kullanarrak ileri geri gezinmeden, sorunu tam olarak belirlemek için daha fazla ayrıntıya inebiliriz.

Şimdi sağ taraftaki Details & Stack Trace alanını inceleyelim.

Details bölümünde sorgunun tipi,kategorisi,statement ve connection bilgisi yer almaktadır ve ayrıca her span için daha fazla bilgiye ulaşmak için alt kısımdaki StackTrace kısmına spanlere tıklayabiliriz.

Her bir sorgunun bir servisten diğerine nasıl geçtiğini sadece tıklayarak görebiliriz..

Şimdi “Discount” servisindeki problemin kök nedenini öğrenelim..

Orta kısımda bulunan “Calls” bölümünde her sorgunun alt sorgularıyla birlikte detayını görebiliyoruz.

Discount’ hizmetini etkileyen olayın temel nedeninin MySQL veritabanıyla ilgili olduğunu doğruladık. Veritabanının anormal bir şekilde sonlandırılmasının bir bağlantı hatasına (HikariPool-1 -Connection is not avalabile request timed out after 2000ms) neden olduğunu görebiliriz.

MySQL tarafındaki connection hatasını çözdüğümüzde, tekrar MySQL summary kısmına gelip sorgu sayısının arttığını ve hatalı sorgu sayıların düştüğünü ayrıca latency süresinin de azaldığını görebiliriz.

Bu senaryoda “discount” servisinde yaşanılan hatalı sorgu sayıların artması sonucunda yavaşlık problemini veri tabanı ölçeğinde olduğunu tespit ettik, ve problemi çözdükten sonra hatanın giderildiğini gördük.

Instana’nın uygulama tarafındaki sorunları tanımlama ve bu sorunların Root Cause analizinin nasıl yaptığını anlamış olduk..

Ayrıca Instana, sürecin bir çok noktasını otomatik hale getirdiği için, Dev/SRE ekiplerinin farklı işlerin yapılmasına zaman kazandırdığını söyleyebiliriz.

Dağıtık mimaride geliştirdiğiniz uygulamalarınıza ait sorunlar ortaya çıktığında, tüm trace verilerini derinlemesine incelemek, Instana ile çok kolay ve hızlıdır.

Okuduğunuz için teşekkür ederim..

--

--

Engin Özkurt

𝘚𝘦𝘯𝘪𝘰𝘳 𝘚𝘪𝘵𝘦 𝘙𝘦𝘭𝘪𝘢𝘣𝘪𝘭𝘪𝘵𝘺 𝘌𝘯𝘨𝘪𝘯𝘦𝘦𝘳 / 𝘌𝘹-𝘔𝘪𝘤𝘳𝘰𝘴𝘰𝘧𝘵 /𝘖𝘱𝘪𝘯𝘪𝘰𝘯𝘴 𝘩𝘦𝘳𝘦 𝘢𝘳𝘦 𝘮𝘺 𝘰𝘸𝘯.