ASP.NET Core uygulamaları için uygulama Analizler

Bu makalede, ASP.NET Core uygulaması için Uygulama Analizler'nin nasıl etkinleştirileceği ve yapılandırıldığı açıklanır.

Not

Aşağıdaki belgeler, Uygulama Analizler klasik API'sine dayanır. Uygulama Analizler için uzun vadeli plan, OpenTelemetry kullanarak veri toplamaktır. Daha fazla bilgi için bkz . .NET, Node.js, Python ve Java uygulamaları için Azure İzleyici OpenTelemetry'yi etkinleştirme.

Uygulama Analizler ASP.NET Core uygulamanızdan aşağıdaki telemetri verilerini toplayabilir:

  • İstekler
  • Bağımlılıklar
  • Özel durumlar
  • Performans sayaçları
  • Sinyal
  • Günlükler

MVC uygulama örneği kullanıyoruz. Çalışan Hizmeti'ni kullanıyorsanız, Çalışan Hizmeti uygulamaları için Uygulama Analizler'ndeki yönergeleri kullanın.

OpenTelemetry tabanlı .NET teklifi kullanılabilir. Daha fazla bilgi için bkz . OpenTelemetry'ye genel bakış.

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ş.

Not

Tek başına ILogger sağlayıcısını kullanmak istiyorsanız Microsoft.Extensions.Logging.ApplicationInsight kullanın.

Desteklenen senaryolar

ASP.NET Core için Uygulama Analizler SDK'sı nerede veya nasıl çalıştıkları fark etmez uygulamalarınızı izleyebilir. Uygulamanız çalışıyorsa ve Azure'a ağ bağlantısı varsa telemetri toplanabilir. .NET Core'un desteklendiği her yerde uygulama Analizler izleme desteklenir ve aşağıdaki senaryoları kapsar:

  • İşletim sistemi: Windows, Linux veya Mac
  • Barındırma yöntemi: İşlemde veya işlem dışı
  • Dağıtım yöntemi: Çerçeveye bağımlı veya bağımsız
  • Web sunucusu: Internet Information Server (IIS) veya Kestrel
  • Barındırma platformu: Azure Uygulaması Hizmeti, Azure Sanal Makineler, Docker ve Azure Kubernetes Service'in (AKS) Web Apps özelliği
  • .NET sürümü: Önizlemede olmayan resmi olarak desteklenen tüm .NET sürümleri
  • IDE: Visual Studio, Visual Studio Code veya komut satırı

Önkoşullar

Şunlara sahip olmanız gerekir:

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

