Uygulama Analizler için ASP.NET Core uygulamaları

Bu makalede, bir uygulama için Application Analizler'nin nasıl ASP.NET Core açıklanmıştır. Bu makaledeki yönergeleri tamamlarken Application Analizler uygulama uygulamanıza ilişkin istekleri, bağımlılıkları, özel durumları, performans sayaçlarını, sinyallerini ve ASP.NET Core toplar.

Burada, uygulamasını hedef alan bir MVC uygulaması kullana örneğidir. netcoreapp3.0 Bu yönergeleri tüm uygulama uygulamalarına ASP.NET Core uygulayabilirsiniz. Çalışan Hizmeti kullanıyorsanız buradakiyönergeleri kullanın.

Desteklenen senaryolar

Uygulama Analizler SDK'ASP.NET Core nerede veya nasıl çalıştıracakları fark etmez uygulamalarınızı izleyebilir. Uygulamanız çalışıyorsa ve Azure'a ağ bağlantısı varsa telemetri toplanabilir. Uygulama Analizler izlemesi.NET Core'ın desteklene her yerde de desteklemektedir. Destek şunları kapsar:

  • İşletim sistemi: Windows, Linux veya Mac
  • Barındırma yöntemi: İşlemde veya işlem dışında
  • Dağıtım yöntemi: Çerçeveye bağımlı veya kendi içinde
  • Web sunucusu: IIS (Internet Information Server) veya Kestrel
  • Barındırma platformu: Web Apps, Azure VM, Docker, Azure Kubernetes Service (AKS) ve diğer Azure App Service özellikleri
  • .NET Core sürümü: Resmi olarak desteklenen ve önizlemede yer alan tüm .NET Core sürümleri
  • IDE: Visual Studio, Visual Studio Code veya komut satırı

Önkoşullar

  • İşlevi olan ASP.NET Core uygulama. ASP.NET Core uygulaması oluşturmanız gerekirse bu öğreticiyi ASP.NET Core izleyin.
  • Geçerli bir Application Analizler instrumentation anahtarı. Application Analizler'a telemetri göndermek için bu Analizler. Bir ölçüm anahtarı almak için yeni bir Application Analizler oluşturmanız gerekirse, bkz. Create an Application Analizler resource.

Önemli

Bağlantı Dizeleri, ölçüm araçları anahtarları için önerilir. Yeni Azure bölgeleri için ölçümleme anahtarları yerine bağlantı dizeleri gerekir. Bağlantı dizesi, telemetri verilerinizi ilişkilendirmek istediğiniz kaynağı tanımlar. Ayrıca, kaynağınız telemetri için hedef olarak kullanacağız uç noktaları değiştirmenize olanak sağlar. Bağlantı dizesini kopyalayıp uygulamanın koduna veya ortam değişkenine eklemeniz gerekir.

Sunucu tarafı telemetri Analizler Uygulama Etkinleştirme (Visual Studio)

Daha Mac için Visual Studio için el ile kılavuzu kullanın. Yalnızca Windows sürümü Visual Studio yordamı destekler.

  1. Projenizi Visual Studio’da açın.

    İpucu

    Application Analizler yapılan tüm değişiklikleri izlemek için projeniz için kaynak denetimi kurabilirsiniz. Ayarlamak için Kaynak Denetimine Dosya > Ekle'yi seçin.

  2. Telemetri Project > Uygulama Ekle'Analizler seçin.

  3. Öğesini Başlarken. Bu düğmenin adı Visual Studio bağlı olarak değişebilir. Önceki bazı sürümlerde Ücretsiz Başlat düğmesi olarak adlandırılmıştır.

  4. Aboneliğinizi ve ardından Kaynak Kaydetme'yi > seçin.

  5. Projenize Uygulama Analizler sonra SDK'nın en son kararlı sürümünü kullanmakta olduğunu onaylayın. > > Microsoft.ApplicationInsights.AspNetCore Project Paketleri NuGet Yönet'e gidin. Gerekirse Güncelleştir'i seçin.

    Güncelleştirme için Uygulama Paketi paketinin Analizler gösteren ekran görüntüsü

  6. Projenizi kaynak denetimine eklediysanız Değişiklikleri Görüntüle'Takım Gezgini > > gidin. Application Analizler telemetrisi tarafından yapılan değişikliklerin fark görünümünü görmek için her dosyayı Analizler yapabilirsiniz.

