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.

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.

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 uzantı yöntemlerini kullanıma IServiceCollection sunar.

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

Ç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. ortam değişkeninde veya yapılandırmada APPLICATIONINSIGHTS_CONNECTION_STRING (appsettings.json ) bağlantı dizesi yapılandırın.

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

  3. ILogger Bağımlılık Ekleme (DI) kapsayıcısından bir örneği veya TelemetryClient örneği çağırarak serviceProvider.GetRequiredService<TelemetryClient>(); veya Oluşturucu Ekleme'yi kullanarak alın. Bu adım, ve otomatik toplama modüllerinin ayarlanmasını TelemetryConfiguration 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. Bu örnekte olduğu CreateHostBuilder() gibi sınıfınızdaki Program.cs yöntemine ekleyinservices.AddApplicationInsightsTelemetryWorkerService();:

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureServices((hostContext, services) =>
                {
                    services.AddHostedService<Worker>();
                    services.AddApplicationInsightsTelemetryWorkerService();
                });
    
  5. Aşağıdaki örnekte olduğu gibi değiştirin Worker.cs :

        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ı dizesi ayarlayın.

    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 olarak dağıtılan uygulamalar için bağlantı dizesi belirtir.

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. Bu örnekte olduğu ConfigureServices() gibi yöntemine ekleyinservices.AddApplicationInsightsTelemetryWorkerService();:

        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ı dizesi ayarlayın. Önceki .NET Çalışan Hizmeti örneğinde de aynısını appsettings.json 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 hedeflediğinden netstandard2.0, .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 örneklerden çalışanlar, bing.com için her saniye bir HTTP çağrısı yapar ve ayrıca kullanarak ILoggerbirkaç günlük yayar. Bu satırlar, bir işlem oluşturmak için kullanılan çağrısının TelemetryClientiçinde StartOperation sarmalanı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. Bir üst-alt ilişkisiyle bağıntılı RequestTelemetry . Bağıntı, işlem/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

Üzerinden önem derecesi Uyarısı veya üzeri ile yayılan ILogger 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"
      }
    }
  }
}

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, Application Insights tarafından hangi günlük düzeylerinin yakalandığını ö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 değer, ASP.NET veya ASP.NET Core uygulamasında kullanılan otomatik yapılandırmaya benzer ve telemetriyi zenginleştirmek için kullanılan telemetri başlatıcıları çıkarılır HttpContext.

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 üzerinde IServiceCollectionuygun yöntemleri çağırarak bölümünde neredeyse tüm yapılandırma değişikliklerini ConfigureServices() yapın.

Not

Bu SDK'yı kullandığınızda, değiştirerek TelemetryConfiguration.Active yapılandırmayı değiştirmek desteklenmez ve değişiklikler yansıtılamaz.

ApplicationInsightsServiceOptions kullanma

Aşağıdaki örnekte olduğu gibi öğesine geçirerek ApplicationInsightsServiceOptions AddApplicationInsightsTelemetryWorkerServicebirkaç 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);
}

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

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

Ayar Açıklama Varsayılan
EnableQuickPulseMetricStream Canlı ölçümler özelliğini etkinleştirin/devre dışı bırakın. True
EnableAdaptiveSampling Uyarlamalı Örneklemeyi Etkinleştirme/Devre Dışı Bırakma. True
EnableHeartbeat Belirli aralıklarla (varsayılan olarak 15 dk) "HeartBeatState" adlı özel bir ölçüm gönderen Sinyaller özelliğini etkinleştirin/devre dışı bırakın; varsa çalışma zamanı hakkında .NET sürümü ve Azure ortamı gibi bilgiler gönderir. True
AddAutoCollectedMetricExtractor Ö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. True
EnableDiagnosticsTelemetryModule 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. True

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 hızlı örneklemeyi hem de uyarlamalı örneklemeyi destekler. Uyarlamalı örnekleme varsayılan olarak etkindir. Örnekleme, ApplicationInsightsServiceOptions seçeneği kullanılarak EnableAdaptiveSampling 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.AddApplicationInsightsTelemetry(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 yeni telemetri başlatıcısı DependencyInjection eklediğinizde SDK bunları otomatik olarak öğesine TelemetryConfigurationekler.

    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ı AddApplicationInsightsTelemetryWorkerService()yaptıktan sonra aşağıdaki örnek kodu 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

üzerinde IServiceCollectionuzantı yöntemini AddApplicationInsightsTelemetryProcessor kullanarak özel TelemetryConfiguration 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 IServiceCollectionuzantı yöntemini ConfigureTelemetryModule<T> 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 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 .

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

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

Sık sorulan sorular

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

Hangi paketi kullanmalıyım?

.NET Core uygulama senaryosu Paket
HostedServices olmadan WorkerService
HostedServices ile AspNetCore (WorkerService değil)
HostedServices ile yalnızca HostedServices'i izleme WorkerService (nadir senaryo)

AspNetCore paketini kullanan bir .NET Core uygulaması içindeki HostedServices uygulamasına TelemetryClient eklenmiş olabilir mi?

Evet. Yapılandırma, web uygulamasının geri kalanıyla paylaşılır.

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() . Yeni TelemetryClient örnekler oluşturmanızı önermiyoruz. Tekil örneği TelemetryClient , telemetrinin DependencyInjection geri kalanıyla paylaşan TelemetryConfiguration kapsayıcıda zaten kayıtlıdır. Yeni TelemetryClient örnek oluşturma yalnızca telemetrinin geri kalanından ayrı bir yapılandırma gerekiyorsa önerilir.

Visual Studio IDE'yi kullanarak Application Insights'ı bir Çalışan Hizmeti projesine ekleyebilir miyim?

Visual Studio IDE ekleme şu anda yalnızca ASP.NET/ASP.NET Core uygulamaları için desteklenmektedir. Bu belge, Visual Studio Çalışan Hizmeti uygulamalarını ekleme desteği gönderdiğinizde güncelleştirilecektir.

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

Hayır Azure İzleyici Application Insights Aracısı şu anda yalnızca .NET'i desteklemektedir.

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

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

  • Performans sayaçları, canlı ölçümlerde gösterilen İşlem CPU/Bellek dışında yalnızca Windows'ta desteklenir.

  • Varsayılan olarak etkin olsa ServerTelemetryChannel bile, uygulama Linux veya macOS'ta çalışıyorsa, ağ sorunları varsa kanal telemetriyi geçici olarak tutmak için otomatik olarak yerel bir depolama klasörü oluşturmaz. Bu sınırlama nedeniyle geçici ağ veya sunucu sorunları olduğunda telemetri kaybolur. Bu sorunu geçici olarak çözmek için kanal için yerel bir klasör yapılandırın:

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

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

HostedServices ile Temel arka plan görevlerini ASP.NET: ASP.NET Core'daysanız ve resmi yönergelere uygun olarak 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