Mac için Visual Studio için el ile kılavuzu kullanın. Bu yordamı yalnızca Visual Studio'nun Windows sürümü destekler.

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

  2. Project>Uygulama Analizler Telemetrisi Ekle'ye gidin.

  3. Azure Uygulaması lication Analizler> İleri'yi seçin.

  4. Aboneliğinizi ve Uygulama Analizler örneğinizi seçin. Veya Yeni oluştur ile yeni bir örnek oluşturabilirsiniz. İleri'yi seçin.

  5. Uygulama Analizler bağlantı dizesi ekleyin veya onaylayın. Önceki adımda seçiminize göre önceden doldurulmalıdır. Bitir'i seçin.

  6. Uygulama Analizler projenize ekledikten sonra SDK'nın en son kararlı sürümünü kullandığınızı onaylayın. Project>Manage NuGet Packages>Microsoft.Application Analizler bölümüne gidin. AspNetCore. Gerekirse Güncelleştir'i seçin.

    Screenshot that shows where to select the Application Insights package for update.

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

  1. ASP.NET Core için Application Analizler SDK NuGet paketini yükleyin.

    Her zaman en son kararlı sürümü kullanmanızı öneririz. Açık kaynak GitHub deposunda SDK'nın tam sürüm notlarını bulun.

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

    <ItemGroup>
        <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.21.0" />
    </ItemGroup>
    
  2. veya program.cs sınıfınıza startup.cs ekleyinAddApplicationInsightsTelemetry(). Seçim ,NET Core sürümünüze bağlıdır.

    Aşağıdaki örnekte olduğu gibi sınıfınızdaki Program yönteminden sonra WebApplication.CreateBuilder() ekleyinbuilder.Services.AddApplicationInsightsTelemetry();:

    // This method gets called by the runtime. Use this method to add services to the container.
    var builder = WebApplication.CreateBuilder(args);
    
    // The following line enables Application Insights telemetry collection.
    builder.Services.AddApplicationInsightsTelemetry();
    
    // This code adds other services for your application.
    builder.Services.AddMvc();
    
    var app = builder.Build();
    
  3. bağlantı dizesi ayarlayın.

    bağımsız değişkeninin ApplicationInsightsServiceOptions bir parçası olarak bir bağlantı dizesi sağlayabilmenize AddApplicationInsightsTelemetryrağmen, yapılandırmada bağlantı dizesi belirtmenizi öneririz. Aşağıdaki kod örneği, içinde appsettings.jsonbir bağlantı dizesi nasıl belirtileceğini gösterir. Yayımlama sırasında uygulama kök klasörüne kopyalandığından emin appsettings.json olun.

    {
      "Logging": {
        "LogLevel": {
          "Default": "Information",
          "Microsoft.AspNetCore": "Warning"
        }
      },
      "AllowedHosts": "*",
      "ApplicationInsights": {
        "ConnectionString": "Copy connection string from Application Insights Resource Overview"
      }
    }
    

    Alternatif olarak, ortam değişkeninde APPLICATIONINSIGHTS_CONNECTION_STRING veya ApplicationInsights:ConnectionString JSON yapılandırma dosyasında bağlantı dizesi belirtin.

    Örneğin:

    • SET ApplicationInsights:ConnectionString = <Copy connection string from Application Insights Resource Overview>
    • SET APPLICATIONINSIGHTS_CONNECTION_STRING = <Copy connection string from Application Insights Resource Overview>
    • Genellikle Web APPLICATIONINSIGHTS_CONNECTION_STRING Apps'te kullanılır. Ayrıca bu SDK'nın desteklendiği tüm yerlerde de kullanılabilir.

    Not

    Kodda belirtilen bir bağlantı dizesi, diğer seçeneklere göre kazanan ortam değişkenini APPLICATIONINSIGHTS_CONNECTION_STRINGkazanır.

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

bağlantı dizesi ASP.NET Core kullanıcı gizli dizilerinde depolamak veya başka bir Microsoft.Extensions.Configuration.IConfiguration yapılandırma sağlayıcısından almak istiyorsanız, bir parametreyle aşırı yüklemeyi kullanabilirsiniz. Örnek parametre: services.AddApplicationInsightsTelemetry(Configuration);.

Microsoft.ApplicationInsights.AspNetCore Sürüm 2.15.0 ve sonraki sürümlerde çağrıservices.AddApplicationInsightsTelemetry(), uygulamanın bağlantı dizesi Microsoft.Extensions.Configuration.IConfiguration otomatik olarak okur. açıkça sağlamanıza IConfigurationgerek yoktur.

Birden çok sağlayıcıdan yapılandırma yüklemişse IConfiguration , services.AddApplicationInsightsTelemetry sağlayıcıların eklenme sırasına bakılmadan yapılandırmasına öncelik appsettings.jsontanır. services.AddApplicationInsightsTelemetry(IConfiguration) için bu tercihli işlem olmadan'dan IConfiguration yapılandırmayı okumak için appsettings.jsonyöntemini kullanın.

Uygulamanızı çalıştırma

Uygulamanızı çalıştırın ve istekte bulunabilirsiniz. Telemetri artık Uygulama Analizler akmalıdır. Uygulama Analizler SDK'sı aşağıdaki telemetri verilerinin yanı sıra uygulamanıza gelen web isteklerini otomatik olarak toplar.

Canlı Ölçümler

Canlı Ölçümler, Uygulama Analizler izlemenin doğru yapılandırılıp yapılandırılmadığını hızla doğrulamak için kullanılabilir. Telemetrinin portalda ve analizde görünmesi birkaç dakika sürebilir, ancak Canlı Ölçümler çalışan işlemin CPU kullanımını neredeyse gerçek zamanlı olarak gösterir. Ayrıca istekler, bağımlılıklar ve izlemeler gibi diğer telemetri verilerini de gösterebilir.

ILogger günlükleri