Uygulama tarafı Analizler telemetrisini etkinleştirme (Visual Studio)

  1. uygulama için Application Analizler SDK NuGet paketini ASP.NET Core. Her zaman en son kararlı sürümü kullanmalarını öneririz. SDK için tam sürüm notlarını açık kaynak GitHub bulun.

    Aşağıdaki kod örneği, projenizin dosyasına eklenecek değişiklikleri .csproj gösterir.

        <ItemGroup>
          <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.16.0" />
        </ItemGroup>
    
  2. Bu services.AddApplicationInsightsTelemetry(); örnekte olduğu gibi ConfigureServices() Startup sınıfını yöntemine ekleyin:

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            // The following line enables Application Insights telemetry collection.
            services.AddApplicationInsightsTelemetry();
    
            // This code adds other services for your application.
            services.AddMvc();
        }
    
  3. Ölçüm ölçüm anahtarını ayarlayın.

    için bir bağımsız değişken olarak ölçümleme anahtarı sağlansa AddApplicationInsightsTelemetry da, yapılandırmada ölçümleme anahtarını belirtmenizi öneririz. Aşağıdaki kod örneğinde, 'de bir ölçümleme anahtarının nasıl belirt kuralları olduğu appsettings.json gösterir. Yayımlama sırasında appsettings.json uygulama kök klasörüne kopyalanmış olduğundan emin olun.

        {
          "ApplicationInsights": {
            "InstrumentationKey": "putinstrumentationkeyhere"
          },
          "Logging": {
            "LogLevel": {
              "Default": "Warning"
            }
          }
        }
    

    Alternatif olarak, aşağıdaki ortam değişkenlerinin her ikisinde de ölçümleme anahtarını belirtin:

    • APPINSIGHTS_INSTRUMENTATIONKEY

    • ApplicationInsights:InstrumentationKey

    Örnek:

    • SET ApplicationInsights:InstrumentationKey=putinstrumentationkeyhere

    • SET APPINSIGHTS_INSTRUMENTATIONKEY=putinstrumentationkeyhere

    • Genellikle, Azure Web Apps kullanılır, ancak bu SDK'nın destek APPINSIGHTS_INSTRUMENTATIONKEY olduğu tüm yerlerde de kullanılabilir. (Kodsuz web uygulaması izleme yapıyorsanız, bağlantı dizelerini kullanmadıysanız bu biçim gereklidir.)

    Artık, ölçüm araçları anahtarlarını ayarlamanın yanı sıra Bağlantı Dizeleri'nin de kullanabilirsiniz.

    Not

    Kodda belirtilen bir ölçümleme anahtarı, diğer seçeneklere göre APPINSIGHTS_INSTRUMENTATIONKEY kazanan ortam değişkenine karşı kazanır.

Kullanıcı gizli dizileri ve diğer yapılandırma sağlayıcıları

Ölçümleme anahtarını kullanıcı gizli dizileri ASP.NET Core veya başka bir yapılandırma sağlayıcısından almak için aşırı yüklemeyi bir parametreyle Microsoft.Extensions.Configuration.IConfiguration kullanabilirsiniz. Örneğin, services.AddApplicationInsightsTelemetry(Configuration);. Microsoft.ApplicationInsights.AspNetCore sürüm 2.15.0'danbaşlayarak çağrısı otomatik olarak uygulamanın ölçüm anahtarını services.AddApplicationInsightsTelemetry() Microsoft.Extensions.Configuration.IConfiguration okur. açıkça sağlamak IConfiguration gerekmez.

Uygulamanızı çalıştırma

Uygulamalarınızı çalıştırın ve buna istekte bulundurabilirsiniz. Telemetri şimdi Application Analizler.'a Analizler. Uygulama Analizler SDK'sı, aşağıdaki telemetri verileriyle birlikte uygulamanıza gelen web isteklerini otomatik olarak toplar.

Canlı Ölçümler

