Aracılığıyla paylaş


Çalışan Hizmeti uygulamaları için Application Insights (HTTP olmayan uygulamalar)

Çalışan Hizmeti için Application Insights SDK'sı, mesajlaşma, arka plan görevleri ve konsol uygulamaları gibi HTTP dışı iş yükleri için en uygun olan yeni bir SDK'dır. Bu tür uygulamalar geleneksel bir ASP.NET/ASP.NET Core web uygulaması gibi gelen HTTP isteğine sahip değildir. Bu nedenle, ASP.NET veya ASP.NET Core uygulamaları için Application Insights paketlerinin kullanılması desteklenmez.

Dikkat

Yeni uygulamalar veya müşteriler için Azure İzleyici OpenTelemetry Distro'yu öneririz, Azure İzleyici Application Insights'ı çalıştırmak için. Azure İzleyici OpenTelemetry Distro, Application Insights SDK'sı ile benzer bir işlev ve deneyim sunar. .NET, Node.js ve Python için geçiş kılavuzlarını kullanarak Application Insights SDK'sından geçiş yapmak mümkündür, ancak geriye dönük uyumluluk için birkaç özellik daha eklemeye çalışıyoruz.

Yeni SDK tek başına herhangi bir telemetri koleksiyonu yapmaz. Bunun yerine DependencyCollector, PerfCounterCollector ve ApplicationInsightsLoggingProvider gibi diğer iyi bilinen Application Insights otomatik toplayıcılarını getirir. Bu SDK, telemetri koleksiyonunu etkinleştirmek ve yapılandırmak için IServiceCollection üzerinde genişletme yöntemleri sağlar.

Desteklenen senaryolar

Çalışan Hizmeti için Application Insights SDK'sı, nerede veya nasıl çalıştırılırsa çalışsın HTTP olmayan uygulamalar için en uygun yöntemdir. Uygulamanız çalışıyorsa ve Azure'a ağ bağlantısı varsa telemetri toplanabilir. .NET Core'un desteklendiği her yerde Application Insights izlemesi desteklenir. Bu paket, yeni kullanıma sunulan .NET Core Çalışan Hizmeti, ASP.NET Core'daki arka plan görevleri ve .NET Core ve .NET Framework gibi konsol uygulamalarında kullanılabilir.

Önkoşullar

Geçerli bir Application Insights bağlantı dizesi sahip olmanız gerekir. Bu dize, Application Insights'a telemetri göndermek için gereklidir. bağlantı dizesi almak için yeni bir Application Insights kaynağı oluşturmanız gerekiyorsa bkz. Bağlantı Dizeleri.

Not

31 Mart 2025'te araç anahtarı kullanı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. Bağlantı dizelerine geçiş yaparak yeni özelliklerden yararlanın.

Çalışan Hizmeti için Application Insights SDK'sını kullanma

  1. Uygulamaya Microsoft.ApplicationInsights.WorkerService paketini yükleyin. Aşağıdaki kod parçacığı, projenizin .csproj dosyasına eklenmesi gereken değişiklikleri gösterir:

        <ItemGroup>
            <PackageReference Include="Microsoft.ApplicationInsights.WorkerService" Version="2.22.0" />
        </ItemGroup>
    
  2. Bağlantı dizesini APPLICATIONINSIGHTS_CONNECTION_STRING ortam değişkeninde veya yapılandırmada (appsettings.json) yapılandırın.

    Application Insights'a genel bakış ve bağlantı dizesi gösteren ekran görüntüsü.

  3. ILogger veya TelemetryClient örneğini, Bağımlılık Enjeksiyonu (DI) kapsayıcısından serviceProvider.GetRequiredService<TelemetryClient>(); kullanarak ya da Oluşturucu Enjeksiyonu ile alın. Bu adım, TelemetryConfiguration ve otomatik toplama modüllerinin ayarlanmasını tetikler.

Her uygulama türü için belirli yönergeler aşağıdaki bölümlerde açıklanmıştır.

.NET Core Çalışan Hizmeti uygulaması