Varsayılan yapılandırma günlükleri ve daha ciddi günlükleri ILoggerWarning toplar. Daha fazla bilgi için bkz. ILogger günlükleri koleksiyonunu özelleştirmek Nasıl yaparım??

Bağımlılıklar

Bağımlılık koleksiyonu varsayılan olarak etkindir. Application Analizler'da bağımlılık izleme, otomatik olarak toplanan bağımlılıkları açıklar ve ayrıca el ile izleme gerçekleştirme adımlarını içerir.

Performans sayaçları

ASP.NET Core'daki performans sayaçları desteği sınırlıdır:

  • Sdk 2.4.1 ve sonraki sürümleri, uygulama Web Apps'te (Windows) çalışıyorsa performans sayaçlarını toplar.
  • SDK 2.7.1 ve sonraki sürümleri, uygulama Windows'ta çalışıyorsa ve veya üzerini hedeflerse performans sayaçlarını netstandard2.0 toplar.
  • .NET Framework'ünü hedefleyen uygulamalar için SDK'nın tüm sürümleri performans sayaçlarını destekler.
  • SDK 2.8.0 ve sonraki sürümleri Linux'ta CPU/bellek sayacını destekler. Linux'ta başka bir sayaç desteklenmez. Linux'ta ve Diğer Windows dışı ortamlarda sistem sayaçlarını almak için EventCounters'ı kullanın.

EventCounter

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

HTTP aracılığıyla verileri zenginleştirme

HttpContext.Features.Get<RequestTelemetry>().Properties["myProp"] = someData

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ızın istemci tarafı bileşenleri varsa, yapılandırmaya göre JavaScript (Web) SDK Yükleyici Betiği ekleme kullanarak kullanım telemetrisi toplamaya başlamak için sonraki adımları izleyin.

  1. içinde _ViewImports.cshtmlekleme ekleyin:

    @inject Microsoft.ApplicationInsights.AspNetCore.JavaScriptSnippet JavaScriptSnippet
    
  2. içinde_Layout.cshtml, bölümün <head> sonuna ancak diğer betiklerden önce ekleyinHtmlHelper. Sayfadan herhangi bir özel JavaScript telemetrisi bildirmek istiyorsanız, bu kod parçacığından sonra ekleyin:

    @Html.Raw(JavaScriptSnippet.FullScript)
    </head>
    

kullanmaya FullScriptalternatif olarak, ScriptBody ASP.NET Core sürüm 2.14 için Application Analizler SDK'dan başlayarak kullanılabilir. İçerik Güvenliği İlkesi ayarlamak için etiketi denetlemeniz <script> gerekiyorsa kullanınScriptBody:

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

Daha .cshtml önce başvurulan dosya adları varsayılan bir MVC uygulama şablonundan alınıyor. Sonuç olarak, uygulamanız için istemci tarafı izlemeyi düzgün bir şekilde etkinleştirmek istiyorsanız, JavaScript JavaScript (Web) SDK Yükleyici Betiği, uygulamanızın izlemek istediğiniz her sayfasının bölümünde görünmelidir <head> . İstemci tarafı izlemeyi etkinleştirmek için bir uygulama şablonuna _Layout.cshtml JavaScript JavaScript (Web) SDK Yükleyici Betiğini ekleyin.

Projeniz içermiyorsa_Layout.cshtml, javascript JavaScript (Web) SDK Yükleyici Betiğini uygulamanızdaki tüm sayfaları denetleyen <head> eşdeğer bir dosyaya ekleyerek istemci tarafı izleme ekleyebilirsiniz. Alternatif olarak, JavaScript (Web) SDK Yükleyici Betiğini birden çok sayfaya ekleyebilirsiniz, ancak bunu önermeyiz.

Not

JavaScript ekleme, varsayılan bir yapılandırma deneyimi sağlar. bağlantı dizesi ayarlama dışında bir yapılandırmaya ihtiyacınız varsa, açıklandığı gibi otomatik eklemeyi kaldırmanız ve JavaScript SDK'sını el ile eklemeniz gerekir.

Uygulama Analizler SDK'sını yapılandırma