Canlı Ölçümler, Application Analizler izlemenin doğru yapılandırıldığından emin olmak için kullanılabilir. Telemetri telemetrilerinin portalda ve analizde görünmesi birkaç dakika sürebilir, ancak Canlı Ölçümler çalışan sürecin CPU kullanımını neredeyse gerçek zamanlı olarak gösterir. Ayrıca İstekler, Bağımlılıklar ve İzlemeler gibi diğer telemetrileri de gösterebilir.

ILogger günlükleri

Varsayılan yapılandırma günlükleri ve ILogger Warning daha ciddi günlükleri toplar. Bu yapılandırmayı özelleştirebilirsiniz.

Bağımlılıklar

Bağımlılık koleksiyonu varsayılan olarak etkindir. Bu makalede, otomatik olarak toplanan bağımlılıklar açıklanmıştır ve ayrıca el ile izleme adımlarını içerir.

Performans sayaçları

Performans sayaçları için destek ASP.NET Core sınırlıdır:

  • Sdk 2.4.1 ve sonraki sürümleri, uygulama Azure Web Apps'da (Windows) çalışıyorsa performans sayaçlarını toplar.
  • Sdk 2.7.1 ve sonraki sürümleri, uygulamanın Windows veya sonraki sürümlerinde NETSTANDARD2.0 çalışıyorsa performans sayaçlarını toplar.
  • Sdk'nın tüm .NET Framework, performans sayaçlarını destekleyen uygulamalar için.
  • SDK 2.8.0 ve sonraki sürümleri Linux'ta cpu/bellek sayacını destekler. Linux'ta başka bir sayaç desteklenmiyor. Linux'ta (ve diğer sanal olmayan ortamlarda) sistem sayaçlarını almak için önerilen Windows EventCounters kullanmaktır.

EventCounter

Varsayılan olarak EventCounterCollectionModule etkindir. Toplanacak sayaç listesini yapılandırmayı öğrenmek için bkz. EventCounters'a giriş.

Web uygulamaları için istemci tarafı telemetrisini etkinleştirme

Yukarıdaki adımlar, sunucu tarafı telemetrisini toplamaya başlamanıza yardımcı olmak için yeterlidir. Uygulamanıza istemci tarafı bileşenleri varsa, kullanım telemetrisini toplamaya başlamak için sonraki adımları izleyin.

  1. İçinde ekleme _ViewImports.cshtml Ekle:
    @inject Microsoft.ApplicationInsights.AspNetCore.JavaScriptSnippet JavaScriptSnippet
  1. İçinde _Layout.cshtml , HtmlHelper bölümünün sonuna, <head> ancak diğer herhangi bir betikten önce ekleyin. Sayfadan herhangi bir özel JavaScript telemetrisini raporlamak istiyorsanız, bu kod parçacığına sonra ekleme:
    @Html.Raw(JavaScriptSnippet.FullScript)
    </head>

kullanılmasına alternatif olarak, FullScript ScriptBody ASP.NET Core sürüm 2,14 için Application Insights SDK 'dan başlayarak kullanılabilir. <script>Bir Içerik güvenlik ilkesi ayarlamak için etiketi kontrol etmeniz gerekiyorsa bunu kullanın:

 <script> // apply custom changes to this script tag.
     @Html.Raw(JavaScriptSnippet.ScriptBody)
 </script>

.cshtmlDaha önce başvurulan dosya adları varsayılan BIR MVC uygulama şablonundan alınır. Sonuç olarak, uygulamanız için istemci tarafı izlemeyi doğru şekilde etkinleştirmek istiyorsanız, <head> uygulamanızın izlemek istediğiniz her sayfasının bölümünde JavaScript kod parçacığı görünmelidir. Bu uygulama şablonunda bunu yapmak için JavaScript kod parçacığını öğesine ekleyin _Layout.cshtml .

Projeniz içermiyorsa _Layout.cshtml , istemci tarafı izlemeeklemeye devam edebilirsiniz. Bunu yapmak için, JavaScript kod parçacığını uygulamanızdaki tüm sayfaları denetleyen eşdeğer bir dosyaya ekleyin <head> . Ya da kod parçacığını birden çok sayfaya ekleyebilirsiniz, ancak bu çözümün korunması zordur ve genellikle bunu önermiyoruz.

Not