Tam örnek NuGet web sitesinde paylaşılır.

  1. .NET SDK'sını indirip yükleyin.

  2. Visual Studio yeni proje şablonunu veya komut satırını dotnet new workerkullanarak yeni bir Çalışan Hizmeti projesi oluşturun.

  3. Uygulamaya Microsoft.ApplicationInsights.WorkerService paketini ekleyin.

  4. Örnekte olduğu gibi, sınıfınızdaki services.AddApplicationInsightsTelemetryWorkerService(); içindeki CreateHostBuilder() yöntemine Program.cs ekleyin:

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureServices((hostContext, services) =>
                {
                    services.AddHostedService<Worker>();
                    services.AddApplicationInsightsTelemetryWorkerService();
                });
    
  5. Worker.cs'yi aşağıdaki örneğe göre değiştirin.

        using Microsoft.ApplicationInsights;
        using Microsoft.ApplicationInsights.DataContracts;
    
        public class Worker : BackgroundService
        {
            private readonly ILogger<Worker> _logger;
            private TelemetryClient _telemetryClient;
            private static HttpClient _httpClient = new HttpClient();
    
            public Worker(ILogger<Worker> logger, TelemetryClient tc)
            {
                _logger = logger;
                _telemetryClient = tc;
            }
    
            protected override async Task ExecuteAsync(CancellationToken stoppingToken)
            {
                while (!stoppingToken.IsCancellationRequested)
                {
                    _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
    
                    using (_telemetryClient.StartOperation<RequestTelemetry>("operation"))
                    {
                        _logger.LogWarning("A sample warning message. By default, logs with severity Warning or higher is captured by Application Insights");
                        _logger.LogInformation("Calling bing.com");
                        var res = await _httpClient.GetAsync("https://bing.com");
                        _logger.LogInformation("Calling bing completed with status:" + res.StatusCode);
                        _telemetryClient.TrackEvent("Bing call event completed");
                    }
    
                    await Task.Delay(1000, stoppingToken);
                }
            }
        }
    
  6. Bağlantı dizesini kurun.

    Application Insights'a genel bakış ve bağlantı dizesi gösteren ekran görüntüsü.

    Not

    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.

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

Alternatif olarak, ortam değişkenindeki APPLICATIONINSIGHTS_CONNECTION_STRING bağlantı dizesi belirtin.

Genellikle, APPLICATIONINSIGHTS_CONNECTION_STRING web uygulamalarına web işleri şeklinde dağıtılan uygulamalar için bağlantı dizesini belirler.

Not

Kodda belirtilen bir bağlantı dizesi, diğer seçeneklerden öncelikli olan ortam değişkenine APPLICATIONINSIGHTS_CONNECTION_STRINGgöre önceliklidir.

barındırılan hizmetlerle ASP.NET Temel arka plan görevleri

Bu belgede , ASP.NET Core uygulamasında arka plan görevlerinin nasıl oluşturulacağı açıklanır.

Tam örnek bu GitHub sayfasında paylaşılır.

  1. Uygulamaya Microsoft.ApplicationInsights.WorkerService paketini yükleyin.

  2. services.AddApplicationInsightsTelemetryWorkerService();'yı, bu örnekte olduğu gibi ConfigureServices() yöntemine ekleyin:

        public static async Task Main(string[] args)
        {
            var host = new HostBuilder()
                .ConfigureAppConfiguration((hostContext, config) =>
                {
                    config.AddJsonFile("appsettings.json", optional: true);
                })
                .ConfigureServices((hostContext, services) =>
                {
                    services.AddLogging();
                    services.AddHostedService<TimedHostedService>();
    
                    // connection string is read automatically from appsettings.json
                    services.AddApplicationInsightsTelemetryWorkerService();
                })
                .UseConsoleLifetime()
                .Build();
    
            using (host)
            {
                // Start the host
                await host.StartAsync();
    
                // Wait for the host to shutdown
                await host.WaitForShutdownAsync();
            }
        }
    

    Aşağıdaki kod, TimedHostedServicearka plan görev mantığının bulunduğu içindir:

        using Microsoft.ApplicationInsights;
        using Microsoft.ApplicationInsights.DataContracts;
    
        public class TimedHostedService : IHostedService, IDisposable
        {
            private readonly ILogger _logger;
            private Timer _timer;
            private TelemetryClient _telemetryClient;
            private static HttpClient httpClient = new HttpClient();
    
            public TimedHostedService(ILogger<TimedHostedService> logger, TelemetryClient tc)
            {
                _logger = logger;
                this._telemetryClient = tc;
            }
    
            public Task StartAsync(CancellationToken cancellationToken)
            {
                _logger.LogInformation("Timed Background Service is starting.");
    
                _timer = new Timer(DoWork, null, TimeSpan.Zero,
                    TimeSpan.FromSeconds(1));
    
                return Task.CompletedTask;
            }
    
            private void DoWork(object state)
            {
                _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
    
                using (_telemetryClient.StartOperation<RequestTelemetry>("operation"))
                {
                    _logger.LogWarning("A sample warning message. By default, logs with severity Warning or higher is captured by Application Insights");
                    _logger.LogInformation("Calling bing.com");
                    var res = httpClient.GetAsync("https://bing.com").GetAwaiter().GetResult();
                    _logger.LogInformation("Calling bing completed with status:" + res.StatusCode);
                    _telemetryClient.TrackEvent("Bing call event completed");
                }
            }
        }
    
  3. Bağlantı dizesini kurun. Önceki appsettings.json Çalışan Hizmeti örneğinde de aynısını kullanın.

