Share via


Application Insights ile ayrıntılı web uygulaması ve hizmet tanılama

Bu makalede Application Insights'ın DevOps döngüsüne nasıl uyduğu açıklanmaktadır.

Application Insights'a neden ihtiyacım var?

Application Insights, çalışan web uygulamanızı izler. Hataları ve performans sorunlarını size bildirir ve müşterilerin uygulamanızı nasıl kullandığını analiz etmenize yardımcı olur. ASP.NET, Java EE ve Node.js gibi platformlarda çalışan uygulamalar için çalışır. Bulutta veya şirket içinde barındırıyor.

Web uygulaması sunmanın karmaşıklığını gösteren görüntü.

Çalışırken modern bir uygulamayı izlemek çok önemlidir. Hataları müşterilerinizden önce algılamak istiyorsunuz. Ayrıca, işleri yavaşlatan veya kullanıcılarınız için sorunlara neden olan performans sorunlarını keşfetmek ve düzeltmek istiyorsunuz. Sistem sizin memnuniyetinizi karşılarken, kullanıcıların bununla ne yaptığını da bilmek istersiniz. Örneğin, en son özelliği kullanıyorlar mı? Başarılı mı oluyorlar?

Modern web uygulamaları sürekli teslim döngüsünde geliştirilir:

  • Yeni bir özellik veya geliştirme yayınlar.
  • Kullanıcılar için ne kadar iyi çalıştığını gözlemleyin.
  • Bu bilgiye göre bir sonraki geliştirme artışını planlayın.

Bu döngünün önemli bir parçası gözlem aşamasıdır. Application Insights, bir web uygulamasını performans ve kullanım açısından izlemeye yönelik araçlar sağlar.

Bu sürecin en önemli yönü tanılama ve tanıdır. Uygulama başarısız olursa iş kaybolur. İzleme çerçevesinin temel rolü:

  • Hataları güvenilir bir şekilde algılayın.
  • Sizi hemen bilgilendirir.
  • Sorunu tanılamak için gereken bilgileri size sunun.

Application Insights bu görevleri gerçekleştirir.

Hatalar nereden geliyor?

Web sistemlerindeki hatalar genellikle yapılandırma sorunlarından veya birçok bileşeni arasındaki hatalı etkileşimlerden kaynaklanır. Canlı bir site olayını ele alırken ilk görev sorunun belini belirlemektir. Nedeni hangi bileşen veya ilişkidir?

Daha basit bir çağda, bir bilgisayar programı bir bilgisayarda çalıştı. Geliştiriciler bunu göndermeden önce kapsamlı bir şekilde test etti ve gönderimden sonra nadiren tekrar gördüler veya düşündüler. Kullanıcılar uzun yıllar boyunca artık hatalara katlanmak zorunda kaldı.

Süreç şu anda çok farklı. Uygulamanızın üzerinde çalıştırılacak çok sayıda farklı cihaz vardır ve her birinde aynı davranışı garanti etmek zor olabilir. Uygulamaları bulutta barındırmak, hataların hızlı bir şekilde düzeltilebileceği anlamına gelir. Ancak bu aynı zamanda sürekli rekabet ve sık aralıklarla yeni özellikler beklentisi olduğu anlamına da gelir.

Bu koşullarda hata sayısı üzerinde sıkı denetim sağlamanın tek yolu otomatik birim testidir. Her teslimatta her şeyi el ile yeniden test etmek mümkün değildir. Birim testi artık derleme işleminin yaygın bir parçasıdır. Xamarin Test Bulutu gibi araçlar, birden çok tarayıcı sürümünde otomatik kullanıcı arabirimi testi sağlayarak yardımcı olur. Bu test rejimleri, bir uygulama içinde bulunan hata oranının en düşük düzeyde tutulabileceğini ummamızı sağlar.

Tipik web uygulamalarının birçok canlı bileşeni vardır. İstemci (bir tarayıcıda veya cihaz uygulamasında) ve web sunucusuyla birlikte, büyük olasılıkla önemli bir arka uç işlemesi olacaktır. Belki de arka uç, bileşenlerden oluşan bir işlem hattı veya işbirliğine dayalı parçalardan oluşan gevşek bir koleksiyondur. Birçoğu sizin denetiminizde olmayacaktır. Bunlar, bağlı olduğunuz dış hizmetlerdir.

