1. Ana Sayfa
  2. Microsoft Azure
  3. Yazılım Geliştiriciler için Azure: Application Insights – Bölüm 1

Yazılım Geliştiriciler için Azure: Application Insights – Bölüm 1

Yazılım Geliştiriciler için Azure: Application Insights – Bölüm 1

Uygulamalarımızı geliştirme ortamından çıkarttıktan sonra, (test ya da prod’a) herhangi bir sorunla karşılaşıldığında “benim bilgisayarımda çalışıyor” demek dışında direkt olarak debug yapma şansımız olmadığı için yapabileceklerimiz maalesef kısıtlı. Özellikle de sürekli yaşanan bir sorun değilse; sorun oluştuğu zamanı yakalamak, aynı şartları sağlamak çoğu zaman mümkün olmayabiliyor. Özellikle de prod ortamında zamanla yarıştığınız bir durumda iyice sıkıntılı bir durum oluşuyor. Firmalar bu tarz durumlar için APM (Application Performance Management) ürünlerini tercih ediyor. Bu ürünler oldukça başarılı olsa da ara yüzleri (eğer o ürünle ilgili tecrübeniz yoksa) biraz karışık gelebiliyor, maliyet konusunda hiç girmiyorum 🙂 Eğer böyle bir ürün kullanıyorsanız firmanızda da büyük ihtimalle o üründe uzman biri çalışıyor ya da danışmanlık alıyor olabilirsiniz.

Uzun lafın kısası üzerinde bir APM servisi olarak tanımlayabileceğimiz , kolay ara yüzü ile ekstra herhangi bir uzmanlık gerektirmeden yazılımcılar için sorun tespitini oldukça kolay bir hale getiriyor.

Sorunları tespit etmeniz için öncelikle “sorunlu” bir uygulamaya ihtiyacımız var. Daha önce .NET ile uğraştıysanız Tess Ferrandez‘in .NET debugging lab’larını duymuşsunuzdur. Lab’larda yer alan Buggy Bits uygulaması Richard Szalay tarafından .NET Core’a port edilmiş. Buggy Bits Core kaynak kodlarını buradan indirebilirsiniz.

NOT: Örnekte kodlar C:\buggy-bits-core-master\src\BuggyBits> altında bulunuyor.

Application Insights daha kod geliştirme aşamasından itibaren Visual Studio tarafından bize öneriliyor ve entegre bir şekilde kullanabiliyorsunuz. Bu yazıda ise daha çok önceden publish ettiğiniz bir uygulamaya nasıl Application Insights ekleyeceğimiz üzerinde duracağımız için Visual Studio ile ilgili kısımlara girmiyorum. Örneğimizde Azure Web Apps üzerinde yer alan bir uygulamaya entegre edeceğiz. Application Insights kullanmak için uygulamanızın Azure üzerinde olmasına gerek yok, localde olan bir uygulamaya da Application Insights entegre edebilirsiniz.

Öncelikle Azure üzerinde yeni bir oluşturalım. Bu işlemler için kullanmayı tercih ettim ancak Visual Studio ya da kullanarak da yapabilirsiniz. Application Insights’ı sonradan entegre edeceğim için “Off” seçeneğini değiştirmiyorum.

Resim-1

NOT: Web App oluşturduktan sonra Deployment Credentials altından kullanıcı oluşturmayı unutmayın.

Uygulamayı local üzerinden deploy edeceğim. Bunun için de öncelikle local repository’yi initialize etmek gerekiyor. Bilgisayarınızda kurulu değilse buradan indirebilirsiniz.

C:\buggy-bits-core-master\src\BuggyBits> altında aşağıdaki komutları çalıştıralım.

git init

git add .

git commit -m “first commit”

Başlangıçta bahsettiğimiz Azure CLI üzerinden devam edelim. Azure CLI’ı portal üzerinden ya da bilgisayarınıza Azure CLI kurarak üzerinden de kullanabilirsiniz.

Öncelikle “az login” komutu ile Azure’a login olmamız gerekiyor. Bu komutu çalıştırdıktan sonra default browser ile login ekranı açılacak. Sonrasında git repository endpoint adresi bilgisine ihtiyacımız var. -g resource group, -n de web app ismi olacak şekilde aşağıdaki komutu çalıştırarak deploymentLocalGitUrl değerini alabilirsiniz.