.NET Core/.NET Framework konsol uygulaması

Bu makalenin başında belirtildiği gibi yeni paket, normal bir konsol uygulamasından bile Application Insights telemetrisini etkinleştirmek için kullanılabilir. Bu paket netstandard2.0 şu platformları hedefler, bu nedenle .NET Core veya üzeri ve .NET Framework veya üzeri konsol uygulamaları için kullanılabilir.

Tam örnek bu GitHub sayfasında paylaşılır.

  1. Uygulamaya Microsoft.ApplicationInsights.WorkerService paketini yükleyin.

  2. Aşağıdaki örnekte gösterildiği gibi Program.cs değiştirin:

        using Microsoft.ApplicationInsights;
        using Microsoft.ApplicationInsights.DataContracts;
        using Microsoft.ApplicationInsights.WorkerService;
        using Microsoft.Extensions.DependencyInjection;
        using Microsoft.Extensions.Logging;
        using System;
        using System.Net.Http;
        using System.Threading.Tasks;
    
        namespace WorkerSDKOnConsole
        {
            class Program
            {
                static async Task Main(string[] args)
                {
                    // Create the DI container.
                    IServiceCollection services = new ServiceCollection();
    
                    // Being a regular console app, there is no appsettings.json or configuration providers enabled by default.
                    // Hence instrumentation key/ connection string and any changes to default logging level must be specified here.
                    services.AddLogging(loggingBuilder => loggingBuilder.AddFilter<Microsoft.Extensions.Logging.ApplicationInsights.ApplicationInsightsLoggerProvider>("Category", LogLevel.Information));
                    services.AddApplicationInsightsTelemetryWorkerService((ApplicationInsightsServiceOptions options) => options.ConnectionString = "InstrumentationKey=<instrumentation key here>");
    
                    // To pass a connection string
                    // - aiserviceoptions must be created
                    // - set connectionstring on it
                    // - pass it to AddApplicationInsightsTelemetryWorkerService()
    
                    // Build ServiceProvider.
                    IServiceProvider serviceProvider = services.BuildServiceProvider();
    
                    // Obtain logger instance from DI.
                    ILogger<Program> logger = serviceProvider.GetRequiredService<ILogger<Program>>();
    
                    // Obtain TelemetryClient instance from DI, for additional manual tracking or to flush.
                    var telemetryClient = serviceProvider.GetRequiredService<TelemetryClient>();
    
                    var httpClient = new HttpClient();
    
                    while (true) // This app runs indefinitely. Replace with actual application termination logic.
                    {
                        logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
    
                        // Replace with a name which makes sense for this operation.
                        using (telemetryClient.StartOperation<RequestTelemetry>("operation"))
                        {
                            logger.LogWarning("A sample warning message. By default, logs with severity Warning or higher is captured by Application Insights");
                            logger.LogInformation("Calling bing.com");                    
                            var res = await httpClient.GetAsync("https://bing.com");
                            logger.LogInformation("Calling bing completed with status:" + res.StatusCode);
                            telemetryClient.TrackEvent("Bing call event completed");
                        }
    
                        await Task.Delay(1000);
                    }
    
                    // Explicitly call Flush() followed by sleep is required in console apps.
                    // This is to ensure that even if application terminates, telemetry is sent to the back-end.
                    telemetryClient.Flush();
                    Task.Delay(5000).Wait();
                }
            }
        }
    

Bu konsol uygulaması aynı varsayılanı TelemetryConfigurationda kullanır. Önceki bölümlerdeki örneklerle aynı şekilde özelleştirilebilir.

