Azure cloud services için Application Insights
Application Insights , bulut hizmetinizdeki Azure Tanılama verilerle Application Insights sdk 'lardan verileri birleştirerek kullanılabilirlik, performans, başarısızlık ve kullanım için Azure bulut hizmeti uygulamalarını 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.

Ö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ı oturum açın.
- Microsoft Azure tools 2,9 veya üzeri.
- Developer Analytics Tools 7,10 veya üzeri.
Hızlıca 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, uygulamanızı çalışma zamanında gererken, Web rolünüzde istekleri, özel durumları ve bağımlılıkları izlemek için ihtiyaç duyduğunuz tüm telemetrileri sağlar. Ayrıca, çalışan rollerinizdeki performans sayaçlarını izler. uygulamanız tarafından oluşturulan tüm tanılama izlemeleri de Application Insights gönderilir.
İhtiyacınız olan bu seçenek varsa, işiniz bitti demektir.
Sonraki adımlarınız, verileri analiz ile sorgulayarak uygulamanızdaki ölçümleri görüntülüyor.
Tarayıcıdaki performansı izlemek için, kullanılabilirlik testlerini ayarlamak ve Web tarayıcınıza kod eklemekisteyebilirsiniz.
Sonraki bölümlerde aşağıdaki ek seçenekler ele alınmaktadır:
- Çeşitli bileşenlerden veri gönderin ve kaynakları ayırmak için yapılandırma yapılandırın.
- Uygulamanızdan özel telemetri ekleyin.
Application Insights ile belgelenmiş örnek uygulama
bu örnek uygulamada, Azure 'da barındırılan iki çalışan rolüne sahip bir bulut hizmetine Application Insights eklenir.
Sonraki bölümde, kendi bulut hizmeti projenizi aynı şekilde nasıl uyarlayacağınızı öğreneceksiniz.
Kaynakları ve kaynak gruplarını planlama
uygulamanızdaki 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, takım üyelerine erişim vermek ve güncelleştirmeleri tek bir koordine işleminde 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 komut dosyası yazabilirsiniz .
Bileşenler için kaynaklar
Kaynak rolünü tanımlayan her bir telemetri öğesine bir boyut özelliği eklemenizi öneririz. Bu yaklaşımda, özel durumlar gibi ölçüm grafikleri, normalde çeşitli rollerden sayımların toplamını gösterir, ancak gerekli olduğu gibi, grafiği rol tanımlayıcısına göre segmentleyebilirsiniz. Aramaları aynı boyuta göre de filtreleyebilirsiniz. Bu alternatif, her şeyi aynı anda görüntülemeyi daha kolay hale getirir, ancak roller arasında bazı karışıklıklara de 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 halde, canlı sitedeki tüm trafik arasında test telemetrinizi bulmak zor olabilir.
Bu durumdan kaçınmak için, sisteminizde her derleme yapılandırması veya "damga" (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, yapı yapılandırmasına bağlı olarak, Application Insights SDK 'sını farklı bir izleme anahtarı olacak ş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 oluşturmaya karar verdiyseniz ve her derleme yapılandırması için ayrı bir küme oluşturmak isterseniz, bunların Application Insights portalında oluşturulması en kolay yoldur. Kaynakları çok büyük bir şekilde oluşturursanız, işlemi otomatikleştirebilirsiniz.
Azure portal yeni > geliştirici hizmetleri > Application Insights' ni seçin.

uygulama türü aşağı açılan listesinde ASP.NET web uygulaması' nı seçin.
Her kaynak bir izleme anahtarı ile tanımlanır. SDK yapılandırmasını el ile yapılandırmak veya doğrulamak istiyorsanız, bu anahtara daha sonra ihtiyacınız olacaktır.
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> > roller altında her rolün özelliklerini açın.
yapılandırma bölümünde tanılama verilerini Application Insights 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ın serviceconfiguration adlı dosyalara eklenmesi etkisine sahiptir . * cscfg. Örnek kodaşağıda verilmiştir.
Application Insights gönderilen tanılama bilgileri düzeyini değiştirmek istiyorsanız, . cscfg dosyalarını doğrudan düzenleyerekbunu yapabilirsiniz.
Her projede SDK’yı yükleyin
Bu seçenekle, herhangi bir role özel iş telemetrisi ekleyebilirsiniz. Bu seçenek, uygulamanızın nasıl kullanıldığı ve gerçekleştirdiği hakkında daha yakından 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 telemetri 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 'yı 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 bir rol için "adım a" tekrarlayın. Örneklere bakın:
ApplicationInsights.config dosyasını her zaman çıkış dizinine kopyalanacak şekilde ayarlayın.
.config dosyadaki 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 ayarlama (isteğe bağlı)
bu adım yalnızca .NET Framework üzerinde tam SQL sorguları yakalamak istiyorsanız gereklidir.
\*.csdefŞuna benzer her bir rol için dosya ekleme Başlangıç görevi<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.ps1indirin,
AppInsightsAgenther rol projesinde klasöre yerleştirin. Visual Studio dosya özellikleri veya derleme betikleri aracılığıyla bunları çıkış dizinine kopyalamadığı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ı aramabölümünde görüntülenir ve toplu veriler Ö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, şunları yapın:
- Olayları tek tek görüntülemek için Arama kutucuğunu açın.
- Uygulamada, telemetri oluşturması için çeşitli sayfalar açın.
- Birkaç saniye bekleyin ve yenile'ye tıklayın.
Daha fazla bilgi için bkz. Sorun giderme.
Olay Azure Tanılama görüntüleme
Uygulama uygulama Azure Tanılama bilgileri Analizler 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 açın ve aşağıdaki grafiği ekleyin:

Uygulama tarafından gönderilen çeşitli izleme günlüklerinde arama yapmak Azure Tanılama Arama veya Analiz sorgusu kullanın. Örneğin, bir rolün kilitlenmesi ve geri dönüştürülene neden olan işlanmamış bir özel durumuna sahip olduğunu varsayalım. Bu bilgi, Windows Olay Günlüğü’nün Uygulama kanalında görünür. Olay Günlüğü hatasını görüntülemek ve özel Windows tam yığın izlemesini almak için Ara'yı kullanabilirsiniz. Bunu yapmak sorunun kök nedenini bulan yardımcı olur.

Daha fazla telemetri
Sonraki bölümlerde, uygulamanın çeşitli yönlerinden nasıl ek telemetri elde etmek ele alınıyor.
Çalışan rollerinden gelen istekleri izleme
Web rollerinde, istek modülü otomatik olarak HTTP istekleriyle ilgili verileri toplar. Varsayılan koleksiyon davranışını nasıl geçersiz kılabilirsiniz örnekleri için bkz. örnek MVCWebRole.
Ç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 yapılan istekleri izlemek için kendi kodunuzu ebilirsiniz.
İstekleri rapor etmek için kullanılan iki örnek çalışan rolüne bakın:
Özel durumlar
Çeşitli web uygulaması türlerinden işlanmamış özel durumları toplama hakkında bilgi için bkz. Application Analizler.
Örnek web rolü, MVC5 ve Web API 2 denetleyicilerine sahiptir. Bu ikisinden toplanan işlenmemiş özel durumlar aşağıdaki işleyicilerle yakalanır:
- AiHandleErrorAttribute, bu örnekte gösterildiği gibi MVC5 denetleyicileri için ayarlanır
- AiWebApiExceptionLogger, bu örnekte gösterildiği gibi Web API 2 denetleyicileri için ayarlanır
Çalışan rolleri için özel durumları iki şekilde izleyebilirsiniz:
- TrackException(örneğin) kullanın.
- Application Analizler izleme dinleyicisi NuGet eklediyebilirsiniz, bu örnekte gösterildiği gibi özel durumları günlüğe günlüğe NuGet System.Diagnostics.Trace kullanabilirsiniz.
Performans sayaçları
Aşağıdaki sayaçlar varsayılan olarak toplanır:
- \Process(?? APP_WIN32_PROC?) % İşlemci Süresi
- \Memory\Available Bytes
- .NET CLR Exceptions(??APP_CLR_PROC??)# of Exceps Thrown / sec
- \Process(??APP_WIN32_PROC??)\Private Bytes
- \Process(??APP_WIN32_PROC??)\IO Data Bytes/sec
- \Processor(_Total)% Processor Time
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, Windows düzenleyerek ek özel veyaApplicationInsights.config performans sayaçları belirtabilirsiniz.

Çalışan rolleri için ilişkili telemetri
Zengin bir tanılama deneyimi için başarısız veya yüksek gecikme süresine neden olan isteği görüntüabilirsiniz. Web rolleriyle SDK, ilgili telemetri arasında otomatik olarak bir bağıntı ayarlar.
Çalışan rollerine bu görünümü elde etmek için, özel telemetri başlatıcısı kullanarak tüm telemetri için ortak bir Operation.Id bağlam özniteliğini ayarlayın. Bunu yapmak, gecikme süresinin veya hatanın bir bağımlılıktan mı yoksa kodunuzdan mı kaynak yaptığını bir bakışta görüntülemenize olanak sağlar.
Aşağıdaki adımları uygulayın:
- correlationId'i bu örnekte gösterildiği gibi bir CallContext olarak ayarlayın. Bu durumda, correlationId olarak İstek Kimliğini kullanıyoruz.
- Özel bir TelemetryInitializer uygulaması ekleyin ve Operation.Id önceden ayarlanmış correlationId olarak ayarlayın. Bir örnek için bkz. ItemCorrelationTelemetryInitializer.
- Özel telemetri başlatıcısını ekleyin. Bunu dosyada veya ApplicationInsights.config örnekte gösterildiği gibi kodda da yapabiliriz.
İstemci telemetrisi
Sayfa görüntüleme sayıları, sayfa yükleme süreleri veya betik özel durumları gibi tarayıcı tabanlı telemetri verileri almak ve sayfa betiklerinize özel telemetri yazmak için bkz. JavaScript SDK'sını web sayfalarınıza ekleme.
Kullanılabilirlik testleri
Uygulamanın canlı ve hızlı yanıt veriyor olduğundan emin olmak için Web testlerini ayarlayın.
Her şeyi birlikte görüntüleme
Sisteminizin genel bir resmi için önemli 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 dahil edin.
İ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 hizmetlerde çalıştırmada "yöntem bulunamadı" özel durumu
.NET 4.6 için mi oluşturdunuz? .NET 4.6, Azure bulut hizmetleri rollerinde otomatik olarak desteklanmaz. Uygulama çalıştırmadan önce her role .NET 4.6 yükleyin.