Bunlar gibi yapılandırmalarda, canlı sistemin kendisi dışında olası her hata modunu test etmek veya öngörmek zor ve tutarsız olabilir.

Sorular

Web sistemi geliştirirken sormanız gereken bazı sorular şunlardır:

  • Uygulamanız kilitleniyor mu?
  • Tam olarak ne oldu? bir isteği başarısız olduysa, oraya nasıl varıp varmadığını öğrenmek istiyorsunuz. Olayları izlemeniz gerekir.
  • Uygulamanız yeterince hızlı mı? Tipik isteklere yanıt vermek ne kadar sürer?
  • Sunucu yükü işleyebilir mi? İsteklerin hızı arttığında yanıt süresi sabit mi?
  • REST API'leri, veritabanları ve uygulamanızın çağırdiği diğer bileşenler gibi bağımlılıklarınız ne kadar hızlı yanıt veriyor? Özellikle, sistem yavaşsa, bileşeniniz mi yoksa başka birinden yavaş yanıt mı alıyorsunuz?
  • Uygulamanız yukarı mı yoksa aşağı mı? Dünyanın dört bir yanından görülebilir mi? Durdurulursa bunu bilmeniz gerekir.
  • Kök nedeni nedir? Hata bileşeninizde mi yoksa bağımlılıkta mı oluştu? Bu bir iletişim sorunu mu?
  • Bu durumdan etkilenen kaç kullanıcı var? Ele almak için birden fazla sorununuz varsa, en önemlisi hangisidir?

Application Insights nedir?

Application Insights'ın temel iş akışını gösteren görüntü.

  1. Application Insights, uygulamanızı izleyip uygulama çalışırken bu uygulama hakkında telemetri gönderir. Uygulama içinde Application Insights SDK'sını derleyebilir veya çalışma zamanında izleme uygulayabilirsiniz. Normal modüllere kendi telemetrinizi ekleyebildiğiniz için eski yöntem daha esnektir.
  2. Telemetri, depolandığı ve işlendiği Application Insights portalına gönderilir. Application Insights Azure'da barındırılsa da, yalnızca Azure uygulamalarını değil tüm web uygulamalarını izleyebilir.
  3. Telemetri size grafikler ve olay tabloları biçiminde sunulur.

İki ana telemetri türü vardır: toplu ve ham örnekler.

  • Örnek verileri, web uygulamanız tarafından alınan bir isteğin raporunu içerebilir. Application Insights portalındaki Arama aracını kullanarak isteğin ayrıntılarını bulabilir ve inceleyebilirsiniz. Örnek, uygulamanızın isteğe yanıt verme süresi, istenen URL ve istemcinin yaklaşık konumu gibi verileri içerebilir.
  • Toplanan veriler, isteklerin hızını yanıt süreleriyle karşılaştırabilmeniz için birim süresi başına olay sayısını içerir. Ayrıca istek yanıt süreleri gibi ölçümlerin ortalamalarını da içerir.

Ana veri kategorileri şunlardır:

  • URL, yanıt süresi ve başarılı veya başarısız verileri içeren uygulamanıza yönelik istekler (genellikle HTTP istekleri).
  • URI, yanıt süreleri ve başarı ile birlikte uygulamanız tarafından yapılan REST ve SQL çağrıları gibi bağımlılıklar.
  • Yığın izlemeleri de dahil olmak üzere özel durumlar.
  • Kullanıcıların tarayıcılarından gelen sayfa görünümü verileri.
  • Performans sayaçları ve kendi yazdığınız ölçümler gibi ölçümler.
  • İş olaylarını izlemek için kullanabileceğiniz özel olaylar.
  • Hata ayıklama için kullanılan günlük izlemeleri.

Örnek olay incelemesi: Real Madrid F.C.

Real Madrid Futbol Kulübü'nin web hizmeti, dünya çapında yaklaşık 450 milyon taraftara hizmet verir. Hayranlar web tarayıcıları ve kulübün mobil uygulamaları aracılığıyla erişim sağlar. Hayranlar bilet rezervasyonu yapabilir, ayrıca sonuçlar, oyuncular ve yaklaşan oyunlar hakkındaki bilgilere ve video kliplere erişebilir. Atılan gol sayısı gibi filtrelerle arama yapabilir. Ayrıca sosyal medya bağlantıları da vardır. Kullanıcı deneyimi son derece kişiselleştirilmiştir ve hayranların ilgisini çekmek için iki yönlü bir iletişim olarak tasarlanmıştır.

