Sdílet prostřednictvím


Application Insights pro aplikace pracovních služeb (aplikace jiné než HTTP)

Sada Application Insights SDK pro pracovní službu je nová sada SDK, která je nejvhodnější pro úlohy mimo PROTOKOL HTTP, jako jsou zasílání zpráv, úlohy na pozadí a konzolové aplikace. Tyto typy aplikací nemají představu o příchozím požadavku HTTP, jako je tradiční webová aplikace ASP.NET/ASP.NET Core. Z tohoto důvodu se nepodporuje použití balíčků Application Insights pro ASP.NET nebo ASP.NET Core .

Upozornění

Pro nové aplikace nebo zákazníky doporučujeme , aby služba Azure Monitor OpenTelemetry distro vysílala služby Azure Monitor Application Insights. Distribuce OpenTelemetry služby Azure Monitor poskytuje podobné funkce a prostředí jako sada Application Insights SDK. Ze sady Application Insights SDK je možné migrovat pomocí průvodců migrací pro .NET, Node.js a Python, ale stále pracujeme na přidání několika dalších funkcí pro zpětnou kompatibilitu.

Nová sada SDK sama o sobě neprovádí žádnou kolekci telemetrie. Místo toho přináší další dobře známé automatické kolektory Application Insights, jako je DependencyCollector, PerfCounterCollector a ApplicationInsightsLoggingProvider. Tato sada SDK zveřejňuje metody IServiceCollection rozšíření pro povolení a konfiguraci shromažďování telemetrie.

Podporované scénáře

Sada Application Insights SDK pro pracovní službu je nejvhodnější pro aplikace bez ohledu na to, kde nebo jak běží. Pokud je vaše aplikace spuštěná a má síťové připojení k Azure, můžete shromažďovat telemetrická data. Monitorování Application Insights se podporuje všude, kde se podporuje .NET Core. Tento balíček lze použít v nově zavedené pracovní službě .NET Core, úlohách na pozadí v ASP.NET Core a konzolových aplikacích, jako jsou .NET Core a .NET Framework.

Požadavky

Musíte mít platný připojovací řetězec Application Insights. Tento řetězec se vyžaduje k odeslání jakékoli telemetrie do Application Insights. Pokud potřebujete vytvořit nový prostředek Application Insights, abyste získali připojovací řetězec, přečtěte si téma Připojovací řetězce.

Poznámka:

Podpora příjmu dat založeného na instrumentačním klíči skončí 31. března 2025. Příjem klíčů instrumentace bude dál fungovat, ale už nebudeme poskytovat aktualizace ani podporu pro tuto funkci. Přechod na připojovací řetězec, abyste mohli využívat nové funkce.

Použití sady Application Insights SDK pro pracovní službu

  1. Nainstalujte do aplikace balíček Microsoft.ApplicationInsights.WorkerService . Následující fragment kódu ukazuje změny, které je potřeba přidat do souboru projektu .csproj :

        <ItemGroup>
            <PackageReference Include="Microsoft.ApplicationInsights.WorkerService" Version="2.22.0" />
        </ItemGroup>
    
  2. Nakonfigurujte připojovací řetězec v APPLICATIONINSIGHTS_CONNECTION_STRING proměnné prostředí nebo v konfiguraci (appsettings.json).

    Snímek obrazovky zobrazující přehled a připojovací řetězec Application Insights

  3. ILogger Načtěte instanci nebo TelemetryClient instanci z kontejneru injektáže závislostí (DI) voláním serviceProvider.GetRequiredService<TelemetryClient>(); nebo použitím injektáže konstruktoru. Tento krok aktivuje nastavení TelemetryConfiguration modulů autocollection a autocollection.

Konkrétní pokyny pro každý typ aplikace jsou popsány v následujících částech.

Aplikace .NET Core Worker Service

