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
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>
Nakonfigurujte připojovací řetězec v
APPLICATIONINSIGHTS_CONNECTION_STRING
proměnné prostředí nebo v konfiguraci (appsettings.json
).ILogger
Načtěte instanci neboTelemetryClient
instanci z kontejneru injektáže závislostí (DI) volánímserviceProvider.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.
Vytvořte nový projekt Služby pracovních procesů pomocí nové šablony projektu sady Visual Studio nebo příkazového řádku
dotnet new worker
.Přidejte do aplikace balíček Microsoft.ApplicationInsights.WorkerService .
Přidejte
services.AddApplicationInsightsTelemetryWorkerService();
doCreateHostBuilder()
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(); });
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); } } }
Nastavte připojovací řetězec.
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, žeappsettings.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_STRING
prostř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.
Nainstalujte do aplikace balíček Microsoft.ApplicationInsights.WorkerService .
Přidejte
services.AddApplicationInsightsTelemetryWorkerService();
do metody, jak je znázorněno v tomto příkladuConfigureServices()
: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"); } } }
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.
Nainstalujte do aplikace balíček Microsoft.ApplicationInsights.WorkerService .
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_id
hodnotu . 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 ApplicationInsightsServiceOptions
tabulce .
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 , EnableAzureInstanceMetadataTelemetryModule a EnableAppServicesHeartbeatTelemetryModule . |
True |
Nejaktuálnější seznam najdete v konfigurovatelných nastaveních v ApplicationInsightsServiceOptions
souboru .
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
- Pomocí rozhraní API můžete odesílat vlastní události a metriky pro podrobné zobrazení výkonu a využití vaší aplikace.
- Sledujte více závislostí, které nejsou automaticky sledovány.
- Rozšíření nebo filtrování automaticky shromažďované telemetrie
- Injektáž závislostí v ASP.NET Jádru