Varsayılan yapılandırmayı değiştirmek için ASP.NET Core için Application Analizler SDK'sını özelleştirebilirsiniz. Uygulama Analizler ASP.NET SDK'sı kullanıcıları kullanarak ApplicationInsights.config veya değiştirerek yapılandırmayı değiştirme TelemetryConfiguration.Activekonusunda bilgi sahibi olabilir. ASP.NET Core için, aksi yönde yönlendirilmedikçe sınıfınızın Startup.cs yönteminde ConfigureServices() neredeyse tüm yapılandırma değişikliklerini yapın. Aşağıdaki bölümlerde daha fazla bilgi sunulmaktadır.

Not

ASP.NET Core uygulamalarında yapılandırmayı değiştirerek TelemetryConfiguration.Active değiştirmek desteklenmez.

Application Analizler ServiceOptions kullanma

Aşağıdaki örnekte olduğu gibi öğesine geçirerek ApplicationInsightsServiceOptionsAddApplicationInsightsTelemetrybirkaç yaygın ayarı değiştirebilirsiniz:

var builder = WebApplication.CreateBuilder(args);

var aiOptions = new Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions();

// Disables adaptive sampling.
aiOptions.EnableAdaptiveSampling = false;

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

builder.Services.AddApplicationInsightsTelemetry(aiOptions);
var app = builder.Build();

Bu tabloda ayarların tam listesi vardır ApplicationInsightsServiceOptions :

Ayar Açıklama Varsayılan
EnablePerformanceCounterCollectionModule etkinleştirin/devre dışı bırakın PerformanceCounterCollectionModule. True
EnableRequestTrackingTelemetryModule etkinleştirin/devre dışı bırakın RequestTrackingTelemetryModule. True
EnableEventCounterCollectionModule etkinleştirin/devre dışı bırakın EventCounterCollectionModule. True
EnableDependencyTrackingTelemetryModule etkinleştirin/devre dışı bırakın DependencyTrackingTelemetryModule. True
EnableAppServicesHeartbeatTelemetryModule etkinleştirin/devre dışı bırakın AppServicesHeartbeatTelemetryModule. True
EnableAzureInstanceMetadataTelemetryModule etkinleştirin/devre dışı bırakın AzureInstanceMetadataTelemetryModule. True
EnableQuickPulseMetricStream LiveMetrics özelliğini etkinleştirin/devre dışı bırakın. True
EnableAdaptiveSampling Uyarlamalı Örneklemeyi Etkinleştirme/Devre Dışı Bırakma. True
EnableHeartbeat Sinyaller özelliğini etkinleştirin/devre dışı bırakın. Belirli aralıklarla (varsayılan olarak 15 dk) .NET sürümü ve varsa Azure ortam bilgileri gibi çalışma zamanı hakkında bilgiler içeren adlı HeartbeatState özel bir ölçüm gönderir. True
AddAutoCollectedMetricExtractor öğesini AutoCollectedMetrics extractoretkinleştirin/devre dışı bırakın. Bu telemetri işlemcisi, örnekleme gerçekleşmeden önce istekler/bağımlılıklar hakkında önceden toplanmış ölçümler gönderir. True
RequestCollectionOptions.TrackExceptions İstek toplama modülü tarafından işlenmeyen özel durum izleme raporlamasını etkinleştirin/devre dışı bırakın. içinde netstandard2.0 false (özel durumlar ile ApplicationInsightsLoggerProviderizlendiği için). Aksi takdirde true.
EnableDiagnosticsTelemetryModule etkinleştirin/devre dışı bırakın DiagnosticsTelemetryModule. Devre dışı bırakmak, aşağıdaki ayarların yoksayılmasına neden olur: EnableHeartbeat, EnableAzureInstanceMetadataTelemetryModuleve EnableAppServicesHeartbeatTelemetryModule. True

En güncel liste için içindeki yapılandırılabilir ayarlara ApplicationInsightsServiceOptionsbakın.

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

Microsoft.Application'da Analizler. AspNetCore SDK'sı sürüm 2.15.0 ve üzeri, dahil olmak üzere ConnectionStringiçinde ApplicationInsightsServiceOptionskullanılabilir olan tüm ayarları yapılandırın. Uygulamanın IConfiguration örneğini kullanın. Ayarlar, aşağıdaki örnekte gösterildiği gibi bölümünün ApplicationInsightsaltında olmalıdır. appsettings.json'in aşağıdaki bölümünde bağlantı dizesi yapılandırılır ve uyarlamalı örnekleme ve performans sayacı koleksiyonu devre dışı bırakılır.

