5 Kas, 2017 Azure DNS Hizmeti Nasıl Kullanılır
Mert Yeter 23/09/2018 Okuma süresi: 4dk, 49sn
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ı Azure üzerinde bir APM servisi olarak tanımlayabileceğimiz Application Insights, 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 debugging 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 Web App oluşturalım. Bu işlemler için Azure Portal kullanmayı tercih ettim ancak Visual Studio ya da Azure CLI kullanarak da yapabilirsiniz. Application Insights’ı sonradan entegre edeceğim için “Off” seçeneğini değiştirmiyorum.
NOT: Web App oluşturduktan sonra Deployment Credentials altından kullanıcı oluşturmayı unutmayın.
Uygulamayı local git üzerinden deploy edeceğim. Bunun için de öncelikle local git repository’yi initialize etmek gerekiyor. Bilgisayarınızda git kurulu değilse buradan indirebilirsiniz.
C:\buggy-bits-core-master\src\BuggyBits> altında aşağıdaki komutları çalıştıralım.
Başlangıçta bahsettiğimiz Azure CLI üzerinden devam edelim. Azure CLI’ı portal üzerinden ya da bilgisayarınıza Azure CLI kurarak powershell ü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
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
Deployment işlemlerini tamamladıktan sonra Web App – Overview üzerinde yer alan URL’e tıklayarak uygulamamızı açabiliriz.
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.
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ş.
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.
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.
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.
Exception detayında Startup.Configure’de bir sorun olduğunu görebiliyoruz.
Exception’a ait detayları ve call stack bilgisini de exception’a tıklayarak açılan “end-to-end transaction details” ekranından görebilirsiniz.
İlk bölümde genel olarak değindiğimiz “Application Insights”ı, diğer bölümlerde daha detaylı olarak inceleyeceğiz.
TAGs: Azure, Azure Portal, ASP.NET, Web App, App Services, Yazılım Geliştiricileri için Azure, Application Insights, Debugging, Azure CLI, Git, Powershell
Etiketler: App Services, Application Insights, asp.net, azure, Azure CLI, azure portal, Debugging, git, powershell, web app, Yazılım Geliştiricileri için Azure
AWS ve Azure için Bulut Hizmet Haritası