Aplikační Přehledy pro aplikace pracovních služeb (aplikace mimo HTTP)

Application Přehledy SDK for Worker Service je nová sada SDK, která je nejvhodnější pro úlohy mimo HTTP, jako jsou zasílání zpráv, úlohy na pozadí, konzolové aplikace atd. Tyto typy aplikací nemají představu o příchozím požadavku HTTP, jako je tradiční webová aplikace ASP.NET/ASP.NET Core, a proto se nepodporují balíčky Přehledy aplikací pro ASP.NET nebo ASP.NET Core aplikace.

Nová sada SDK sama neprovádí žádnou kolekci telemetrie. Místo toho přináší další dobře známé aplikační Přehledy automatické kolektory, jako je DependencyCollector, PerfCounterCollector, ApplicationInsightsLoggingProvider atd. Tato sada SDK zveřejňuje metody IServiceCollection rozšíření pro povolení a konfiguraci shromažďování telemetrických dat.

Podporované scénáře

Sada SDK Přehledy application Přehledy pro pracovní službu je nejvhodnější pro aplikace bez protokolu HTTP 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 telemetrii. Monitorování Přehledy aplikací se podporuje všude, kde se podporuje .NET Core. Tento balíček lze použít v nově zavedené pracovní službě .NET Core 3.0, úlohách na pozadí v ASP.NET Core 2.1/2.2, konzolových aplikacích (.NET Core/ .NET Framework) atd.

Požadavky

Platný připojovací řetězec Přehledy aplikace. Tento řetězec je nutný k odeslání jakékoli telemetrie do Přehledy aplikace. Pokud potřebujete vytvořit nový prostředek Přehledy aplikace, abyste získali připojovací řetězec, přečtěte si téma Vytvoření prostředku Přehledy aplikace.

Poznámka

31. března 2025 skončí podpora příjmu klíčů instrumentace. Příjem dat založený na instrumentačním klíči bude dál fungovat, ale už nebudeme poskytovat aktualizace ani podporu této funkce. Přechod na připojovací řetězce za účelem využití nových funkcí

Použití sady Application Přehledy SDK for Worker Services

  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.13.1" />
    </ItemGroup>
  1. Nakonfigurujte připojovací řetězec v APPLICATIONINSIGHTS_CONNECTION_STRING proměnné prostředí nebo v konfiguraci. (appsettings.json)

Screenshot displaying Application Insights overview and connection string.

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

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

Aplikace pracovní služby .NET Core 3.0

Úplný příklad je tady sdílený.

  1. Stažení a instalace .NET Core 3.0

  2. Vytvoření nového projektu Služby pracovního procesu pomocí Visual Studio nové šablony projektu nebo příkazového řádkudotnet new worker

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

  4. Přidejte services.AddApplicationInsightsTelemetryWorkerService(); do CreateHostBuilder() metody ve třídě Program.cs , jako v tomto příkladu:

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureServices((hostContext, services) =>
            {
                services.AddHostedService<Worker>();
                services.AddApplicationInsightsTelemetryWorkerService();
            });
  1. Upravte ho Worker.cs 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);
            }
        }
    }
  1. Nastavte připojovací řetězec.

Screenshot displaying Application Insights overview and connection string.

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 Web Apps 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 Core úloh na pozadí s hostovanými službami

Tento dokument popisuje, jak vytvářet úlohy na pozadí v aplikaci ASP.NET Core 2.1/2.2.

Úplný příklad je tady sdílený.

  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ásleduje kód, ve TimedHostedService kterém 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");
            }
        }
    }
  1. Nastavte připojovací řetězec. Použijte stejný appsettings.json příklad z výše uvedeného příkladu pracovní služby .NET Core 3.0.

Konzolová aplikace .NET Core/.NET Framework

Jak je uvedeno na začátku tohoto článku, nový balíček lze použít k povolení telemetrie aplikace Přehledy z dokonce i běžné konzolové aplikace. Tento balíček cílíNetStandard2.0, a proto se dá použít pro konzolové aplikace v .NET Core 2.0 nebo vyšší a .NET Framework 4.7.2 nebo vyšší.

Úplný příklad je tady sdílený.

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

  2. Upravte soubor Program.cs jako následující příklad.

    using Microsoft.ApplicationInsights;
    using Microsoft.ApplicationInsights.DataContracts;
    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 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("connection string here");

                // 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 používá také stejné výchozí nastavení TelemetryConfigurationa dá se přizpůsobit stejným způsobem jako příklady v předchozí části.