Úplný příklad se sdílí na webu NuGet.

  1. Stáhněte a nainstalujte sadu .NET SDK.

  2. Vytvořte nový projekt Služby pracovních procesů pomocí nové šablony projektu sady Visual Studio nebo příkazového řádku dotnet new worker.

  3. Přidejte do aplikace balíček Microsoft.ApplicationInsights.WorkerService .

  4. Přidejte services.AddApplicationInsightsTelemetryWorkerService(); do CreateHostBuilder() metody ve třídě Program.cs , jak je znázorněno v tomto příkladu:

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureServices((hostContext, services) =>
                {
                    services.AddHostedService<Worker>();
                    services.AddApplicationInsightsTelemetryWorkerService();
                });
    
  5. Upravte Worker.cs ho podle následujícího příkladu:

        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. Nastavte připojovací řetězec.

    Snímek obrazovky znázorňující přehled a připojovací řetězec Application Insights

    Poznámka:

    Doporučujeme zadat připojovací řetězec v konfiguraci. Následující ukázka kódu ukazuje, jak zadat připojovací řetězec v appsettings.json. Během publikování se ujistěte, že appsettings.json se zkopíruje do kořenové složky aplikace.

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

Případně zadejte připojovací řetězec v APPLICATIONINSIGHTS_CONNECTION_STRING proměnné prostředí.

APPLICATIONINSIGHTS_CONNECTION_STRING Obvykle určuje připojovací řetězec pro aplikace nasazené do webových aplikací jako webové úlohy.

Poznámka:

Připojovací řetězec zadané v kódu má přednost před proměnnou APPLICATIONINSIGHTS_CONNECTION_STRINGprostředí, která má přednost před jinými možnostmi.

ASP.NET úlohy na pozadí jádra s hostovanými službami

Tento dokument popisuje, jak vytvořit úlohy na pozadí v aplikaci ASP.NET Core.

Úplný příklad se sdílí na této stránce GitHubu.

  1. Nainstalujte do aplikace balíček Microsoft.ApplicationInsights.WorkerService .

  2. Přidejte services.AddApplicationInsightsTelemetryWorkerService(); do metody, jak je znázorněno v tomto příkladu ConfigureServices() :

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

    Následující kód je určený pro TimedHostedService, kde se nachází logika úlohy na pozadí:

        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. Nastavte připojovací řetězec. Použijte totéž appsettings.json z předchozího příkladu pracovní služby .NET .

Konzolová aplikace .NET Core/.NET Framework

Jak je uvedeno na začátku tohoto článku, nový balíček se dá použít k povolení telemetrie Application Insights i z běžné konzolové aplikace. Tento balíček cílí netstandard2.0, aby se mohl používat pro konzolové aplikace v .NET Core nebo novější a .NET Framework nebo vyšší.

Úplný příklad se sdílí na této stránce GitHubu.

  1. Nainstalujte do aplikace balíček Microsoft.ApplicationInsights.WorkerService .

  2. Upravte Program.cs , jak je znázorněno v následujícím příkladu:

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

Tato konzolová aplikace také používá stejnou výchozí hodnotu TelemetryConfiguration. Dá se přizpůsobit stejným způsobem jako příklady v předchozích částech.

Spusťte aplikaci

Spusťte aplikaci. Pracovní procesy ze všech předchozích příkladů každou sekundu volání HTTP bing.com a také generují několik protokolů pomocí ILogger. Tyto řádky jsou zabaleny uvnitř StartOperation volání TelemetryClient, který se používá k vytvoření operace. V tomto příkladu RequestTelemetry má název "operation" (operace).

Application Insights shromažďuje tyto protokoly ILoggeru se závažností upozornění nebo vyšší ve výchozím nastavení a závislostmi. Korelují se RequestTelemetry vztahem nadřazenosti a podřízenosti. Korelace také funguje napříč hranicemi procesů a sítí. Pokud se například volání provedlo v jiné monitorované komponentě, souvisí také s tímto nadřazeným objektem.

Tuto vlastní operaci RequestTelemetry si můžete představit jako ekvivalent příchozího webového požadavku v typické webové aplikaci. Není nutné použít operaci, ale nejlépe vyhovuje datovému modelu korelace Application Insights. RequestTelemetry funguje jako nadřazená operace a každá telemetrie vygenerovaná uvnitř iterace pracovního procesu je považována za logicky patřící stejné operaci.