JavaScript ekleme varsayılan bir yapılandırma deneyimi sağlar. İzleme anahtarını ayarlamanın ötesinde yapılandırma gerekiyorsa, yukarıda açıklandığı şekilde otomatik ekleme 'yi kaldırmanız ve JavaScript SDK 'sınıel ile eklemeniz gerekir.

Application Insights SDK 'sını yapılandırma

varsayılan yapılandırmayı değiştirmek için ASP.NET Core Application Insights SDK 'sını özelleştirebilirsiniz. Application Insights ASP.NET SDK kullanıcıları, kullanarak veya değiştirerek yapılandırma değiştirme konusunda bilgi sahibi olabilir ApplicationInsights.config TelemetryConfiguration.Active . ASP.NET Core için, ConfigureServices() Startup.cs başka bir şekilde yönlendirilmediğiniz müddetçe, sınıfınızın yönteminde neredeyse tüm yapılandırma değişikliklerini yapın. Aşağıdaki bölümler daha fazla bilgi sunar.

Not

ASP.NET Core uygulamalarda, değiştirme ile yapılandırmayı değiştirme TelemetryConfiguration.Active desteklenmez.

Applicationınsightsserviceoptions kullanma

ApplicationInsightsServiceOptions AddApplicationInsightsTelemetry Aşağıdaki örnekte olduğu gibi, ' a geçirerek birkaç ortak ayarı değiştirebilirsiniz:

public void ConfigureServices(IServiceCollection services)
{
    Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions aiOptions
                = new Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions();
    // Disables adaptive sampling.
    aiOptions.EnableAdaptiveSampling = false;

    // Disables QuickPulse (Live Metrics stream).
    aiOptions.EnableQuickPulseMetricStream = false;
    services.AddApplicationInsightsTelemetry(aiOptions);
}

Bu tabloda ayarların tam listesi bulunur ApplicationInsightsServiceOptions :

Ayar Açıklama Varsayılan
EnablePerformanceCounterCollectionModule Etkinleştir/devre dışı bırak PerformanceCounterCollectionModule true
EnableRequestTrackingTelemetryModule Etkinleştir/devre dışı bırak RequestTrackingTelemetryModule true
EnableEventCounterCollectionModule Etkinleştir/devre dışı bırak EventCounterCollectionModule true
EnableDependencyTrackingTelemetryModule Etkinleştir/devre dışı bırak DependencyTrackingTelemetryModule true
EnableAppServicesHeartbeatTelemetryModule Etkinleştir/devre dışı bırak AppServicesHeartbeatTelemetryModule true
EnableAzureInstanceMetadataTelemetryModule Etkinleştir/devre dışı bırak AzureInstanceMetadataTelemetryModule true
EnableQuickPulseMetricStream Liveölçümlerini etkinleştir/devre dışı bırak özelliği true
Enableadaptiveörnekleme Uyarlamalı örneklemeyi etkinleştir/devre dışı bırak true
Enablesinyal Düzenli aralıklarla (15 dakikalık varsayılan), .NET sürümü, Azure ortam bilgileri, varsa vb. gibi çalışma zamanı hakkında bilgi içeren "HeartbeatState" adlı özel bir ölçüm göndererek, sinyalleri etkinleştir/devre dışı bırak özelliği. true
Addadutocollectedmetricextractor Örnekleme gerçekleşmeden önce Istekler/bağımlılıklar hakkında önceden toplanmış ölçümler gönderen bir TelemetryProcessor olan otomatik Collectedölçümler ayıklayıcısı 'nı etkinleştirin/devre dışı bırakın. true
RequestCollectionOptions. TrackExceptions Istek koleksiyonu modülü tarafından işlenmeyen özel durum izlemenin raporlamasını etkinleştirin/devre dışı bırakın. NETSTANDARD 2.0'da false (özel durumlar Applicationınsightsloggerprovider ile izleniyor), aksi takdirde true.
EnableDiagnosticsTelemetryModule Etkinleştir/devre dışı bırak DiagnosticsTelemetryModule . Bunu devre dışı bırakmak, aşağıdaki ayarların yoksayılmasına neden olur; EnableHeartbeat, EnableAzureInstanceMetadataTelemetryModule, EnableAppServicesHeartbeatTelemetryModule true

En güncel liste için, bkz. ApplicationInsightsServiceOptions içindeki yapılandırılabilir ayarlar .