{
    "ApplicationInsights": {
    "ConnectionString": "Copy connection string from Application Insights Resource Overview",
    "EnableAdaptiveSampling": false,
    "EnablePerformanceCounterCollectionModule": false
    }
}

ASP.NET Core 6.0 veya services.AddApplicationInsightsTelemetry(aiOptions) ASP.NET Core 3.1 ve önceki sürümler için kullanılıyorsabuilder.Services.AddApplicationInsightsTelemetry(aiOptions), içinden Microsoft.Extensions.Configuration.IConfigurationayarları geçersiz kılar.

Örnekleme

ASP.NET Core için Application Analizler SDK'sı hem sabit hızlı hem de uyarlamalı örneklemeyi destekler. Varsayılan olarak uyarlamalı örnekleme etkinleştirilir.

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

TelemetryInitializers ekleme

Telemetriyi daha fazla bilgiyle zenginleştirmek istediğinizde telemetri başlatıcılarını kullanın.

Aşağıdaki kodda DependencyInjection gösterildiği gibi kapsayıcıya herhangi bir yeni TelemetryInitializer ekleyin. SDK, kapsayıcıya DependencyInjection eklenenleri otomatik olarak alırTelemetryInitializer.

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddSingleton<ITelemetryInitializer, MyCustomTelemetryInitializer>();

var app = builder.Build();

Not

builder.Services.AddSingleton<ITelemetryInitializer, MyCustomTelemetryInitializer>(); basit başlatıcılar için çalışır. Diğerleri builder.Services.AddSingleton(new MyCustomTelemetryInitializer() { fieldName = "myfieldName" }); için gereklidir.

TelemetryInitializers'ı kaldırma

Varsayılan olarak telemetri başlatıcıları vardır. Telemetri başlatıcılarının tümünü veya belirli bir öğesini kaldırmak için çağrısı AddApplicationInsightsTelemetry()yaptıktan sonra aşağıdaki örnek kodu kullanın.

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddApplicationInsightsTelemetry();

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

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

var app = builder.Build();

Telemetri işlemcileri ekleme

üzerinde IServiceCollectionuzantı yöntemini AddApplicationInsightsTelemetryProcessor kullanarak özel TelemetryConfiguration telemetri işlemcileri ekleyebilirsiniz. Gelişmiş filtreleme senaryolarında telemetri işlemcileri kullanırsınız. Şu örneği kullanın:

var builder = WebApplication.CreateBuilder(args);

// ...
builder.Services.AddApplicationInsightsTelemetry();
builder.Services.AddApplicationInsightsTelemetryProcessor<MyFirstCustomTelemetryProcessor>();

// If you have more processors:
builder.Services.AddApplicationInsightsTelemetryProcessor<MySecondCustomTelemetryProcessor>();

var app = builder.Build();

Varsayılan Telemetri Modüllerini yapılandırma veya kaldırma

Uygulama Analizler, kullanıcı tarafından el ile izlemeye gerek kalmadan belirli iş yükleriyle ilgili telemetri verilerini otomatik olarak toplar.

Varsayılan olarak, aşağıdaki otomatik toplama modülleri etkinleştirilir. Bu modüller telemetri verilerini otomatik olarak toplamakla sorumludur. Varsayılan davranışlarını değiştirmek için bunları devre dışı bırakabilir veya yapılandırabilirsiniz.

  • RequestTrackingTelemetryModule: Gelen web isteklerinden RequestTelemetry toplar.
  • DependencyTrackingTelemetryModule: Giden HTTP çağrılarından ve SQL çağrılarından DependencyTelemetry toplar.
  • PerformanceCollectorModule: Windows PerformanceCounters'i toplar.
  • QuickPulseTelemetryModule: Canlı Ölçümler portalında gösterilecek telemetri verilerini toplar.
  • AppServicesHeartbeatTelemetryModule: Uygulamanın barındırıldığı App Service ortamı hakkında sinyalleri (özel ölçümler olarak gönderilir) toplar.
  • AzureInstanceMetadataTelemetryModule: Uygulamanın barındırıldığı Azure VM ortamı hakkında sinyalleri (özel ölçümler olarak gönderilir) toplar.
  • EventCounterCollectionModule: EventCounter'ları toplar. Bu modül yeni bir özelliktir ve SDK 2.8.0 ve sonraki sürümlerde kullanılabilir.