Spusťte aplikaci

Spusťte aplikaci. Příklad pracovních procesů ze všech výše uvedených provádí volání HTTP každou sekundu k bing.com a také generuje 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 s názvem "operation"). Aplikace Přehledy tyto protokoly ILogger (ve výchozím nastavení upozornění nebo výše) a závislosti shromáždí a budou korelovány s vztahem nadřazeného a podřízeného objektuRequestTelemetry. Korelace také funguje mezi procesy a hranicemi sítě. Pokud se například volání provedlo s jinou monitorovanou komponentou, bude korelovat i s tímto nadřazeným objektem.

Tuto vlastní operaci RequestTelemetry lze považovat za ekvivalent příchozího webového požadavku v typické webové aplikaci. I když není nutné používat operaci, hodí se nejlépe s datovým modelem korelace aplikace Přehledy – s RequestTelemetry fungováním jako nadřazenou operací a každou telemetrii vygenerovanou uvnitř iterace pracovního procesu, která se považuje za logicky patřící stejné operaci. Tento přístup také zajišťuje, že všechna telemetrická data generovaná (automatická a ruční) budou mít stejnou operation_id. Vzhledem k tomu, že vzorkování vychází z operation_idtoho, algoritmus vzorkování buď uchovává nebo zahodí veškerou telemetrii z jedné iterace.

Následující seznam obsahuje úplnou telemetrii, kterou automaticky shromažďuje Přehledy aplikace.

Live Metrics

Živé metriky je možné použít k rychlému ověření, jestli je správně nakonfigurované monitorování Přehledy aplikací. I když může trvat několik minut, než se telemetrie začne zobrazovat na portálu a analýzách, živé metriky ukážou využití procesoru spuštěného procesu téměř v reálném čase. Může také zobrazit další telemetrii, jako jsou požadavky, závislosti, trasování atd.

Protokoly ILoggeru

Protokoly generované ILogger závažností Warning nebo vyšší se automaticky zaznamenávají. Podle dokumentace ILoggeru můžete přizpůsobit úrovně protokolů zachycené Přehledy aplikací.

Závislosti

Kolekce závislostí je ve výchozím nastavení povolená. Tento článek vysvětluje závislosti, které se automaticky shromažďují, a obsahuje také kroky k ručnímu sledování.

EventCounter

EventCounterCollectionModule je ve výchozím nastavení povolená a bude shromažďovat výchozí sadu čítačů z aplikací .NET Core 3.0. 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ších telemetrických dat

Sada SDK sice automaticky shromažďuje telemetrii, jak je vysvětleno výše, ale ve většině případů bude uživatel muset do služby Application Přehledy odesílat další telemetrická data. Doporučený způsob, jak sledovat další telemetrii, je získání instance TelemetryClient z 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říkladech pracovních procesů výše.

Konfigurace sady Application Přehledy SDK

Výchozí nastavení TelemetryConfiguration používané sadou SDK pracovní služby je podobné automatické konfiguraci používané v aplikaci ASP.NET nebo ASP.NET Core minus telemetrieInitializery používané k obohacení telemetrie z HttpContext.

Sadu APPLICATION Přehledy SDK pro pracovní službu můžete přizpůsobit tak, aby se změnila výchozí konfigurace. Uživatelé sady Application Přehledy ASP.NET Core SDK můžou znát změnu konfigurace pomocí ASP.NET Core integrované injektáže závislostí. Sada WorkerService SDK je také založená na podobných principech. Proveďte téměř všechny změny konfigurace v oddílu ConfigureServices() voláním odpovídajících metod, IServiceCollectionjak je popsáno níže.

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 ApplicationInsightsServiceOptionsAddApplicationInsightsTelemetryWorkerServicesouboru , 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 QuickPulse (Live Metrics stream).
    aiOptions.EnableQuickPulseMetricStream = false;
    services.AddApplicationInsightsTelemetryWorkerService(aiOptions);
}

V ApplicationInsightsServiceOptions této sadě SDK je obor názvů Microsoft.ApplicationInsights.WorkerService na rozdíl od Microsoft.ApplicationInsights.AspNetCore.Extensions sady ASP.NET Core SDK.

Běžně používaná nastavení v ApplicationInsightsServiceOptions

