Aracılığıyla paylaş


ASP.NET Core uygulamaları için Application Insights

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

Not

Aşağıdaki belgeler Application Insights klasik API'sine dayanır. Application Insights 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 ve OpenTelemetry Yol Haritamız. Geçiş kılavuzu .NET, Node.js ve Python için kullanılabilir.

Application Insights, 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 Application Insights'taki 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 Application Insights 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. Application Insights izlemesi .NET Core'un desteklendiği her yerde 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:

Application Insights 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>Application Insights Telemetrisi Ekle'ye gidin.

  3. Azure Uygulaması ication Insights>İleri'yi seçin.

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

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

  6. Application Insights'ı projenize ekledikten sonra SDK'nın en son kararlı sürümünü kullandığınızdan emin olun. Proje>NuGet Paketlerini>Yönet Microsoft.ApplicationInsights.AspNetCore'a gidin. Gerekirse Güncelleştir'i seçin.

    Güncelleştirme için Application Insights paketinin seçileceği yeri gösteren ekran görüntüsü.

Application Insights sunucu tarafı telemetrisini etkinleştirme (Visual Studio yok)

  1. ASP.NET Core için Application Insights 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 Application Insights'a akmalıdır. Application Insights SDK'sı, aşağıdaki telemetri verilerinin yanı sıra uygulamanıza gelen web isteklerini otomatik olarak toplar.

Canlı ölçümler

Canlı ölçümler , Application Insights ile uygulama izlemenin doğru yapılandırılıp yapılandırılmadığını hızla doğrulamak için kullanılabilir. Telemetrinin Azure portalında görünmesi birkaç dakika sürebilir, ancak canlı ölçümler bölmesinde çalışan işlemin CPU kullanımı neredeyse gerçek zamanlı olarak gösterilir. Ayrıca istekler, bağımlılıklar ve izlemeler gibi diğer telemetri verilerini de gösterebilir.

Herhangi bir .NET uygulaması için kod kullanarak canlı ölçümleri etkinleştirme

Not

Canlı ölçümler, .NET uygulamaları için önerilen yönergeleri kullanarak eklediğinizde varsayılan olarak etkinleştirilir.

Canlı ölçümleri el ile yapılandırmak için:

  1. Microsoft.ApplicationInsights.PerfCounterCollector NuGet paketini yükleyin.
  2. Aşağıdaki örnek konsol uygulaması kodu canlı ölçümleri ayarlamayı gösterir:
using Microsoft.ApplicationInsights;
using Microsoft.ApplicationInsights.Extensibility;
using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse;

// Create a TelemetryConfiguration instance.
TelemetryConfiguration config = TelemetryConfiguration.CreateDefault();
config.InstrumentationKey = "INSTRUMENTATION-KEY-HERE";
QuickPulseTelemetryProcessor quickPulseProcessor = null;
config.DefaultTelemetrySink.TelemetryProcessorChainBuilder
    .Use((next) =>
    {
        quickPulseProcessor = new QuickPulseTelemetryProcessor(next);
        return quickPulseProcessor;
    })
    .Build();

var quickPulseModule = new QuickPulseTelemetryModule();

// Secure the control channel.
// This is optional, but recommended.
quickPulseModule.AuthenticationApiKey = "YOUR-API-KEY-HERE";
quickPulseModule.Initialize(config);
quickPulseModule.RegisterTelemetryProcessor(quickPulseProcessor);

// Create a TelemetryClient instance. It is important
// to use the same TelemetryConfiguration here as the one
// used to set up live metrics.
TelemetryClient client = new TelemetryClient(config);

// This sample runs indefinitely. Replace with actual application logic.
while (true)
{
    // Send dependency and request telemetry.
    // These will be shown in live metrics.
    // CPU/Memory Performance counter is also shown
    // automatically without any additional steps.
    client.TrackDependency("My dependency", "target", "http://sample",
        DateTimeOffset.Now, TimeSpan.FromMilliseconds(300), true);
    client.TrackRequest("My Request", DateTimeOffset.Now,
        TimeSpan.FromMilliseconds(230), "200", true);
    Task.Delay(1000).Wait();
}