Herhangi bir varsayılan TelemetryModuleyapılandırmak için, aşağıdaki örnekte gösterildiği gibi üzerinde IServiceCollectionuzantı yöntemini ConfigureTelemetryModule<T> kullanın:

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

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddApplicationInsightsTelemetry();

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

// The following removes all default counters from EventCounterCollectionModule, and adds a single one.
builder.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 = builder.Services.FirstOrDefault<ServiceDescriptor>(t => t.ImplementationType == typeof(PerformanceCollectorModule));
if (performanceCounterService != null)
{
    builder.Services.Remove(performanceCounterService);
}

var app = builder.Build();

2.12.2 ve sonraki sürümlerde, ApplicationInsightsServiceOptions varsayılan modüllerden herhangi birini devre dışı bırakmak için kolay bir seçenek içerir.

Telemetri kanalını yapılandırma

Varsayılan telemetri kanalı şeklindedir ServerTelemetryChannel. Aşağıdaki örnekte nasıl geçersiz kılınacak gösterilmektedir.

using Microsoft.ApplicationInsights.Channel;

var builder = WebApplication.CreateBuilder(args);

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

builder.Services.AddApplicationInsightsTelemetry();

var app = builder.Build();

Not

Arabelleği temizlemek istiyorsanız bkz . Verileri temizleme. Örneğin, SDK'yı kapatan bir uygulamada kullanıyorsanız arabelleği temizlemeniz gerekebilir.

Telemetriyi dinamik olarak devre dışı bırakma

Telemetriyi koşullu ve dinamik olarak devre dışı bırakmak istiyorsanız, örneği kodunuzun TelemetryConfiguration herhangi bir yerinde ASP.NET Core bağımlılık ekleme kapsayıcısıyla çözümleyebilir ve üzerinde bayrağını ayarlayabilirsiniz DisableTelemetry .

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddApplicationInsightsTelemetry();

// any custom configuration can be done here:
builder.Services.Configure<TelemetryConfiguration>(x => x.DisableTelemetry = true);

var app = builder.Build();

Yukarıdaki kod örneği, Telemetrinin Uygulama Analizler gönderilmesini engeller. Hiçbir otomatik toplama modülünün telemetri toplamasını engellemez. Belirli bir otomatik toplama modülünü kaldırmak istiyorsanız bkz . Telemetri modülünü kaldırma.

Sık sorulan sorular

Bu bölüm, sık sorulan soruların yanıtlarını sağlar.

Uygulama Analizler ASP.NET Core 3.1'i destekliyor mu?

ASP.NET Core 3.1 artık Microsoft tarafından desteklenmiyor.

ASP.NET Core sürüm 2.8.0 ve Visual Studio 2019 veya üzeri için Uygulama Analizler SDK'sı ASP.NET Core 3.1 uygulamalarıyla kullanılabilir.

Otomatik olarak toplanmayan telemetri verilerini nasıl izleyebilirim?

Oluşturucu ekleme kullanarak bir örneğini TelemetryClient alın ve gerekli yöntemi üzerinde çağırın TrackXXX() . ASP.NET Core uygulamasında yeni TelemetryClient veya TelemetryConfiguration örnek oluşturmanızı önermiyoruz. Tekil örneği TelemetryClient , telemetrinin DependencyInjection geri kalanıyla paylaşan TelemetryConfiguration kapsayıcıda zaten kayıtlıdır. Yalnızca telemetrinin geri kalanından ayrı bir yapılandırma gerekiyorsa yeni TelemetryClient bir örnek oluşturun.

Aşağıdaki örnekte bir denetleyiciden daha fazla telemetrinin nasıl izlenir gösterilmektedir.

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. Application Analizler özel ölçümler API başvurusu. Benzer bir yaklaşım, GetMetric API'sini kullanarak Application Analizler'a özel ölçümler göndermek için kullanılabilir.

