Azure bulut hizmetleri için Application Insights
Application Insights, Application Insights SDK'larından alınan verileri bulut hizmetlerinizdeki Azure Tanılama verilerle birleştirerek Azure bulut hizmeti uygulamalarını kullanılabilirlik, performans, hatalar ve kullanım için izleyebilir. Uygulamanızın gerçek hayattaki performansı ve etkinliğine ilişkin aldığınız geri bildirimlerden yararlanarak her geliştirme yaşam döngüsünde tasarımın yönü konusunda bilinçli kararlar alabilirsiniz.
Not
31 Mart 2025’te izleme anahtarı alımı desteği sona erecektir. İzleme anahtarı alımı çalışmaya devam edecek, ancak artık özellik için güncelleştirme veya destek sağlamayacağız. Yeni özelliklerden yararlanmak için bağlantı dizesi geçiş.
Önkoşullar
Başlamadan önce şunları yapmanız gerekir:
Bir Azure aboneliği.
Windows, Xbox Live veya diğer Microsoft bulut hizmetleri için Microsoft hesabınızla oturum açın.
Microsoft Azure araçları 2.9 veya üzeri.
Geliştirici Analizi Araçları 7.10 veya üzeri.
Hemen kullanmaya başlayın
Bulut hizmetinizi Application Insights ile izlemenin en hızlı ve kolay yolu, uygulamanızı Azure’da yayımlarken bu seçeneği belirlemektir.
Bu seçenek çalışma zamanında uygulamanızı izler ve web rolünüzdeki istekleri, özel durumları ve bağımlılıkları izlemek için ihtiyacınız olan tüm telemetri verilerini verir. Ayrıca çalışan rollerinizin performans sayaçlarını da izler. Uygulamanız tarafından oluşturulan tüm tanılama izlemeleri de Application Insights'a gönderilir.
İhtiyacınız olan tek şey bu seçenekse, işiniz bitti demektir.
Sonraki adımlarınız uygulamanızdaki ölçümleri görüntülemek ve Analytics ile verilerinizi sorgulamaktır.
Tarayıcıda performansı izlemek için kullanılabilirlik testlerini ayarlamak ve web sayfalarınıza kod eklemek de isteyebilirsiniz.
Sonraki bölümlerde aşağıdaki ek seçenekler açıklanmıştır:
- Farklı bileşenlerden veri gönderin ve kaynakları ayırmak için yapılandırmalar oluşturun.
- Uygulamanızdan özel telemetri ekleyin.
Application Insights ile izlenen örnek uygulama
Bu örnek uygulamada Application Insights, Azure'da barındırılan iki çalışan rolüyle bir bulut hizmetine eklenir.
Sonraki bölümde kendi bulut hizmeti projenizi aynı şekilde uyarlamayı öğreneceksiniz.
Kaynakları ve kaynak gruplarını planlama
Uygulamanızdan alınan telemetri Application Insights türünde bir Azure kaynağında depolanır, analiz edilir ve görüntülenir.
Her kaynak bir kaynak grubuna aittir. Kaynak grupları maliyetleri yönetmek, ekip üyelerine erişim vermek ve güncelleştirmeleri tek bir eşgüdümlü işlemde dağıtmak için kullanılır. Örneğin, bir Azure bulut hizmetini ve Application Insights izleme kaynaklarını tek bir işlemde dağıtmak için bir betik yazabilirsiniz.
Bileşenler için kaynaklar
Kaynak rolünü tanımlayan her telemetri öğesine bir boyut özelliği eklemenizi öneririz. Bu yaklaşımda, özel durumlar gibi ölçüm grafikleri normalde çeşitli rollerden gelen sayıların bir toplamasını gösterir, ancak gerektiğinde grafiği rol tanımlayıcıya göre segmentlere ayırabilirsiniz. Aramaları aynı boyuta göre de filtreleyebilirsiniz. Bu alternatif, her şeyi aynı anda görüntülemeyi biraz kolaylaştırır, ancak roller arasında bazı karışıklıklara da yol açabilir.
Tarayıcı telemetrisi genellikle ait olduğu sunucu tarafı web rolüyle aynı kaynağa dahil edilir.
Çeşitli bileşenler için Application Insights kaynaklarını tek bir kaynak grubuna yerleştirin. Bu yaklaşım, bunları birlikte yönetmeyi kolaylaştırır.
Geliştirme, test ve üretimi ayırma
Bir önceki sürümünüz yayındayken yen özelliğiniz için özel olaylar geliştiriyorsanız, geliştirme telemetrisini ayrı bir Application Insights kaynağına göndermeniz mantıklı olur. Aksi takdirde, canlı siteden gelen tüm trafik arasında test telemetrinizi bulmak zor olabilir.
Bu durumu önlemek için sisteminizin her derleme yapılandırması veya "damgalama" (geliştirme, test, üretim vb.) için ayrı kaynaklar oluşturun. Her derleme yapılandırmasına ait kaynakları ayrı bir kaynak grubuna ekleyin.
Telemetriyi uygun kaynaklara göndermek için Application Insights SDK'sını, derleme yapılandırmasına bağlı olarak farklı bir izleme anahtarı alacak şekilde ayarlayabilirsiniz.
Farklı aşamalar için izleme anahtarını dinamik olarak ayarlamayı öğrenin.
Her rol için bir Application Insights kaynağı oluşturma
Her rol için ayrı bir kaynak ve belki de her derleme yapılandırması için ayrı bir küme oluşturmaya karar verdiyseniz, bunların tümünü Application Insights portalında oluşturmak en kolayıdır. Çok fazla kaynak oluşturuyorsanız işlemi otomatikleştirebilirsiniz.
Azure portalında Yeni>Geliştirici Hizmetleri>Application Insights'ı seçin.
Uygulama Türü açılan listesinde web uygulaması ASP.NET seçin.
Her kaynak bir izleme anahtarıyla tanımlanır. SDK'nın yapılandırmasını el ile yapılandırmak veya doğrulamak istiyorsanız bu anahtara daha sonra ihtiyacınız olabilir.
Her rol için Azure Tanılama ayarlama
Uygulamanızı Application Insights ile izlemek için bu seçeneği ayarlayın. Web rolleri için bu seçenek performans izleme, uyarılar, tanılamalar ve kullanım analizi sağlar. Diğer roller için yeniden başlatma, performans sayaçları ve System.Diagnostics.Trace çağrıları gibi Azure Tanılama arayabilir ve izleyebilirsiniz.
Visual Studio Çözüm Gezgini,YourCloudService >><Roles altında her rolün özelliklerini açın.
Yapılandırma'da Tanılama verilerini Application Insights'a gönder onay kutusunu seçin ve ardından daha önce oluşturduğunuz Application Insights kaynağını seçin.
Her derleme yapılandırması için ayrı bir Application Insights kaynağı kullanmaya karar verdiyseniz önce yapılandırmayı seçin.
Bu, Application Insights izleme anahtarlarınızı ServiceConfiguration.*.cscfg adlı dosyalara eklemenin etkisine sahiptir. Örnek kod aşağıda verilmiştir.
Application Insights'a gönderilen tanılama bilgilerinin düzeyini değiştirmek istiyorsanız, .cscfg dosyalarını doğrudan düzenleyerek bunu yapabilirsiniz.
Her projede SDK’yı yükleyin
Bu seçenekle, herhangi bir role özel iş telemetrisi ekleyebilirsiniz. seçeneği, uygulamanızın nasıl kullanıldığına ve nasıl performans sergilesine ilişkin daha yakın bir analiz sağlar.
Visual Studio’da her bulut uygulaması projesi için Application Insights SDK’sını yapılandırın.
Web rollerini yapılandırmak için projeye sağ tıklayın ve ardından Application Insights'ı Yapılandır veya Application Insights telemetrisi ekle'yi > seçin.
Çalışan rollerini yapılandırmak için:
a. Projeye sağ tıklayın ve ardından NuGet Paketlerini Yönet'i seçin.
b. Windows Sunucuları için Application Insights’ı ekleyin.
SDK'yi Application Insights kaynağına veri gönderecek şekilde yapılandırmak için:
a. Uygun bir başlangıç işlevinde, .cscfg dosyasındaki yapılandırma ayarından izleme anahtarını ayarlayın:
TelemetryConfiguration configuration = TelemetryConfiguration.CreateDefault(); configuration.InstrumentationKey = RoleEnvironment.GetConfigurationSettingValue("APPINSIGHTS_INSTRUMENTATIONKEY"); var telemetryClient = new TelemetryClient(configuration);
b. Uygulamanızdaki her rol için "a adımını" yineleyin. Örneklere bakın:
ApplicationInsights.config dosyasını her zaman çıkış dizinine kopyalanacak şekilde ayarlayın.
.config dosyasındaki bir ileti, izleme anahtarını buraya yerleştirmenizi ister. Ancak bulut uygulamaları için .cscfg dosyasından ayarlamak daha iyidir. Bu yaklaşım, rolün portalda doğru şekilde tanımlanmasını sağlar.
Tam SQL Sorguları toplamak için Durum İzleyicisi'ni ayarlama (isteğe bağlı)
Bu adım yalnızca .NET Framework'te tam SQL sorgularını yakalamak istiyorsanız gereklidir.
Dosyada
\*.csdef
Şuna benzer her rol için başlangıç görevi ekle<Startup> <Task commandLine="AppInsightsAgent\InstallAgent.bat" executionContext="elevated" taskType="simple"> <Environment> <Variable name="ApplicationInsightsAgent.DownloadLink" value="http://go.microsoft.com/fwlink/?LinkID=522371" /> <Variable name="RoleEnvironment.IsEmulated"> <RoleInstanceValue xpath="/RoleEnvironment/Deployment/@emulated" /> </Variable> </Environment> </Task> </Startup>
InstallAgent.bat ve InstallAgent.ps1 dosyasını indirin, bunları her rol projesindeki
AppInsightsAgent
klasöre yerleştirin. Visual Studio dosya özellikleri veya derleme betikleri aracılığıyla bunları çıkış dizinine kopyaladığınızdan emin olun.Tüm Çalışan Rollerinde ortam değişkenleri ekleyin:
<Environment> <Variable name="COR_ENABLE_PROFILING" value="1" /> <Variable name="COR_PROFILER" value="{324F817A-7420-4E6D-B3C1-143FBED6D855}" /> <Variable name="MicrosoftInstrumentationEngine_Host" value="{CA487940-57D2-10BF-11B2-A3AD5A13CBC0}" /> </Environment>
Uygulamayı çalıştırma ve yayımlama
Uygulamanızı çalıştırın ve Azure'da oturum açın.
Oluşturduğunuz Application Insights kaynaklarını açın.
Tek tek veri noktaları Arama'da, toplanan veriler ise Ölçüm Gezgini'nde görüntülenir.
Daha fazla telemetri ekleyin (sonraki bölümlere bakın) ve ardından canlı tanılama ve kullanım geri bildirimi almak için uygulamanızı yayımlayın.
Veri yoksa aşağıdakileri yapın:
- Tek tek olayları görüntülemek için Arama kutucuğunu açın.
- Uygulamada, bazı telemetri verileri oluşturabilmesi için çeşitli sayfaları açın.
- Birkaç saniye bekleyin ve yenile'ye tıklayın.
Azure Tanılama olaylarını görüntüleme
Azure Tanılama bilgilerini Application Insights'ta aşağıdaki konumlarda bulabilirsiniz:
- Performans sayaçları özel ölçümler olarak görüntülenir.
- Windows olay günlükleri izlemeler ve özel olaylar olarak gösterilir.
- Uygulama günlükleri, ETW günlükleri ve varsa tanılama altyapısı günlükleri izlemeler olarak görünür.
Performans sayaçlarını ve olay sayısını görüntülemek için Ölçüm Gezgini'ni açın ve aşağıdaki grafiği ekleyin:
Azure Tanılama tarafından gönderilen çeşitli izleme günlüklerinde arama yapmak için Arama veya Analiz sorgusu kullanın. Örneğin, bir rolün kilitlenmesine ve geri dönüştürülmesine neden olan işlenmemiş bir özel durumunuz olduğunu varsayalım. Bu bilgi, Windows Olay Günlüğü’nün Uygulama kanalında görünür. Arama özelliğini kullanarak Windows Olay Günlüğü hatasını görüntüleyebilir ve özel durum için tam yığın izlemesini alabilirsiniz. Bunu yapmak, sorunun kök nedenini bulmanıza yardımcı olur.
Daha fazla telemetri
Sonraki bölümlerde uygulamanızın çeşitli yönlerinden nasıl ek telemetri alınılacağı açıklanır.
Çalışan rollerinden gelen istekleri izleme
Web rollerinde, istek modülü otomatik olarak HTTP istekleriyle ilgili verileri toplar. Varsayılan toplama davranışını nasıl geçersiz kılabileceğinize ilişkin örnekler için örnek MVCWebRole'a bakın.
Çalışan rollerine yapılan çağrıları HTTP istekleriyle aynı yöntemle izleyerek bunların performansını yakalayabilirsiniz. Application Insights’ta İstek telemetri türü, zamanlanabilen ve bağımsız olarak başarılı ya da başarısız olabilen adlandırılmış sunucu tarafı işin bir birimini ölçer. HTTP istekleri SDK tarafından otomatik olarak yakalansa da, çalışan rollerine yönelik istekleri izlemek için kendi kodunuzu ekleyebilirsiniz.
İstekleri raporlamak için izlenen iki örnek çalışan rolüne bakın:
Özel durumlar
Çeşitli web uygulaması türlerinden işlenmeyen özel durumları toplama hakkında bilgi için bkz . Application Insights'ta özel durumları izleme.
Örnek web rolü, MVC5 ve Web API 2 denetleyicilerine sahiptir. Bu ikisinden toplanan işlenmemiş özel durumlar aşağıdaki işleyicilerle yakalanır:
- Bu örnekte gösterildiği gibi MVC5 denetleyicileri için AiHandleErrorAttribute kurulumu
- Bu örnekte gösterildiği gibi Web API 2 denetleyicileri için ayarlanmış AiWebApiExceptionLogger
Çalışan rolleri için özel durumları iki yolla izleyebilirsiniz:
- TrackException(örn.) kullanın.
- Application Insights izleme dinleyicisi NuGet paketini eklediyseniz, bu örnekte gösterildiği gibi özel durumları günlüğe kaydetmek için System.Diagnostics.Trace kullanabilirsiniz.
Performans sayaçları
Aşağıdaki sayaçlar varsayılan olarak toplanır:
- \Process(?? APP_WIN32_PROC??) İşlemci Süresi Yüzdesi
- \Memory\Available Bytes
- .NET CLR Özel Durumları(?? APP_CLR_PROC??) # of Exceps Thrown / sec
- \Process(??APP_WIN32_PROC??)\Private Bytes
- \Process(??APP_WIN32_PROC??)\IO Data Bytes/sec
- \İşlemci(_Total)% İşlemci Süresi
Web rolleri için aşağıdaki sayaçlar da toplanır:
- \ASP.NET Applications(??APP_W3SVC_PROC??)\Requests/Sec
- \ASP.NET Applications(??APP_W3SVC_PROC??)\Request Execution Time
- \ASP.NET Applications(??APP_W3SVC_PROC??)\Requests In Application Queue
Bu örnekte gösterildiği gibi ApplicationInsights.config dosyasını düzenleyerek ek özel veya diğer Windows performans sayaçlarını belirtebilirsiniz.
Çalışan rolleri için bağıntılı telemetri
Zengin bir tanılama deneyimi için başarısız veya yüksek gecikme isteğine neyin yol açtığını görüntüleyebilirsiniz. Web rolleri sayesinde SDK, ilgili telemetri arasında otomatik olarak bir bağıntı ayarlar.
Çalışan rollerinde bu görünümü elde etmek için, tüm telemetri için ortak bir Operation.Id bağlam özniteliği ayarlamak üzere özel bir telemetri başlatıcısı kullanabilirsiniz. Bunu yaptığınızda gecikme veya hata sorununun bir bağımlılıktan mı yoksa kodunuzdan mı kaynaklandığını bir bakışta görebilirsiniz.
Şunu yapabilirsiniz:
- Bu örnekte gösterildiği gibi correlationId değerini bir CallContext olarak ayarlayın. Bu durumda, correlationId olarak İstek Kimliği'ni kullanıyoruz.
- Operation.Id daha önce ayarlanmış olan correlationId değerine ayarlamak için özel bir TelemetryInitializer uygulaması ekleyin. Örnek için bkz . ItemCorrelationTelemetryInitializer.
- Özel telemetri başlatıcısını ekleyin. Bunu, bu örnekte gösterildiği gibi ApplicationInsights.config dosyasında veya kodda yapabilirsiniz.
İstemci telemetrisi
Sayfa görünümü sayıları, sayfa yükleme süreleri veya betik özel durumları gibi tarayıcı tabanlı telemetri verilerini almak ve sayfa betiklerinize özel telemetri yazmak için bkz . JavaScript SDK'sını web sayfalarınıza ekleme.
Kullanılabilirlik Testleri
Uygulamanızın canlı ve duyarlı kaldığından emin olmak için Web testleri ayarlayın.
Her şeyi birlikte görüntüleme
Sisteminizin genel bir resmi için temel izleme grafiklerini tek bir panoda birlikte görüntüleyebilirsiniz. Örneğin, her rolün istek ve hata sayılarını sabitleyebilirsiniz.
Sisteminiz Stream Analytics gibi diğer Azure hizmetlerini kullanıyorsa izleme grafiklerini de ekleyin.
İstemci mobil uygulamanız varsa, App Center kullanın. Analiz’de olay sayılarını görüntüleyecek sorgular oluşturun ve bunları panoya sabitleyin.
Örnek
Örnek, bir web rolü ve iki çalışan rolüne sahip bir hizmeti izler.
Azure bulut hizmetlerinde çalışırken "yöntem bulunamadı" özel durumu
.NET LTS için derleme yaptınız mı? Önceki sürümler Azure bulut hizmetleri rollerinde otomatik olarak desteklenmez. Uygulamanızı çalıştırmadan önce her role .NET LTS yükleyin.