Yukarıdaki örnek bir konsol uygulamasına yöneliktir, ancak aynı kod herhangi bir .NET uygulamasında kullanılabilir. Telemetriyi otomatik olarak almak için başka telemetri modülleri etkinleştirildiyse, bu modülleri başlatmak için kullanılan yapılandırmanın canlı ölçüm modülü için de kullanıldığından emin olmak önemlidir.

ILogger günlükleri

Varsayılan yapılandırma günlükleri ve daha ciddi günlükleri ILogger Warning 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 Insights'ta 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 Insights SDK'dan itibaren 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.

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

Varsayılan yapılandırmayı değiştirmek için ASP.NET Core için Application Insights SDK'sını özelleştirebilirsiniz. Application Insights 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.

ApplicationInsightsServiceOptions kullanma

Aşağıdaki örnekte olduğu gibi öğesine geçirerek ApplicationInsightsServiceOptions AddApplicationInsightsTelemetrybirkaç 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 live metrics (also known as QuickPulse).
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.ApplicationInsights.AspNetCore SDK 2.15.0 ve üzeri için yapılandırma önerisi

Microsoft.ApplicationInsights.AspNetCore SDK'sı sürüm 2.15.0 ve sonraki sürümlerinde, içinde bulunan ApplicationInsightsServiceOptionstüm ayarları (dahil) ConnectionStringyapı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 Insights 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

Application Insights, 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 bölmesinde gösterilecek telemetriyi 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, Application Insights'a telemetri 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.

Application Insights 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 Application Insights 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 Insights'ta özel veri raporlama hakkında daha fazla bilgi için bkz . Application Insights özel ölçümler API başvurusu. Benzer bir yaklaşım, GetMetric API'sini kullanarak Application Insights'a özel ölçümler göndermek için de 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 Application Insights faturalaması) ö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??

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

Application Insights 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 Application Insights 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. Application Insights 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 Insights'ı etkinleştirmek için IWebHostBuilder'da UseApplicationInsights() uzantısı yöntemini kullandı. Bu kullanım hala geçerli mi?

Uzantı yöntemi UseApplicationInsights() hala desteklenmektedir, ancak Application Insights 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. Application Insights telemetrisini etkinleştirmek için kullanın AddApplicationInsightsTelemetry() çünkü bazı yapılandırmaları denetlemek için aşırı yüklemeler sağlar. Ayrıca ASP.NET Core 3.X uygulamalarında services.AddApplicationInsightsTelemetry() Application Insights'ı etkinleştirmenin tek yoludur.

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

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

  • Application Insights 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 Application Insights Aracısı (eski adıYla Durum İzleyicisi v2) gibi araçları kullanarak Application Insights izlemeyi etkinleştirebilir miyim?

Evet. Application Insights 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 Lütfen çalışan hizmetleri için Çalışan Hizmeti uygulamaları (HTTP olmayan uygulamalar) için Application Insights'ı kullanın.

SDK'yi nasıl kaldırabilirim?

Application Insights'ı 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. NuGet Paket Yöneticisi kullanarak Microsoft.ApplicationInsights.AspNetCore paketini kaldırın.
  2. Application Insights'ı 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. Application Insights SDK'sını eklediğinizde ne oluşturulur?

Application Insights SDK'sını eklediğinizde ne oluşturulur?

Projenize Application Insights 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. Application Insights'ı 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 Insights 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"
    
  • ConnectedService.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
            }
    

Telemetri bağıntısını nasıl devre dışı bırakabilirim?

Kodda telemetri bağıntısını devre dışı bırakmak için bkz <ExcludeComponentCorrelationHttpHeadersOnDomains> . Konsol uygulamaları için Application Insights.

Sorun giderme

Ayrılmış sorun giderme makalesine bakın.

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

Application Insights 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 Application Insights'ta eksik uygulama telemetrisi 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ştirmelerimiz büyük Application Insights geliştirmelerini de özetler.

Sonraki adımlar