Uygulamanızı çalıştırma

Uygulamanızı çalıştırın. Önceki tüm örneklerde çalışanlar, bing.com'a her saniye bir HTTP çağrısı yapmaktadır ve ILogger kullanarak birkaç günlük de yaymaktadır. Bu satırlar, bir işlem oluşturmak için kullanılan StartOperation çağrısının TelemetryClient içinde yer alır. Bu örnekte, RequestTelemetry "operation" olarak adlandırılır.

Application Insights bu ILogger günlüklerini uyarı veya varsayılan olarak daha yüksek önem derecesine ve bağımlılıklara sahip olarak toplar. Üst-alt ilişkisiyle RequestTelemetry ile ilişkilidir. Korelasyon, süreç/ağ sınırları arasında da çalışır. Örneğin, çağrı başka bir izlenen bileşene yapıldıysa, bu üst öğeyle de bağıntılı olur.

bu özel işlemi RequestTelemetry , tipik bir web uygulamasında gelen web isteğinin eşdeğeri olarak düşünülebilir. İşlem kullanmak gerekli değildir, ancak Application Insights bağıntı veri modeline en uygun olanıdır. RequestTelemetry üst işlem olarak davranır ve çalışan yinelemesi içinde oluşturulan her telemetri mantıksal olarak aynı işleme ait olarak değerlendirilir.

Bu yaklaşım, otomatik ve el ile oluşturulan tüm telemetri verilerinin aynı operation_idolmasını da sağlar. Örnekleme temel operation_idalındığından, örnekleme algoritması tek bir yinelemedeki tüm telemetri verilerini tutar veya bırakır.

Aşağıdaki bölümlerde Application Insights tarafından otomatik olarak toplanan tam telemetri listesi yer almaktadır.

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.

ILogger günlükleri

ILogger iletilen ve Uyarı veya daha yüksek önem derecesine sahip günlükler otomatik olarak yakalanır. Bu davranışı değiştirmek için, aşağıdaki kodda gösterildiği gibi sağlayıcı ApplicationInsightsiçin günlüğe kaydetme yapılandırmasını açıkça geçersiz kılın. Aşağıdaki yapılandırma, Application Insights'ın tüm Information günlükleri ve daha ciddi günlükleri yakalamasını sağlar.

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

Application Insights sağlayıcısının Information günlükleri yakalamasına aşağıdaki örneğin neden olmadığını unutmayın. SDK yalnızca ApplicationInsights günlükleri ve daha ciddi günlükleri Warning 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"
    }
  }
}

Not

Application Insights, koddaki ConfigureLogging(...) aracılığıyla yapılandırılan günlük seviyelerine saygı gösterir. Yalnızca appsettings.json kullanılıyorsa ve ConfigureLogging açıkça geçersiz kılınmıyorsa, varsayılan günlük düzeyi Uyarı'dır.

Daha fazla bilgi için, Application Insights tarafından yakalanan günlük düzeylerini özelleştirmek için ILogger belgelerini izleyin.

Bağımlılıklar

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

EventCounter

EventCounterCollectionModulevarsayılan olarak etkindir ve .NET uygulamalarından varsayılan bir sayaç kümesi toplar. EventCounter öğreticisinde, toplanan varsayılan sayaç kümesi listelenir. Ayrıca, listenin nasıl özelleştirileceğine ilişkin yönergeler de vardır.

Diğer telemetri verilerini el ile izleme

SDK, açıklandığı gibi telemetriyi otomatik olarak toplasa da, çoğu durumda Application Insights'a başka telemetri göndermeniz gerekir. Diğer telemetri verilerini izlemenin önerilen yolu, Bağımlılık Ekleme'den bir örneğini TelemetryClient almak ve ardından bunun üzerinde desteklenen TrackXXX()API yöntemlerinden birini çağırmaktır. Bir diğer tipik kullanım örneği de işlemlerin özel olarak izlenmesidir. Bu yaklaşım önceki çalışan örneklerinde gösterilmiştir.

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

Çalışan Hizmeti SDK'sı tarafından kullanılan varsayılan TelemetryConfiguration, ASP.NET veya ASP.NET Core uygulamasında kullanılan otomatik yapılandırmaya benzer, ancak HttpContext'den gelen telemetriyi zenginleştirmek için kullanılan telemetri başlatıcıları hariç tutulur.