Çözüm , Azure'da bir hizmet ve uygulama sistemidir. Ölçeklenebilirlik önemli bir gereksinimdir. Trafik değişkendir ve eşleşmeler sırasında ve çevresinde yüksek hacimlere ulaşabilir.

Real Madrid için sistemin performansını izlemek çok önemlidir. Application Insights, güvenilir ve yüksek hizmet düzeyi sağlamak için sistem genelinde kapsamlı bir görünüm sağlar.

Kulüp ayrıca taraftarlarını nerede oldukları (yalnızca %3'ünün İspanya'da olduğu), oyunculara olan ilgileri, tarihi sonuçlar ve yaklaşan oyunlar ve maç sonuçlarına nasıl yanıt verdikleri gibi derinlemesine kavrar.

Bu telemetri verilerinin çoğu ek kod olmadan otomatik olarak toplanır ve bu da çözümü basitleştirir ve işlem karmaşıklığını azaltır. Application Insights, Real Madrid için her ay 3,8 milyar telemetri noktasıyla ilgilenir.

Real Madrid telemetri verilerini görüntülemek için Power BI modülünü kullanır.

Application Insights telemetrisinin Power BI görünümünü gösteren ekran görüntüsü.

Akıllı algılama

Proaktif tanılama yeni bir özelliktir. Sizin tarafınızdan özel bir yapılandırma yapılmadan Application Insights, uygulamanızdaki olağan dışı hata oranları artışlarını otomatik olarak algılar ve sizi uyarır. Zaman zaman oluşan hataların arka planını yoksayacak kadar akıllıdır ve ayrıca isteklerdeki artışla orantılı olarak artar.

Örneğin, bağlı olduğunuz hizmetlerden birinde hata olabilir. Ya da dağıtmış olduğunuz yeni derleme düzgün çalışmıyor olabilir. E-postanıza bakar bakmaz bunu öğrenirsiniz. Diğer uygulamaları tetikleyebilmeniz için web kancaları da vardır.

Bu özelliğin bir diğer yönü de telemetrinizin günlük ayrıntılı analizini gerçekleştirerek bulunması zor olan olağan dışı performans desenlerini arar. Örneğin, belirli bir coğrafi alanla veya belirli bir tarayıcı sürümüyle ilişkili yavaş performans bulabilir.

Her iki durumda da uyarı, bulunduğu belirtileri bildirir. Ayrıca ilgili özel durum raporları gibi sorunu tanılamaya yardımcı olmak için ihtiyacınız olan verileri de sağlar.

Proaktif tanılamadan gelen e-postayı gösteren ekran görüntüsü.

Müşteri Samtec şunları söyledi: "Yakın zamanda yapılan tam özellik geçişi sırasında, kaynak sınırlarına ulaşıp zaman aşımlarına neden olan, ölçeklendirilemeyen bir veritabanı bulduk. Proaktif algılama uyarıları, gerçek zamanlıya çok yakın bir şekilde tanıtıldığı gibi sorunu önceliklendirmeye devam ettiğimizde gerçek zamanlı olarak geldi. Bu uyarı, Azure platformu uyarılarıyla birleştiğinde sorunu neredeyse anında çözmemize yardımcı oldu. Toplam kapalı kalma süresi <10 dakikadır."

Canlı Ölçüm Akışı

En son derlemeyi dağıtmak kaygılı bir deneyim olabilir. Herhangi bir sorun varsa, gerekirse geri dönebilmek için bunları hemen bilmek istiyorsunuz. Canlı Ölçüm Akışı, yaklaşık bir saniyelik gecikme süresiyle size önemli ölçümler sunar.

Canlı ölçümleri gösteren ekran görüntüsü.

Hataların veya özel durumların bir örneğini hemen incelemenize olanak tanır.

Canlı hata olaylarını gösteren ekran görüntüsü.

Uygulama Eşlemesi

Uygulama Haritası, uygulama topolojinizi otomatik olarak bulur. Dağıtılmış ortamınızda performans sorunlarını ve sorunlu akışları kolayca belirlemenizi sağlamak için performans bilgilerini haritanın üzerine koyar. Uygulama Eşlemesi ile Azure hizmetlerindeki uygulama bağımlılıklarını keşfedebilirsiniz.