telemetrimdeki İstek ve Yanıt gövdesini Nasıl yaparım? yakalama?

ASP.NET Core, aracılığıyla ILoggerHTTP İsteği/Yanıt bilgilerini (gövde dahil) günlüğe kaydetmeye yönelik yerleşik desteğe sahiptir. Bunu kullanmanız önerilir. Bu, telemetride kişisel olarak tanımlanabilir bilgileri (PII) ortaya çıkarabilir ve maliyetlerin (performans maliyetleri ve Uygulama Analizler faturalama) önemli ölçüde artmasına neden olabilir, bu nedenle bunu kullanmadan önce riskleri dikkatlice değerlendirin.

ILogger günlükleri koleksiyonunu özelleştirmek Nasıl yaparım??

Uygulama Analizler için varsayılan ayar yalnızca Uyarı ve daha ciddi günlükleri yakalamaktır.

Uygulama Analizler sağlayıcısının günlük yapılandırmasını aşağıdaki gibi değiştirerek Bilgileri ve daha az ciddi günlükleri yakalayın.

{
  "Logging": {
    "LogLevel": {
      "Default": "Information"
    },
    "ApplicationInsights": {
      "LogLevel": {
        "Default": "Information"
      }
    }
  },
  "ApplicationInsights": {
    "ConnectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000"
  }
}

Aşağıdaki örneğin Uygulama Analizler sağlayıcısının günlükleri yakalamasına Information neden olmadığını unutmayın. SDK yalnızca Warning günlükleri ve daha ciddi günlükleri ApplicationInsights yakalama talimatı veren bir varsayılan günlük filtresi eklediğinden bunu yakalamaz. Uygulama Analizler açık bir geçersiz kılma gerektirir.

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

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

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

Uzantı yöntemi UseApplicationInsights() hala desteklenmektedir, ancak Application Analizler SDK sürüm 2.8.0 ve sonraki sürümlerde kullanım dışı olarak işaretlenmiştir. SDK'nın bir sonraki ana sürümünde kaldırılır. Uygulama Analizler telemetrisini etkinleştirmek için, bazı yapılandırmaları denetlemek için aşırı yüklemeler sağladığından kullanınAddApplicationInsightsTelemetry(). Ayrıca, ASP.NET Core 3.X uygulamalarında services.AddApplicationInsightsTelemetry() Uygulama Analizler etkinleştirmenin tek yoludur.

ASP.NET Core uygulamamı Web Apps'e dağıtıyorum. Web Apps'ten Uygulama Analizler uzantısını etkinleştirmem gerekir mi?

SDK bu makalede gösterildiği gibi derleme zamanında yüklüyse App Service portalından Uygulama Analizler uzantısını etkinleştirmeniz gerekmez. Uzantı yüklüyse, SDK'nın zaten eklendiğini algıladığında geri döner. Uygulama Analizler uzantısından etkinleştirirseniz SDK'yı yüklemeniz ve güncelleştirmeniz gerekmez. Ancak bu makaledeki yönergeleri izleyerek Uygulama Analizler'yi etkinleştirirseniz daha fazla esneklik elde edebilirsiniz çünkü:

  • Uygulama Analizler telemetrisi şu durumlarda çalışmaya devam eder:
    • Windows, Linux ve Mac dahil olmak üzere tüm işletim sistemleri.
    • Bağımsız veya çerçeveye bağımlı da dahil olmak üzere tüm yayımlama modları.
    • Tam .NET Framework dahil olmak üzere tüm hedef çerçeveler.
    • Web Apps, VM'ler, Linux, kapsayıcılar, AKS 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.
  • Visual Studio'dan hata ayıklarken telemetriyi yerel olarak görebilirsiniz.
  • API'yi kullanarak TrackXXX() daha fazla özel telemetri izleyebilirsiniz.
  • Yapılandırma üzerinde tam denetime sahipsiniz.

Azure İzleyici Uygulama Analizler Aracısı (eski adıYla Durum İzleyicisi v2) gibi araçları kullanarak Uygulama Analizler izlemeyi etkinleştirebilir miyim?

Evet. Application Analizler Agent 2.0.0-beta1 ve sonraki sürümlerinde IIS'de barındırılan ASP.NET Core uygulamaları desteklenir.