Tento přístup také zajišťuje, že všechna telemetrická data generovaná automaticky i ručně mají stejnou operation_idhodnotu . Vzhledem k tomu, že vzorkování je založené na operation_id, algoritmus vzorkování buď uchovává nebo zahodí veškerou telemetrii z jedné iterace.

Následující části uvádějí úplnou telemetrii automaticky shromážděnou službou Application Insights.

Živé metriky

Živé metriky se dají použít k rychlému ověření, jestli je správně nakonfigurované monitorování aplikací pomocí Application Insights. Zobrazení telemetrie na webu Azure Portal může trvat několik minut, ale v podokně živých metrik se zobrazuje využití procesoru spuštěného procesu téměř v reálném čase. Může také zobrazovat další telemetrii, jako jsou požadavky, závislosti a trasování.

Protokoly ILoggeru

Protokoly generované ILogger pomocí upozornění závažnosti nebo vyšší se automaticky zaznamenávají. Chcete-li toto chování změnit, explicitně přepište konfiguraci protokolování pro zprostředkovatele ApplicationInsights, jak je znázorněno v následujícím kódu. Následující konfigurace umožňuje Application Insights zaznamenávat všechny Information protokoly a vážnější protokoly.

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

Je důležité si uvědomit, že následující příklad nezpůsobí, že poskytovatel Application Insights zachytává Information protokoly. Nezachytí ho, protože sada SDK přidá výchozí filtr protokolování, který dává pokyn ApplicationInsights k zachycení pouze Warning protokolů a složitějších protokolů. Application Insights vyžaduje explicitní přepsání.

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

Další informace najdete v dokumentaci ILoggeru a přizpůsobte si, které úrovně protokolů zachytává Application Insights.

Závislosti

Kolekce závislostí je ve výchozím nastavení povolená. Článek Sledování závislostí ve službě Application Insights vysvětluje závislosti, které se automaticky shromažďují, a obsahuje také kroky pro ruční sledování.

EventCounter

EventCounterCollectionModule je ve výchozím nastavení povolená a shromažďuje výchozí sadu čítačů z aplikací .NET . Kurz EventCounter uvádí výchozí sadu shromážděných čítačů. Obsahuje také pokyny k přizpůsobení seznamu.

Ruční sledování další telemetrie

I když sada SDK automaticky shromažďuje telemetrii, jak je vysvětleno, ve většině případů je potřeba do Application Insights odeslat další telemetrii. Doporučený způsob, jak sledovat další telemetrii, je získání instance TelemetryClient injektáže závislostí a následné volání jedné z podporovaných TrackXXX() metod rozhraní API . Dalším typickým případem použití je vlastní sledování operací. Tento přístup je ukázaný v předchozích příkladech pracovních procesů.

Konfigurace sady Application Insights SDK

Výchozí hodnota TelemetryConfiguration používaná sadou SDK pracovní služby je podobná automatické konfiguraci používané v aplikaci ASP.NET nebo ASP.NET Core a mínus inicializátory telemetrie používané k obohacení telemetrie z HttpContext.

Sadu Application Insights SDK for Worker Service můžete přizpůsobit tak, aby se změnila výchozí konfigurace. Uživatelé sady Application Insights ASP.NET Core SDK můžou znát změnu konfigurace pomocí integrované injektáže závislostí ASP.NET Core. Sada SDK pracovních služeb je také založena na podobných principech. Proveďte téměř všechny změny konfigurace v oddílu ConfigureServices() voláním vhodných metod IServiceCollection, jak je podrobně popsáno v další části.

Poznámka:

Při použití této sady SDK se změna konfigurace úpravou TelemetryConfiguration.Active nepodporuje a změny se neprojeví.

Použití ApplicationInsightsServiceOptions

Můžete upravit několik běžných nastavení předáním ApplicationInsightsServiceOptions souboru AddApplicationInsightsTelemetryWorkerService, jako v tomto příkladu:

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