Varsayılan yapılandırmayı değiştirmek için Çalışan Hizmeti için Application Insights SDK'sını özelleştirebilirsiniz. Application Insights ASP.NET Core SDK'sı kullanıcıları, ASP.NET Core yerleşik bağımlılık ekleme kullanarak yapılandırmayı değiştirme konusunda bilgi sahibi olabilir. Çalışan Hizmeti SDK'sı da benzer ilkeleri temel alır. Sonraki bölümde ayrıntılı olarak açıklandığı gibi, ConfigureServices() üzerinde uygun yöntemleri çağırarak IServiceCollection bölümünde neredeyse tüm yapılandırma değişikliklerini yapın.

Not

Bu SDK'yı kullandığınızda, TelemetryConfiguration.Active değiştirilerek yapılandırma değişikliği yapmak desteklenmez ve değişiklikler yansıtılmaz.

ApplicationInsightsServiceOptions'u kullanma

Aşağıdaki örnekte olduğu gibi, ApplicationInsightsServiceOptions öğesini AddApplicationInsightsTelemetryWorkerService öğesine geçirerek birkaç yaygın ayarı değiştirebilirsiniz.

using Microsoft.ApplicationInsights.WorkerService;

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

    // Disables live metrics (also known as QuickPulse).
    aiOptions.EnableQuickPulseMetricStream = false;
    services.AddApplicationInsightsTelemetryWorkerService(aiOptions);
}

Bu SDK'daki ApplicationInsightsServiceOptions, ASP.NET Core SDK'sındaki Microsoft.ApplicationInsights.WorkerService'nin aksine Microsoft.ApplicationInsights.AspNetCore.Extensions ad alanındadır.

Aşağıdaki tabloda, içinde ApplicationInsightsServiceOptionsyaygın olarak kullanılan ayarlar listelenir.

Ayar Açıklama Varsayılan
Hızlı Nabız Metrik Akışını Etkinleştir Canlı ölçümler özelliğini etkinleştirin/devre dışı bırakın. Doğru
Uyarlanabilir Örneklemeyi Etkinleştir Uyarlamalı Örneklemeyi Etkinleştir/Devre Dışı Bırak. Doğru
EtkinleştirKalpAtışı Sinyaller özelliğini aç/kapat; bu özellik, belirtilen aralıklarla (varsayılan olarak 15 dk), çalışma zamanı hakkında .NET sürümü ve Azure ortamı gibi bilgiler içeren "HeartBeatState" adlı özel bir ölçüm gönderir. Doğru
Otomatik Toplanan Metrik Çıkarıcı Ekle Örnekleme gerçekleşmeden önce İstekler/Bağımlılıklar hakkında önceden toplanmış ölçümler gönderen bir telemetri işlemcisi olan AutoCollectedMetrics ayıklayıcısını etkinleştirin/devre dışı bırakın. Doğru
Tanılama Telemetri Modülünü Etkinleştir etkinleştirin/devre dışı bırakın DiagnosticsTelemetryModule. Bu ayarın devre dışı bırakılması, aşağıdaki ayarların yoksayılmasına neden olur: EnableHeartbeat, EnableAzureInstanceMetadataTelemetryModuleve EnableAppServicesHeartbeatTelemetryModule. Doğru

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

Örnekleme

Çalışan Hizmeti için Application Insights SDK'sı hem sabit oranlı örneklemeyi hem de uyarlamalı örneklemeyi destekler. Uyarlamalı örnekleme varsayılan olarak etkindir. Örnekleme, EnableAdaptiveSampling seçeneği ApplicationInsightsServiceOptions kullanılarak devre dışı bırakılabilir.

Diğer örnekleme ayarlarını yapılandırmak için aşağıdaki örneği kullanabilirsiniz:

using Microsoft.ApplicationInsights.AspNetCore.Extensions;
using Microsoft.ApplicationInsights.Extensibility;

var builder = WebApplication.CreateBuilder(args);

builder.Services.Configure<TelemetryConfiguration>(telemetryConfiguration =>
{
   var telemetryProcessorChainBuilder = telemetryConfiguration.DefaultTelemetrySink.TelemetryProcessorChainBuilder;

   // Using adaptive sampling
   telemetryProcessorChainBuilder.UseAdaptiveSampling(maxTelemetryItemsPerSecond: 5);

   // Alternately, the following configures adaptive sampling with 5 items per second, and also excludes DependencyTelemetry from being subject to sampling:
   // telemetryProcessorChainBuilder.UseAdaptiveSampling(maxTelemetryItemsPerSecond:5, excludedTypes: "Dependency");
});

