Azure monitoring hizmetinin bir özelliği olan Azure Application Insights, geliştiriciler ve DevOps uzmanları için genişletilebilir bir Uygulama Performansı Yönetimi hizmetidir. Uygulama Performans Yönetimi (APM) Servisi iş açısından kritik uygulamaların performansını izlemek için yazılım araçlarını ve telemetri verilerini kullanma sürecidir.
Telemetri, bir sistemin veya uygulamanın performansını, sağlığını ve kullanımını izlemek için uzaktan veri toplama sürecidir. Azure uygulamalarında telemetri, uygulamanın nasıl çalıştığını, ne tür hatalarla karşılaştığını, kullanıcıların nasıl etkileşimde bulunduğunu ve daha fazlasını anlamanıza yardımcı olur. Bu veriler, uygulama sorunlarını gidermek, performansı optimize etmek ve kullanıcı deneyimini iyileştirmek için kullanılabilir.
Azure’da telemetri, genellikle Application Insights gibi bir hizmet aracılığıyla toplanır. Application Insights, uygulamanızdan çeşitli telemetri verilerini otomatik olarak toplayabilir:
- İstek Oranları: Uygulamanızın aldığı istek sayısı ve bu isteklerin ne kadar sürede işlendiği.
- Bağımlılık Oranları: Uygulamanızın diğer hizmetlere (veritabanları, API’ler vb.) yaptığı çağrıların sayısı ve bu çağrıların performansı.
- İstisnalar: Uygulamanızda oluşan hataların ayrıntıları, nerede oluştukları ve neye sebep oldukları.
- Sayfa Görüntülemeleri: Kullanıcıların hangi sayfaları görüntülediği ve bu sayfalarda ne kadar zaman geçirdiği.
- Performans Ölçümleri: Uygulamanızın bellek kullanımı, CPU kullanımı gibi performans verileri.
- Özel Olaylar: Uygulamanızda özel olarak tanımladığınız olaylar (örneğin, bir kullanıcının bir ürünü sepete eklemesi).
- Kullanıcı İzleme: Kullanıcıların uygulamanızla nasıl etkileşimde bulunduğu (örneğin, tıklama davranışları).
Bu telemetri verileri, Azure portalında görselleştirilebilir ve analiz edilebilir. Ayrıca, uyarılar oluşturarak belirli olaylar gerçekleştiğinde (örneğin, bir hata oranı belirli bir eşiği aştığında) bildirim alabilirsiniz.Yani uygulamaların performansını izleyerek, sorunları hızla tespit etmenize ve çözmenize yardımcı olur.
Azure Monitor ve Application Insights Entegrasyonu
Azure Monitor, Azure kaynaklarınızın performansını ve kullanılabilirliğini kapsamlı bir şekilde izlemek için merkezi bir platform sunar. Bu araç, uygulamalarınızdan, altyapınızdan ve diğer kaynaklardan operasyonel verileri toplar, analiz eder ve işler.
Application Insights, Azure Monitor’un bir parçası olarak, uygulamalarınızın performansını ve kullanıcı deneyimini izlemek için özel olarak tasarlanmıştır.
Log Analytics ile Derinlemesine Analiz
Application Insights, topladığı telemetri verilerini (uygulama istekleri, bağımlılıklar, istisnalar, performans sayaçları vb.) Azure Monitor’un Log Analytics çalışma alanına gönderir. Log Analytics, güçlü bir sorgulama dili olan Kusto Query Language (KQL) kullanarak bu verileri analiz etmenize olanak tanır.
Kusto Query Language güçlü bir sorgulama dilidir ve logları özel SQL benzeri sorgular yazarak analiz etmenizi sağlar.
Log Analytics ile Neler Yapabilirsiniz?
- Özel Sorgulamalar: KQL kullanarak, belirli hata kodlarını, yavaş istekleri, belirli kullanıcıların oturumlarını veya diğer ilgi çekici desenleri filtreleyebilirsiniz.
- İlişkilendirme: Farklı Azure kaynaklarından gelen logları birleştirerek, bir sorunun kök nedenini belirlemek için uçtan uca görünürlük elde edebilirsiniz.
- Görselleştirme: Sorgu sonuçlarını grafikler, tablolar ve diğer görsel öğelerle görselleştirerek verilerinizi daha kolay anlayabilirsiniz.
- Uyarılar: Belirli koşullar (örneğin, yüksek hata oranı veya belirli bir olay) oluştuğunda uyarılar oluşturarak proaktif bir şekilde sorunlara müdahale edebilirsiniz.
Azure Monitor, Application Insights ve Log Analytics entegrasyonu, uygulamalarınızın performansını ve sağlığını izlemek, sorunları gidermek ve kullanıcı deneyimini optimize etmek için güçlü bir araç seti sunar.
Çoklu Servisler ve Bileşenler Arası İzleme
Dağıtılmış uygulamalarınızın ve mikroservis mimarilerinizin izlenmesini sağlar. Bu, çoklu bileşenler ve servisler arası etkileşimlerin kaydedilmesi ve analiz edilmesi anlamına gelir.
Günümüzde uygulamalar sıklıkla birden fazla servis veya bileşen kullanılarak oluşturulur. Bu servisler ve bileşenler birbirleriyle sürekli etkileşim halindedir ve bu etkileşimlerin izlenmesi, sistem performansını ve sağlığını anlamak için kritik öneme sahiptir.
Temel Fonksiyonlar ve Çalışma Prensipleri
Azure Application Insights’ta uygulamanızın ön yüz (front-end) ve arka yüz (back-end) performansını izlemek için birkaç farklı araç ve bölüm bulunur. Bu araçlar, kullanıcı etkileşimlerinden API çağrı sürelerine kadar geniş bir veri yelpazesini görüntülemenizi sağlar:
1. Application Map(Uygulama haritası)
Application Insights’ın “Application Map” özelliği, uygulamanızın hem front-end hem de back-end bileşenlerinin bir görünümünü sunar. Bu harita, bileşenler arası bağlantıları, bağımlılıkları ve performans metriklerini gösterir. Hatalar, yavaş çalışan bağlantılar ve diğer sorunlar burada görsel olarak işaretlenebilir.
Uygulama Haritası sayfasında, herhangi bir bileşen veya bağımlılık üzerine tıkladığınızda, o bileşenle ilgili metrikler ve hata bilgileri gösterilir. Burada, anormallikler veya performans düşüklükleri otomatik olarak saptanmışsa, bu bilgiler de listelenecektir.
Azure Application Insights’ın Uygulama Haritası ve Akıllı Algılama özellikleri, uygulamanızın sağlığını ve performansını etkin bir şekilde izlemenizi sağlar. Bu araçlar, sistem genelindeki sorunları proaktif olarak belirlemenize ve daha hızlı müdahale etmenize olanak tanır, böylece uygulamanızın sürekli olarak optimal performansta çalışmasını sağlar.
Application Insight menüsünde bulundan Yapılandır kısmından aşağıdaki Akıllı Algılama kurallarını kendinize göre düzenleyebilirsiniz.
- Slow page load time
- Slow server response time
- Long dependency duration
- Degradation in server response time
- Degradation in dependency duration
- Degradation in trace severity ratio (preview)
- Abnormal rise in exception volume (preview)
- Potential memory leak detected (preview)
- Potential security issue detected (preview)
- Abnormal rise in daily data volume (preview)
2. Live Metrics Stream
“Live Metrics Stream” kısmı, uygulamanızın gerçek zamanlı performans metriklerini görüntüler. Bu bölümde, sunucu yanıt süreleri, istek hızları ve hata oranları gibi önemli bilgiler anlık olarak takip edilebilir. Canlı ortamda gerçekleşen sorunları anında tespit etmek, performans düşüklüklerini ve anormallikleri gerçek zamanlı olarak izlemek için kullanılır.
Bu alanda aşağıdaki parametreleri kontrol ediyoruz.
- Incoming Requests – Gelen tüm requestler görüntülenir.
– Request Rate
– Request Duration
– Request Failure Rate - Outgoing Requests – Gönderilen requestler görüntülenir.
– Dependency Call Rate
– Dependency Call Duration
– Dependency Call Failure Rate - Overall Health- Sistem sağlığı ile ilgili bilgiler görüntülenir.
– Committed Memory
– CPU Total (%)
– Exception Rate
3. End-to-End Transaction Details
Bu özellik, bir kullanıcı etkileşiminin başlangıcından sonuna kadar olan tüm işlem zincirini detaylı bir şekilde gösterir. Bir kullanıcının uygulamanızla etkileşime girdiği andan itibaren, bu etkileşimin tetiklediği tüm back-end işlemleri izleyebilirsiniz. Bu, API çağrıları, veritabanı sorguları ve diğer arka plan işlemlerini içerir.
4. Performance
“Performance” sekmesi, sunucu tarafı performans analizlerini sunar. Bu bölümde, sayfa yükleme süreleri, API yanıt süreleri ve diğer performans kritik metrikler detaylı grafiklerle birlikte sunulur. Bu veriler, uygulamanızın nerede yavaşladığını ve optimizasyon için hangi alanlara odaklanmanız gerektiğini belirlemenize yardımcı olur.
Bu kısımda işlemler, bağımlılıklar, ve roller analiz edilir. Her birinin yanıt süresi, ne kadar request gönderdiğini görebilirsiniz.
5. Metrics Explorer
“Metrics Explorer” aracılığıyla, uygulamanızla ilgili özelleştirilmiş metrikler oluşturabilir ve bunları çeşitli grafiklerle görselleştirebilirsiniz. Bu, hem front-end hem de back-end performansınızı kapsamlı bir şekilde analiz etmek ve karşılaştırmak için kullanılabilir. Yani uzun vadeli performans trendlerini analiz etmek, belirli metrikler üzerinde derinlemesine analiz yapmak ve performans raporları oluşturmak için kullanılır.
6. Logs (Analytics)
“Logs” bölümü, uygulamanızdan toplanan log verilerini Kusto Query Language (KQL) kullanarak sorgulamanıza olanak tanır. Bu loglar, kullanıcı etkileşimleri, sistem hataları, API çağrı bilgileri ve daha fazlasını içerebilir. Yani uygulama loglarını derinlemesine analiz etmek, hata ayıklamak, güvenlik ihlallerini araştırmak ve kullanıcı davranışlarını incelemek için kullanılır. Bu veriler üzerinden detaylı analizler yapabilirsiniz.
Bu araçlar, Azure Application Insights’ta uygulamanızın genel sağlığını ve performansını izlemenize, sorunları teşhis etmenize ve daha iyi performans optimizasyonları yapmanıza olanak tanır.
Entegrasyon ve Genişletilebilirlik
Azure Application Insights’ı farklı uygulamalar ile entegre edebilme gibi özellikleri sayesinde, uygulamalarınızın performansını izleme, hata ayıklama ve analiz süreçlerini güçlendirirken, farklı araçlar ve sistemlerle olan uyumluluğu sayesinde daha kapsamlı bir yönetim ve optimizasyon imkanı sunar.
Hangi Araçlarla Entegrasyon Yapabilir?
1. Visual Studio ile Entegrasyon
Geliştirme sürecini kolaylaştırmak ve hata ayıklama işlemlerini doğrudan geliştirme ortamında gerçekleştirmek amacıyla entegre edilebilir.
Visual Studio, Azure Application Insights ile doğrudan entegre edilebilir, böylece uygulama içindeki performans metrikleri ve hatalar, geliştirme süreci boyunca Visual Studio içerisinden görüntülenebilir. Bu entegrasyon, hataların ve performans sorunlarının kaynağını daha hızlı bulmanıza yardımcı olur.
Hata ayıklama sırasında, uygulamanızda gerçekleşen istisnalar doğrudan Visual Studio’da gösterilir ve istisna izleri, sorunun kaynağını belirlemenize yardımcı olacak şekilde detaylandırılır.
2. Power BI ile Entegrasyon:
Uygulama metriklerini ve logları analiz etmek ve görselleştirmek için güçlü bir araç kullanmak için entegre edilebilir.
Azure Application Insights’dan elde edilen veriler, Power BI’a aktarılabilir ve bu veriler üzerinde çeşitli analizler ve görselleştirmeler yapılabilir. Bu işlem, uygulamanızın performansını daha geniş bir perspektiften değerlendirmenize olanak tanır.
Performans metrikleri, kullanıcı etkileşimleri ve diğer önemli veriler, Power BI dashboardlarında çeşitli grafik ve tablolar halinde sunulabilir. Bu, özellikle yönetim seviyesindeki karar vericiler için değerli içgörüler sağlar.
Hata Ayıklama ve Log Dışa Aktarımı
1. Hata Ayıklama:
Uygulama içinde meydana gelen hataları derinlemesine incelemek ve çözüm yolları bulmak amacıyla entegre edilebilir.Application Insights, uygulama hatalarını kaydeder ve bu hatalarla ilgili detaylı bilgileri (hatanın türü, oluştuğu yer, etkilediği kullanıcılar vb.) sağlar.
Geliştiriciler bu bilgileri kullanarak hataların nedenlerini daha iyi anlayabilir ve çözüm geliştirebilirler. Hataların yanı sıra, performans bottlenecks’ini (darboğazlarını) ve uygulama içi sorunları da belirleyebilirsiniz.
2. Log Dışa Aktarımı:
Uygulama loglarını dış sistemlere aktararak, daha kapsamlı bir log yönetimi ve analizi sağlamak amacıyla entegre edilebilir. Loglar, Azure Storage, Event Hubs veya diğer harici sistemlere aktarılabilir. Bu sayede, loglar üzerinde daha uzun süreli saklama, arşivleme ve üçüncü taraf analiz araçları ile daha detaylı analizler yapılabilir.
Logları dışa aktarmak, özellikle büyük ölçekli uygulamalar için log yönetimini merkezileştirmek ve güvenlik denetimleri gibi gereksinimleri karşılamak adına önemlidir. Bu entegrasyon ve genişletilebilirlik özellikleri, Azure Application Insights’ı sadece bir izleme aracı olmanın ötesine taşıyarak, uygulama yönetimi ve geliştirme süreçlerinizde güçlü bir destekçi haline getirir.