Uygulamamı Linux'ta çalıştırırsam tüm özellikler destekleniyor mu?

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

Bu SDK Çalışan Hizmetleri için destekleniyor mu?

Hayır Çalışan hizmetleri için Çalışan Hizmeti uygulamaları (HTTP olmayan uygulamalar) için Uygulama Analizler kullanın.

SDK'yi nasıl kaldırabilirim?

Uygulama Analizler kaldırmak için uygulamanızdaki API'den NuGet paketlerini ve başvurularını kaldırmanız gerekir. Visual Studio'daki NuGet Paket Yöneticisi kullanarak NuGet paketlerini kaldırabilirsiniz.

Not

Bu yönergeler ASP.NET Core SDK'sını kaldırmaya yöneliktir. ASP.NET SDK'sını kaldırmanız gerekiyorsa bkz . ASP.NET SDK'sını nasıl kaldırabilirim?.

  1. Microsoft.Application Analizler'yi kaldırın. NuGet Paket Yöneticisi kullanarak AspNetCore paketi.
  2. Uygulama Analizler tamamen kaldırmak için, eklenen kodu veya dosyaları ve projenize eklediğiniz API çağrılarını denetleyin ve el ile silin. Daha fazla bilgi için bkz. Uygulama Analizler SDK'sını eklediğinizde ne oluşturulur?.

Uygulama Analizler SDK'sını eklediğinizde ne oluşturulur?

Uygulama Analizler projenize eklediğinizde dosyalar oluşturulur ve bazı dosyalarınıza kod eklenir. NuGet Paketlerinin yalnızca kaldırılması her zaman dosyaları ve kodu atmaz. Uygulama Analizler tamamen kaldırmak için, eklenen kodu veya dosyaları ve projenize eklediğiniz API çağrılarını el ile denetlemeniz ve silmeniz gerekir.

Visual Studio ASP.NET Core şablon projesine Application Analizler Telemetrisi eklediğinizde aşağıdaki kodu ekler:

  • [Projenizin adı].csproj

      <PropertyGroup>
        <TargetFramework>netcoreapp3.1</TargetFramework>
        <ApplicationInsightsResourceId>/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Default-ApplicationInsights-EastUS/providers/microsoft.insights/components/WebApplication4core</ApplicationInsightsResourceId>
      </PropertyGroup>
    
      <ItemGroup>
        <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.12.0" />
      </ItemGroup>
    
      <ItemGroup>
        <WCFMetadata Include="Connected Services" />
      </ItemGroup>
    
  • Appsettings.json:

    "ApplicationInsights": {
        "InstrumentationKey": "00000000-0000-0000-0000-000000000000"
    
  • Bağlan edService.json

    {
      "ProviderId": "Microsoft.ApplicationInsights.ConnectedService.ConnectedServiceProvider",
      "Version": "16.0.0.0",
      "GettingStartedDocument": {
        "Uri": "https://go.microsoft.com/fwlink/?LinkID=798432"
      }
    }
    
  • Startup.cs

       public void ConfigureServices(IServiceCollection services)
            {
                services.AddRazorPages();
                services.AddApplicationInsightsTelemetry(); // This is added
            }
    

Sorun giderme

Uygulama konağınızla alma hizmeti arasındaki bağlantıyı test etme

Uygulama Analizler SDK'ları ve aracıları, alma uç noktalarımıza REST çağrıları olarak alınabilmek için telemetri gönderir. PowerShell veya curl komutlarından ham REST istemcilerini kullanarak web sunucunuzdan veya uygulama konak makinenizden alma hizmeti uç noktalarına bağlantıyı test edebilirsiniz. Bkz. Azure İzleyici Uygulama Analizler eksik uygulama telemetri sorunlarını giderme.

Açık kaynak SDK

Kodu okuyun ve koda katkıda bulunun.

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

Release Notes (Sürüm Notları)

Sürüm 2.12 ve daha yeni sürümler için: .NET SDK'ları (ASP.NET, ASP.NET Core ve Günlük Bağdaştırıcıları dahil)

Hizmet Güncelleştirmeler ayrıca önemli Uygulama Analizler iyileştirmelerini özetler.

Sonraki adımlar