Nastavení Popis Výchozí
EnableQuickPulseMetricStream Povolení nebo zakázání funkce LiveMetrics true
EnableAdaptiveSampling Povolení nebo zakázání adaptivního vzorkování true
EnableHeartbeat Povolit nebo zakázat 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, informace o prostředí Azure, pokud je to možné atd. true
AddAutoCollectedMetricExtractor Enable/Disable AutoCollectedMetrics extractor, což je TelemetryProcessor, který před zahájením vzorkování 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, EnableAzureInstanceMetadataTelemetryModule, EnableAppServicesHeartbeatTelemetryModule true

Podívejte se na konfigurovatelná nastavení ApplicationInsightsServiceOptions pro nejaktuálnější seznam.

Vzorkování

Sada Application Přehledy SDK for Worker Service podporuje jak pevnou rychlost, tak adaptivní vzorkování. Adaptivní vzorkování je ve výchozím nastavení povolené. Vzorkování je možné zakázat pomocí EnableAdaptiveSampling možnosti ApplicationInsightsServiceOptions.

Ke konfiguraci dalších nastavení vzorkování je možné použít následující příklad.

using Microsoft.ApplicationInsights.Extensibility;
using Microsoft.ApplicationInsights.WorkerService;

public void ConfigureServices(IServiceCollection services)
{
    // ...

    var aiOptions = new ApplicationInsightsServiceOptions();
    
    // Disable adaptive sampling.
    aiOptions.EnableAdaptiveSampling = false;
    services.AddApplicationInsightsTelemetryWorkerService(aiOptions);

    // Add Adaptive Sampling with custom settings.
    // the following adds adaptive sampling with 15 items per sec.
    services.Configure<TelemetryConfiguration>((telemetryConfig) =>
        {
            var builder = telemetryConfig.DefaultTelemetrySink.TelemetryProcessorChainBuilder;
            builder.UseAdaptiveSampling(maxTelemetryItemsPerSecond: 15);
            builder.Build();
        });
    //...
}

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

Přidání telemetrických inicializátorů

Inicializátory telemetrie používejte, když chcete definovat vlastnosti, které se odesílají se všemi telemetrií.

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

    using Microsoft.ApplicationInsights.Extensibility;

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

Odebrání telemetrických inicializátorů

Inicializátory telemetrie jsou ve výchozím nastavení k dispozici. Pokud chcete odebrat všechny nebo specifické 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 TelemetryConfiguration telemetrie můžete přidat pomocí metody AddApplicationInsightsTelemetryProcessor rozšíření na IServiceCollection. Procesory telemetrie používáte v pokročilých scénářích filtrování, abyste umožnili větší přímou kontrolu nad tím, co je součástí nebo vyloučeno z telemetrie, kterou odesíláte do služby Application Přehledy. 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ího telemetrieModules

Aplikační Přehledy 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 automatické kolekce. 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ě dochází k problému souvisejícímu s tímto modulem telemetrie. Dočasné alternativní řešení najdete v tématu GitHub Problém 1689.)
  • AzureInstanceMetadataTelemetryModule

Pokud chcete nakonfigurovat libovolnou výchozí TelemetryModulehodnotu, 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 vyřešit TelemetryConfiguration s kontejnerem injektáže závislostí ASP.NET Core kdekoli v kódu a nastavit DisableTelemetry příznak na něm.

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

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

Nejčastější dotazy

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 už 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 použít integrované vývojové prostředí (IDE) Visual Studio k onboardingu Přehledy aplikace do projektu pracovní služby?

Visual Studio onboarding integrovaného vývojového prostředí (IDE) se v současné době podporuje jenom pro aplikace ASP.NET/ASP.NET Core. Tento dokument se aktualizuje, když Visual Studio dodává podporu pro aplikace služby onboarding Worker.

Můžu povolit monitorování Přehledy aplikací pomocí nástrojů, jako je agent služby Azure Monitor Application Přehledy Agent (dříve Status Monitor v2)?

Ne, agent Přehledy aplikace služby Azure Monitor aktuálně podporuje pouze ASP.NET 4.x.

Podporují se všechny funkce, pokud 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 se podporují pouze v Windows s výjimkou procesoru a paměti procesu zobrazeného 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 telemetrie dočasně zachovala, 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 vyřešit, 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 Core úlohy na pozadí s hostovanými službami Použijte tuto ukázku, pokud jste v ASP.NET Core 2.1/2.2 a vytváření úloh na pozadí podle oficiálních pokynů zde

Pracovní služba .NET Core 3.0 Tuto ukázku použijte, pokud máte aplikaci pracovní služby .NET Core 3.0 podle oficiálních pokynů zde.

Opensourcová sada SDK

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

Další kroky