Tato ApplicationInsightsServiceOptions sada SDK je v oboru názvů Microsoft.ApplicationInsights.WorkerService , nikoli Microsoft.ApplicationInsights.AspNetCore.Extensions v sadě ASP.NET Core SDK.

Následující tabulka uvádí běžně používaná nastavení v ApplicationInsightsServiceOptionstabulce .

Nastavení Popis Výchozí
EnableQuickPulseMetricStream Povolte nebo zakažte funkci živých metrik. True
EnableAdaptiveSampling Povolení nebo zakázání adaptivního vzorkování True
EnableHeartbeat Povolte nebo zakažte funkci Prezenčních signálů, která pravidelně (výchozí 15 minut) odesílá vlastní metriku s názvem HeartBeatState s informacemi o modulu runtime, jako je verze .NET a prostředí Azure, pokud je to možné. True
AddAutoCollectedMetricExtractor Povolte nebo zakažte extraktor AutoCollectedMetrics, což je procesor telemetrie, který před vzorkováním odesílá předem agregované metriky o požadavcích a závislostech. True
EnableDiagnosticsTelemetryModule Povolit nebo zakázat DiagnosticsTelemetryModule. Zakázání tohoto nastavení způsobí ignorování následujících nastavení: EnableHeartbeat, EnableAzureInstanceMetadataTelemetryModulea EnableAppServicesHeartbeatTelemetryModule. True

Nejaktuálnější seznam najdete v konfigurovatelných nastaveních v ApplicationInsightsServiceOptionssouboru .

Vzorkování

Sada Application Insights SDK pro pracovní službu podporuje vzorkování s pevnou rychlostí i adaptivní vzorkování. Adaptivní vzorkování je ve výchozím nastavení povolené. Vzorkování je možné zakázat pomocí EnableAdaptiveSampling možnosti v ApplicationInsightsServiceOptions.

Pokud chcete nakonfigurovat další nastavení vzorkování, můžete použít následující příklad:

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();

Další informace najdete v dokumentu vzorkování .

Přidání inicializátorů telemetrie

Inicializátory telemetrie použijte, pokud chcete definovat vlastnosti odeslané se všemi telemetrií.

Přidejte do kontejneru DependencyInjection všechny nové inicializátory telemetrie a sada SDK je automaticky přidá do TelemetryConfiguration.

    using Microsoft.ApplicationInsights.Extensibility;

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

Odebrání inicializátorů telemetrie

Inicializátory telemetrie jsou ve výchozím nastavení k dispozici. Chcete-li odebrat všechny nebo konkrétní inicializátory telemetrie, použijte následující ukázkový kód po volání AddApplicationInsightsTelemetryWorkerService().

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

Přidání procesorů telemetrie

Vlastní procesory telemetrie můžete přidat TelemetryConfiguration pomocí metody AddApplicationInsightsTelemetryProcessor rozšíření na .IServiceCollection V pokročilých scénářích filtrování používáte procesory telemetrie, které umožňují přímou kontrolu nad tím, co je součástí nebo vyloučeno z telemetrie, kterou odesíláte do Application Insights. Použijte následující příklad:

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

Konfigurace nebo odebrání výchozích modulů telemetrie

Application Insights používá moduly telemetrie k automatickému shromažďování telemetrických dat o konkrétních úlohách bez nutnosti ručního sledování.

Ve výchozím nastavení jsou povoleny následující moduly autocollection. Tyto moduly zodpovídají za automatické shromažďování telemetrie. Můžete je zakázat nebo nakonfigurovat tak, aby měnily výchozí chování.

  • DependencyTrackingTelemetryModule
  • PerformanceCollectorModule
  • QuickPulseTelemetryModule
  • AppServicesHeartbeatTelemetryModule (V současné době došlo k problému souvisejícímu s tímto modulem telemetrie. Dočasné alternativní řešení najdete v tématu Problém GitHubu 1689.)
  • AzureInstanceMetadataTelemetryModule