Kodla mı yoksa bağımlılıkla mı ilgili olduğunu anlayarak sorunu önceliklendirmeniz gerekir. Tek bir yerden ilgili tanılama deneyiminde detaya gidebilirsiniz. Örneğin, bir SQL katmanındaki performans düşüşü nedeniyle uygulamanız başarısız olabilir. Uygulama Haritası ile bunu hemen görebilir ve SQL Dizin Danışmanı veya Sorgu İçgörüleri deneyiminde detaya gidebilirsiniz.

Uygulama haritasını gösteren ekran görüntüsü.

Application Insights Log Analytics

Log Analytics ile güçlü bir SQL benzeri dilde rastgele sorgular yazabilirsiniz. Çeşitli perspektifler bağlandıkça uygulama yığınının tamamında tanılamak kolaylaşır. Ardından, hizmet performansını iş ölçümleri ve müşteri deneyimiyle ilişkilendirmek için doğru soruları sorabilirsiniz.

Portalda depolanan tüm telemetri örneğinizi ve ölçüm ham verilerinizi sorgulayabilirsiniz. Dil filtreleme, birleştirme, toplama ve diğer işlemleri içerir. Alanları hesaplayabilir ve istatistiksel analiz gerçekleştirebilirsiniz. Tablosal ve grafik görselleştirmeler kullanılabilir.

Analiz sorgusu ve sonuç grafiğini gösteren ekran görüntüsü.

Örneğin, şunları yapmak kolaydır:

  • Deneyimlerini anlamak için uygulamanızın istek performans verilerini müşteri katmanlarına göre segmentlere ayırın.
  • Canlı site araştırmaları sırasında belirli hata kodlarını veya özel olay adlarını arayın.
  • Özelliklerin nasıl alınıp benimsendiği hakkında bilgi edinmek için belirli müşterilerin uygulama kullanımına gidin.
  • Destek ve operasyon ekiplerinin anında müşteri desteği sunmasını sağlamak için belirli kullanıcılara yönelik oturumları ve yanıt sürelerini izleyin.
  • Özellik öncelik belirleme sorularını yanıtlamak için sık kullanılan uygulama özelliklerini belirleme.

Müşteri DNN'leri şunları söyledi: "Application Insights, gerektiğinde verileri birleştirebilme, sıralayabilme, sorgulayabilme ve filtreleyebilmemiz için denklemin eksik bölümünü sağladı. Ekibimizin güçlü bir sorgu diliyle veri bulmak için kendi ustalıklarını ve deneyimlerini kullanmasına izin vermek, içgörüler bulmamızı ve sahip olduğumuzu bile bilmediğimiz sorunları çözmemizi sağladı. ' Merak ediyorum...' ile başlayan sorulardan birçok ilginç yanıt geliyor."

Geliştirme araçları tümleştirmesi

Application Insights, geliştirme araçlarıyla tümleşir.

Application Insights'ı Yapılandırma

Visual Studio ve Eclipse, geliştirmekte olduğunuz proje için doğru SDK paketlerini yapılandırmaya yönelik araçlara sahiptir. Application Insights eklemek için bir menü komutu vardır.

Log4N, NLog veya System.Diagnostics.Trace gibi bir izleme günlüğü çerçevesi kullanıyorsanız, izlemeleri istekler, bağımlılık çağrıları ve özel durumlarla kolayca ilişkilendirmek için günlükleri diğer telemetriyle birlikte Application Insights'a gönderme seçeneğini elde edersiniz.

Visual Studio'da telemetri arama

Bir özelliği geliştirir ve hata ayıklarken telemetriyi doğrudan Visual Studio'da görüntüleyebilir ve arayabilirsiniz. Web portalındakiyle aynı arama olanaklarını kullanabilirsiniz.

Application Insights bir özel durum günlüğe kaydedildiğinde, veri noktasını Visual Studio'da görüntüleyebilir ve doğrudan ilgili koda atlayabilirsiniz.

Visual Studio aramalarını gösteren ekran görüntüsü.

Hata ayıklama sırasında telemetriyi geliştirme makinenizde tutabilirsiniz. Portala göndermeden Visual Studio'da görüntüleyebilirsiniz. Bu yerel seçenek, hata ayıklamanın üretim telemetrisiyle karıştırılmasını önler.

İş öğeleri

Bir uyarı oluşturulduğunda, Application Insights iş izleme sisteminizde otomatik olarak bir iş öğesi oluşturabilir.