Microsoft. ApplicationInsights. AspNetCore SDK 2.15.0 ve üzeri için yapılandırma önerisi

Microsoft. ApplicationInsights. AspNetCore SDK sürümü 2.15.0 ve sonraki sürümlerde, ' de bulunan her ayarı ApplicationInsightsServiceOptions , uygulamanın örneğini kullanarak ınstrumentationkey dahil olmak üzere yapılandırmanızı öneririz IConfiguration . Aşağıdaki örnekte gösterildiği gibi, ayarlar "ApplicationInsights" bölümünde olmalıdır. AppSettings. json ' dan sonraki bölüm, izleme anahtarını yapılandırır ve Uyarlamalı örnekleme ve performans sayacı toplamayı devre dışı bırakır.

{
    "ApplicationInsights": {
    "InstrumentationKey": "putinstrumentationkeyhere",
    "EnableAdaptiveSampling": false,
    "EnablePerformanceCounterCollectionModule": false
    }
}

Kullanılıyorsa services.AddApplicationInsightsTelemetry(aiOptions) , ayarlarını geçersiz kılar Microsoft.Extensions.Configuration.IConfiguration .

Örnekleme

ASP.NET Core için Application Insights SDK hem sabit hızlı hem de uyarlamalı örneklemeyi destekler. Varsayılan olarak, uyarlamalı örnekleme etkindir.

daha fazla bilgi için bkz. ASP.NET Core uygulamalar için uyarlamalı örnekleme yapılandırma.

TelemetryInitializers ekleme

Telemetrileri ek bilgilerle zenginleştirmek istediğinizde telemetri başlatıcıları' nı kullanın.

TelemetryInitializer DependencyInjection Aşağıdaki kodda gösterildiği gibi kapsayıcıya yenilerini ekleyin. SDK otomatik olarak kapsayıcıya eklenen her birini seçer TelemetryInitializer DependencyInjection .

public void ConfigureServices(IServiceCollection services)
{
    services.AddSingleton<ITelemetryInitializer, MyCustomTelemetryInitializer>();
}

Not

services.AddSingleton<ITelemetryInitializer, MyCustomTelemetryInitializer>(); basit başlatıcılar için geçerlidir. Diğerleri için aşağıdakiler gereklidir: services.AddSingleton(new MyCustomTelemetryInitializer() { fieldName = "myfieldName" });

TelemetryInitializers kaldırılıyor

Varsayılan olarak telemetri başlatıcıları vardır. Tüm veya belirli telemetri başlatıcıları 'nı kaldırmak için, çağrısından sonra aşağıdaki örnek kodu kullanın AddApplicationInsightsTelemetry() .

public void ConfigureServices(IServiceCollection services)
{
    services.AddApplicationInsightsTelemetry();

    // Remove a specific built-in telemetry initializer
    var tiToRemove = services.FirstOrDefault<ServiceDescriptor>
                        (t => t.ImplementationType == typeof(AspNetCoreEnvironmentTelemetryInitializer));
    if (tiToRemove != null)
    {
        services.Remove(tiToRemove);
    }

    // Remove all initializers
    // This requires importing namespace by using Microsoft.Extensions.DependencyInjection.Extensions;
    services.RemoveAll(typeof(ITelemetryInitializer));
}

Telemetri işlemcisi ekleme

TelemetryConfigurationÜzerinde genişletme yöntemi kullanarak ' ye özel telemetri işlemcileri ekleyebilirsiniz AddApplicationInsightsTelemetryProcessor IServiceCollection . Gelişmiş filtreleme senaryolarındatelemetri işlemcileri kullanıyorsunuz. Aşağıdaki örneği kullanın.

public void ConfigureServices(IServiceCollection services)
{
    // ...
    services.AddApplicationInsightsTelemetry();
    services.AddApplicationInsightsTelemetryProcessor<MyFirstCustomTelemetryProcessor>();

    // If you have more processors:
    services.AddApplicationInsightsTelemetryProcessor<MySecondCustomTelemetryProcessor>();
}

Varsayılan TelemetryModules yapılandırma veya kaldırma

Application Insights, kullanıcı tarafından el ile izlemeye gerek duymadan belirli iş yükleri hakkında faydalı telemetri otomatik olarak toplamak için telemetri modüllerini kullanır.