az webapp deployment source config-local-git -g mshowto_rg -n BuggyBitsDemo

Resim-2

NOT: Eğer WebApp’i Azure CLI üzerinden oluşturursanız output içerisinde bu bilgi yer alıyor.

Son olarak da aşağıdaki komutları kullanarak Azure’a push ediyoruz. Burada yer alan mshowtodep, Azure Portal üzerinden deployment credentials altında tanımladığım kullanıcı adı.

git remote add azure https://mshowtodep@buggybitsdemo.scm.azurewebsites.net/BuggyBitsDemo.git

git push azure master

Resim-3

Deployment işlemlerini tamamladıktan sonra Web App – Overview üzerinde yer alan URL’e tıklayarak uygulamamızı açabiliriz.

Resim-4

Uygulamamızı hazır hale getirdikten sonra Web App – Settings menüsünden Application Insights seçeneği altında gerekli ayarları yapıyoruz. Uygulamadan bağımsız olarak da bir Application Insights kaynağı oluşturup sonradan uygulamaya entegre etmek mümkün. Ancak bu şekilde yapmadığımız için yeni bir tane oluşturalım.

Resim-5

OK’e bastığımızda aşağıdaki gibi bir uyarı ile karşılaşıyoruz. Tahmin edeceğiniz üzere uygulamaya eklemesi gereken bazı eklentiler ve ayarlar var. Bu işlem sonrasında uygulamanın restart olacağı da özellikle belirtilmiş.

Resim-6

Overview ekranında failed requests, server response time, server requests ve availability grafiklerini görebilirsiniz. Veriler bir süre gecikmeli geliyor, bu nedenle request atar atmaz hemen yansımayacaktır.

Resim-7

Uygulamamızın performansını incelemek için /FeaturedProducts’a farklı browserlardan birkaç kez request atalım. Investigate altında yer alan Performance seçeneğinden gördüğümüz kadarıyla Home/Index ve FeaturedProducts/Index performans açısından problemli görünüyor.

Resim-8

Uygulamayı biraz karıştırdıktan sonra Failures altında herhangi bir exception oluşmuş mu bakalım. HTTP 500 ve 404 alan sayfalar ile bir adet “Null Reference Exception” görünüyor.

Resim-9

Exception detayında Startup.Configure’de bir sorun olduğunu görebiliyoruz.

Resim-10

Exception’a ait detayları ve call stack bilgisini de exception’a tıklayarak açılan “end-to-end transaction details” ekranından görebilirsiniz.

Resim-11

Resim-12

İlk bölümde genel olarak değindiğimiz “Application Insights”ı, diğer bölümlerde daha detaylı olarak inceleyeceğiz.

Bu konuyla ilgili sorularınızı https://forum.mshowto.org linkini kullanarak ulaşacağınız forum sayfamızda sorabilirsiniz.

Referanslar

www.mshowto.org

TAGs: Azure, Azure Portal, , Web App, , , Application Insights, Debugging, Azure CLI, Git, Powershell

Yorum Yap

Yazar Hakkında

Mert Yeter, lisans eğitimini Yıldız Teknik Üniversitesi Gemi İnşaatı Mühendisliği bölümünde, yüksek lisans eğitimini ise Bahçeşehir Üniversitesi Bilgi Teknolojileri bölümünde tamamlamıştır. Yazılım dünyasına üniversitenin ilk yıllarında aldığı QBasic ile başlayan Mert, .NET ve SQL Server gibi Microsoft teknolojileri ile devam etmiş; yüksek lisans tezini ise Linux konusunda yapmıştır. Netaş ve Ziraat Teknoloji gibi sektörün önde gelen firmalarında C#, .NET, SQL Server, Cisco Contact Center ürünleri ve Linux üzerine çalışmış, bir çok firmaya da bu konularda danışmanlık vermiştir. Şu anda da Done'de Cloud Development Manager olarak Azure, .NET Core, SQL Server, Docker vb güncel teknolojiler üzerinde çalışmaktadır.

Yorum Yap