builder.Services.AddApplicationInsightsTelemetryWorkerService(new ApplicationInsightsServiceOptions
{
   EnableAdaptiveSampling = false,
});

var app = builder.Build();

Daha fazla bilgi için Örnekleme belgesine bakın.

Telemetri başlatıcıları ekleme

Tüm telemetri ile gönderilen özellikleri tanımlamak istediğinizde telemetri başlatıcılarını kullanın.

Kapsayıcıya DependencyInjection yeni telemetri başlatıcısı eklediğinizde, SDK bunları otomatik olarak TelemetryConfiguration öğesine ekler.

    using Microsoft.ApplicationInsights.Extensibility;

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

Telemetri başlatıcılarını kaldırma

Telemetri başlatıcıları varsayılan olarak vardır. Telemetri başlatıcılarının tümünü veya belirli bir öğesini kaldırmak için çağrısı yaptıktan sonraAddApplicationInsightsTelemetryWorkerService()kullanın.

   public void ConfigureServices(IServiceCollection services)
   {
        services.AddApplicationInsightsTelemetryWorkerService();
        // 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şlemcileri ekleme

TelemetryConfiguration üzerinde AddApplicationInsightsTelemetryProcessor için uzantı yöntemi IServiceCollection kullanarak özel telemetri işlemcileri ekleyebilirsiniz. Application Insights'a gönderdiğiniz telemetride bulunan veya dışlananlar üzerinde daha doğrudan denetim sağlamak için gelişmiş filtreleme senaryolarında telemetri işlemcileri kullanırsınız. Şu örneği kullanın:

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddApplicationInsightsTelemetryWorkerService();
        services.AddApplicationInsightsTelemetryProcessor<MyFirstCustomTelemetryProcessor>();
        // If you have more processors:
        services.AddApplicationInsightsTelemetryProcessor<MySecondCustomTelemetryProcessor>();
    }

Varsayılan telemetri modüllerini yapılandırma veya kaldırma

Application Insights, belirli iş yükleriyle ilgili telemetri verilerini el ile izlemeye gerek kalmadan otomatik olarak toplamak için telemetri modüllerini kullanır.

Aşağıdaki otomatik toplama modülleri varsayılan olarak etkindir. 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.

  • DependencyTrackingTelemetryModule
  • PerformanceCollectorModule
  • QuickPulseTelemetryModule
  • AppServicesHeartbeatTelemetryModule (Şu anda bu telemetri modülüyle ilgili bir sorun var. Geçici bir geçici çözüm için bkz . GitHub Sorunu 1689.)
  • AzureInstanceMetadataTelemetryModule

Herhangi bir varsayılan telemetri modülünü yapılandırmak için, aşağıdaki örnekte gösterildiği gibi üzerinde ConfigureTelemetryModule<T>uzantı yöntemini IServiceCollection kullanın:

    using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse;
    using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector;

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

            // The following configures QuickPulseTelemetryModule.
            // Similarly, any other default modules can be configured.
            services.ConfigureTelemetryModule<QuickPulseTelemetryModule>((module, o) =>
            {
                module.AuthenticationApiKey = "keyhere";
            });

            // 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);
            }
    }

Telemetri kanalını yapılandırma

Varsayılan kanaldır ServerTelemetryChannel. Aşağıdaki örnekte gösterildiği gibi geçersiz kılabilirsiniz:

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.AddApplicationInsightsTelemetryWorkerService();
    }

Telemetriyi dinamik olarak devre dışı bırakma

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

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

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

Örnek uygulamalar

.NET Core konsol uygulaması: .NET Core (2.0 veya üzeri) veya .NET Framework (4.7.2 veya üzeri) ile yazılmış bir konsol uygulaması kullanıyorsanız bu örneği kullanın.

ASP.NET Core'da HostedServices ile arka plan görevleri: Resmi yönergelere uygun olarak ASP.NET Core'da arka plan görevleri oluşturuyorsanız, bu örneği kullanın.

.NET Core Çalışan Hizmeti: Resmi yönergelere uygun bir .NET Çalışan Hizmeti uygulamanız varsa bu örneği kullanın.

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ı'na bakın.

Sonraki adımlar