Varsayılan olarak, aşağıdaki otomatik koleksiyon modülleri etkindir. Bu modüller, otomatik olarak telemetri toplamanın sorumluluğundadır. Varsayılan davranışlarını değiştirecek şekilde devre dışı bırakabilir veya yapılandırabilirsiniz.

  • RequestTrackingTelemetryModule -Gelen web isteklerinden Requesttelemetri toplar
  • DependencyTrackingTelemetryModule -Giden http çağrılarından ve SQL çağrılarından Dependencytelemetri toplar
  • PerformanceCollectorModule-Windows performancecounters ' i toplar
  • QuickPulseTelemetryModule -Canlı ölçüm portalında göstermek için telemetri toplar
  • AppServicesHeartbeatTelemetryModule -Uygulamanın barındırıldığı Azure App Service ortamı hakkında (özel ölçümler olarak gönderilen) kalp ve sinyal toplar
  • AzureInstanceMetadataTelemetryModule -Uygulamanın barındırıldığı Azure VM ortamı hakkında (özel ölçümler olarak gönderilen) kalpler toplar
  • EventCounterCollectionModule - Eventcounterstoplar; Bu modül yeni bir özelliktir ve SDK sürümü 2.8.0 ve üzeri sürümlerde kullanılabilir

Herhangi bir Varsayılanı yapılandırmak için, TelemetryModule ConfigureTelemetryModule<T> IServiceCollection Aşağıdaki örnekte gösterildiği gibi genişletme yöntemini üzerinde kullanın.

using Microsoft.ApplicationInsights.DependencyCollector;
using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector;

public void ConfigureServices(IServiceCollection services)
{
    services.AddApplicationInsightsTelemetry();

    // The following configures DependencyTrackingTelemetryModule.
    // Similarly, any other default modules can be configured.
    services.ConfigureTelemetryModule<DependencyTrackingTelemetryModule>((module, o) =>
            {
                module.EnableW3CHeadersInjection = true;
            });

    // The following removes all default counters from EventCounterCollectionModule, and adds a single one.
    services.ConfigureTelemetryModule<EventCounterCollectionModule>(
            (module, o) =>
            {
                module.Counters.Add(new EventCounterCollectionRequest("System.Runtime", "gen-0-size"));
            }
        );

    // The following removes PerformanceCollectorModule to disable perf-counter collection.
    // Similarly, any other default modules can be removed.
    var performanceCounterService = services.FirstOrDefault<ServiceDescriptor>(t => t.ImplementationType == typeof(PerformanceCollectorModule));
    if (performanceCounterService != null)
    {
        services.Remove(performanceCounterService);
    }
}

2.12.2 ve üzeri sürümlerde, ApplicationInsightsServiceOptions varsayılan modüllerin hiçbirini devre dışı bırakma kolay bir seçenek içerir.

Telemetri kanalını yapılandırma

Varsayılan telemetri kanalı: ServerTelemetryChannel . Aşağıdaki örnekte, nasıl geçersiz kılın olduğu gösterir.

using Microsoft.ApplicationInsights.Channel;

    public void ConfigureServices(IServiceCollection services)
    {
        // Use the following to replace the default channel with InMemoryChannel.
        // This can also be applied to ServerTelemetryChannel.
        services.AddSingleton(typeof(ITelemetryChannel), new InMemoryChannel() {MaxTelemetryBufferCapacity = 19898 });

        services.AddApplicationInsightsTelemetry();
    }

Telemetriyi dinamik olarak devre dışı bırakma

Telemetriyi koşullu ve dinamik olarak devre dışı bırakmak için, örneği kodunuzun herhangi bir yerinde ASP.NET Core bağımlılık ekleme kapsayıcısı ile çözebilir ve TelemetryConfiguration DisableTelemetry bayrağını buna göre ayarlayabilirsiniz.

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddApplicationInsightsTelemetry();
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, TelemetryConfiguration configuration)
    {
        configuration.DisableTelemetry = true;
        ...
    }

Yukarıdaki kod örneği, Application Analizler'a telemetri Analizler. Herhangi bir otomatik toplama modülünün telemetri toplamasını engellemez. Belirli bir otomatik koleksiyon modülünü kaldırmak için bkz. telemetri modülünü kaldırma.