Pokud chcete nakonfigurovat jakýkoli výchozí modul telemetrie, použijte metodu ConfigureTelemetryModule<T> rozšíření zapnutou IServiceCollection, jak je znázorněno v následujícím příkladu:

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

Konfigurace kanálu telemetrie

Výchozí kanál je ServerTelemetryChannel. Můžete ho přepsat, jak ukazuje následující příklad:

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

Dynamické zakázání telemetrie

Pokud chcete telemetrii podmíněně a dynamicky zakázat, můžete instanci přeložit TelemetryConfiguration pomocí kontejneru injektáže závislostí jádra ASP.NET kdekoli v kódu a nastavit DisableTelemetry příznak.

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

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

Nejčastější dotazy

Tato část obsahuje odpovědi na běžné otázky.

Který balíček mám použít?

Scénář aplikace .NET Core Balíček
Bez hostovaných služeb WorkerService
S hostovanými službami AspNetCore (nikoli WorkerService)
S hostovanými službami monitorování pouze hostovaných služeb WorkerService (vzácný scénář)

Můžou se hostované služby v aplikaci .NET Core pomocí balíčku AspNetCore do ní vloženého TelemetryClient?

Ano, konfigurace se sdílí se zbytkem webové aplikace.

Jak můžu sledovat telemetrii, která se neshromažďuje automaticky?

Získejte instanci TelemetryClient pomocí injektáže konstruktoru a zavolejte na ni požadovanou TrackXXX() metodu. Nedoporučujeme vytvářet nové TelemetryClient instance. V kontejneru DependencyInjection je již zaregistrovaná jedna instanceTelemetryClient, která sdílí TelemetryConfiguration zbytek telemetrie. Vytvoření nové TelemetryClient instance se doporučuje jenom v případě, že potřebuje konfiguraci, která je oddělená od zbytku telemetrie.

Můžu pomocí integrovaného vývojového prostředí sady Visual Studio připojit Application Insights k projektu pracovní služby?

Onboarding integrovaného vývojového prostředí sady Visual Studio se v současné době podporuje jenom pro aplikace ASP.NET/ASP.NET Core. Tento dokument se aktualizuje, když sada Visual Studio dodává podporu pro aplikace pracovních služeb připojování.

Můžu povolit monitorování Application Insights pomocí nástrojů, jako je agent Application Insights služby Azure Monitor (dříve Monitorování stavu v2)?

Ne. Agent Application Insights služby Azure Monitor v současné době podporuje pouze .NET .

Jsou všechny funkce podporované, když spustím aplikaci v Linuxu?

Ano. Podpora funkcí pro tuto sadu SDK je stejná ve všech platformách s následujícími výjimkami:

  • Čítače výkonu jsou podporovány pouze ve Windows s výjimkou procesoru procesu nebo paměti zobrazené v živých metrikách.

  • I když ServerTelemetryChannel je ve výchozím nastavení povolená, pokud je aplikace spuštěná v Linuxu nebo macOS, kanál automaticky nevytvoří složku místního úložiště, aby se dočasně zachovala telemetrie, pokud dojde k problémům se sítí. Kvůli tomuto omezení dojde ke ztrátě telemetrie, pokud dojde k dočasným problémům se sítí nebo serverem. Pokud chcete tento problém obejít, nakonfigurujte pro kanál místní složku:

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

Ukázkové aplikace

Konzolová aplikace .NET Core: Tuto ukázku použijte, pokud používáte konzolovou aplikaci napsanou v .NET Core (2.0 nebo vyšší) nebo .NET Framework (4.7.2 nebo vyšší).

ASP.NET základní úlohy na pozadí s hostovanými službami: Tuto ukázku použijte, pokud jste v ASP.NET Core a vytváříte úlohy na pozadí v souladu s oficiálními pokyny.

.NET Core Worker Service: Tuto ukázku použijte, pokud máte aplikaci .NET Worker Service v souladu s oficiálními pokyny.

Opensourcová sada SDK

Čtení kódu a přispívání do kódu

Nejnovější aktualizace a opravy chyb najdete v poznámkách k verzi.

Další kroky