Sık sorulan sorular

Application Analizler 3.X ASP.NET Core destekliyor mu?

Evet. 2.8.0 veya ASP.NET Core için Application Analizler SDK'ya güncelleştirin. SDK'nın önceki sürümleri 3.X ASP.NET Core desteklemez.

Ayrıca, Visual Studio tabanlı sunucu tarafı telemetrisinietkinleştirerek en son Visual Studio 2019 (16.3.0) sürümüne güncelleştirin. Visual Studio önceki sürümleri, ASP.NET Core 3.X uygulamaları için otomatik eklemeyi desteklemez.

Otomatik olarak toplanmaz telemetrisini nasıl izleyebilirim?

Oluşturucu ekleme kullanarak TelemetryClient bir örneğini elde eder ve bunun üzerinde gerekli yöntemi TrackXXX() çağırır. Yeni veya örnek oluşturmak için TelemetryClient bir TelemetryConfiguration ASP.NET Core önerilmez. tek bir örneği TelemetryClient zaten kapsayıcıya kaydedilmiştir DependencyInjection ve bu da TelemetryConfiguration telemetrinin geri kalanıyla paylaştırır. Yeni örnek TelemetryClient oluşturma, yalnızca telemetrinin geri kalanından ayrı bir yapılandırmaya ihtiyaç olması halinde önerilir.

Aşağıdaki örnek, bir denetleyiciden ek telemetri izlemesini gösterir.

using Microsoft.ApplicationInsights;

public class HomeController : Controller
{
    private TelemetryClient telemetry;

    // Use constructor injection to get a TelemetryClient instance.
    public HomeController(TelemetryClient telemetry)
    {
        this.telemetry = telemetry;
    }

    public IActionResult Index()
    {
        // Call the required TrackXXX method.
        this.telemetry.TrackEvent("HomePageRequested");
        return View();
    }

Application Analizler'da özel veri raporlama hakkında daha fazla bilgi için bkz. Uygulama Analizler özel ölçümler API başvurusu. Benzer bir yaklaşım, GetMetric API'sini kullanarak Application Analizler özel ölçümler göndermek için kullanılabilir.

Nasıl yaparım? günlük koleksiyonunu özelleştirebilirsiniz?

Varsayılan olarak, yalnızca Warning günlükler ve daha ciddi günlükler otomatik olarak yakalanır. Bu davranışı değiştirmek için aşağıda gösterildiği gibi sağlayıcı için günlük yapılandırmasını ApplicationInsights açıkça geçersiz kılın. Aşağıdaki yapılandırma, ApplicationInsights'ın tüm günlükleri ve daha Information ciddi günlükleri yakalamasına olanak sağlar.

{
  "Logging": {
    "LogLevel": {
      "Default": "Warning"
    },
    "ApplicationInsights": {
      "LogLevel": {
        "Default": "Information"
      }
    }
  }
}

Aşağıdakilerin ApplicationInsights sağlayıcısının günlükleri yakalamasına neden olmadığını Information unutmayın. SDK yalnızca günlükleri ve daha ciddi günlükleri yakalamayı talimatlayan bir varsayılan günlük filtresi ApplicationInsights Warning ekleyse de yakalamaz. ApplicationInsights için açık bir geçersiz kılma gerekir.

{
  "Logging": {
    "LogLevel": {
      "Default": "Information"
    }
  }
}

Daha fazla bilgi için bkz. ILogger yapılandırması.

Bazı Visual Studio şablonları, Application Analizler'yi etkinleştirmek için IWebHostBuilder'da UseApplicationInsights() uzantı yöntemini Analizler. Bu kullanım hala geçerli mi?

Uzantı yöntemi UseApplicationInsights() hala de desteklenir, ancak Application Analizler SDK sürüm 2.8.0 ve sonraki sürümlerde eski olarak işaretlenir. SDK'nın sonraki ana sürümünde kaldırılacaktır. Application Analizler telemetrisini etkinleştirmek için, bazı AddApplicationInsightsTelemetry() yapılandırmaları denetlemeye aşırı yüklemeler sağladığı için kullanılması önerilir. Ayrıca, ASP.NET Core 3.X uygulamaları için Application services.AddApplicationInsightsTelemetry() Analizler.

ASP.NET Core uygulamamı Web Apps. Application Analizler uzantısını Web Apps?

SDK bu makalede gösterildiği gibi derleme zamanında yüklendiyse, Uygulama Portalı uzantısını Analizler portaldan etkinleştirmeniz App Service. Uzantı yüklü olsa bile, SDK'nın uygulamaya zaten ekli olduğunu algılayan uzantı geri döner. Uzantıdan Application Analizler'yi etkinleştirirsanız SDK'yı yüklemeniz ve güncelleştirmeniz gerek yoktur. Ancak bu makaledeki yönergeleri Analizler Application Analizler'yi etkinleştirirsanız, aşağıdakiler nedeniyle daha fazla esnekliğe sahip olursanız:

  • Uygulama Analizler telemetrisi şu işlemlerde çalışmaya devam eder:
    • Windows, Linux ve Mac dahil olmak üzere tüm işletim sistemleri.
    • Kendi içinde veya çerçeve bağımlı dahil olmak üzere tüm yayımlama modları.
    • Tam çerçeveler de dahil olmak üzere tüm hedef .NET Framework.
    • Web Apps, VM Web Apps Linux, kapsayıcılar, Azure Kubernetes Service ve Azure dışı barındırma dahil olmak üzere tüm barındırma seçenekleri.
    • Önizleme sürümleri de dahil olmak üzere tüm .NET Core sürümleri.
  • Veri kümesinden hata ayıklarken telemetri Visual Studio.
  • API'yi kullanarak ek özel telemetri TrackXXX() izleyebilirsiniz.
  • Yapılandırma üzerinde tam denetime sahipsiniz.

Application Analizler Agent (eski Analizler v2) Azure İzleyici gibi araçları kullanarak Uygulama Analizler izleme Durum İzleyicisi etkinleştirebilir miyim?

Evet. Application Analizler Agent 2.0.0-beta1sürümünden başlayarak, IIS'de barındırılan ASP.NET Core uygulamaları desteklemektedir.

Uygulamamı Linux'ta çalıştıracak olursam tüm özellikler destek sunuyor mu?

Evet. SDK için özellik desteği, aşağıdaki özel durumlar dışında tüm platformlarda aynıdır:

  • Performans Sayaçları yalnızca linux'ta desteklenene olduğundan SDK Linux'ta Olay Sayaçları Windows. Çoğu ölçüm aynıdır.
  • Varsayılan olarak etkin olsa da, uygulama Linux veya macOS'ta çalışıyorsa, ağ sorunları olduğunda kanal telemetriyi geçici olarak tutmak için otomatik olarak bir yerel depolama ServerTelemetryChannel klasörü oluşturmaz. Bu sınırlama nedeniyle, geçici ağ veya sunucu sorunları olduğunda telemetri kaybolur. Bu sorunu gidermek için kanal için yerel bir klasör yapılandırabilirsiniz:
using Microsoft.ApplicationInsights.Channel;
using Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel;

    public void ConfigureServices(IServiceCollection services)
    {
        // The following will configure the channel to use the given folder to temporarily
        // store telemetry items during network or Application Insights server issues.
        // User should ensure that the given folder already exists
        // and that the application has read/write permissions.
        services.AddSingleton(typeof(ITelemetryChannel),
                                new ServerTelemetryChannel () {StorageFolder = "/tmp/myfolder"});
        services.AddApplicationInsightsTelemetry();
    }

Bu sınırlama 2.15.0 ve sonraki sürümlerde geçerli değildir.

Bu SDK yeni .NET Core 3.X Çalışan Hizmeti şablon uygulamaları için desteklemektedir.

Bu SDK gerektirir; bu nedenle HttpContext , .NET Core 3.X Çalışan Hizmeti uygulamaları da dahil olmak üzere HTTP olmayan uygulamalarda çalışmaz. Yeni yayınlanan Microsoft.ApplicationInsights.WorkerService SDK'sı kullanılarak bu tür uygulamalarda Application Analizler'yi etkinleştirmek için bkz. Çalışan Hizmeti uygulamaları için Uygulama Analizler (HTTP dışı uygulamalar).

Açık kaynak SDK

En son güncelleştirmeler ve hata düzeltmeleri için sürüm notlarına bakın.

Sonraki adımlar