Application Insights .NET-konzolalkalmazásokhoz
Figyelmeztetés
Használja a Microsoft.ApplicationInsights.WorkerService csomagot és a konzolalkalmazásokhoz készült Application Insights for Worker Service-alkalmazásokhoz (nem HTTP-alkalmazások) tartozó utasításokat. Kompatibilis a .NET Core hosszú távú támogatási (LTS) verzióival és .NET-keretrendszer vagy újabb verzióival.
Az Application Insights lehetővé teszi a webalkalmazás elérhetőségének, teljesítményének és használatának monitorozását.
Bevezetés
A Azure Portal hozzon létre egy Application Insights-erőforrást.
Készítsen másolatot a kapcsolati sztring. Keresse meg a kapcsolati sztring a létrehozott új erőforrás Essentials legördülő menüjében.
Telepítse a legújabb Microsoft.ApplicationInsights csomagot.
A telemetriai adatok nyomon követése előtt állítsa be a kapcsolati sztring a kódban (vagy állítsa be a környezeti változót
APPLICATIONINSIGHTS_CONNECTION_STRING
). Ezt követően manuálisan is nyomon követheti a telemetriát, és megtekintheti azt a Azure Portal.// You may use different options to create configuration as shown later in this article TelemetryConfiguration configuration = TelemetryConfiguration.CreateDefault(); configuration.ConnectionString = <Copy connection string from Application Insights Resource Overview>; var telemetryClient = new TelemetryClient(configuration); telemetryClient.TrackTrace("Hello World!");
Megjegyzés
A rendszer nem küldi el azonnal a telemetriát. Az elemeket az ApplicationInsights SDK kötegeli és küldi el. A konzolalkalmazások a hívási
Track()
metódusok után lépnek ki.Előfordulhat, hogy a telemetriát csak akkor küldi el a rendszer, ha
Flush()
Delay
Sleep
/az alkalmazás kilépése előtt történik, ahogy az ebben a cikkben található teljes példában is látható.Sleep
nem szükséges, ha a parancsot használjaInMemoryChannel
.Telepítse a Microsoft.ApplicationInsights.DependencyCollector csomag legújabb verzióját. Automatikusan nyomon követi a HTTP-t, az SQL-t vagy más külső függőségi hívásokat.
Inicializálhatja és konfigurálhatja az Application Insightst a kódból vagy fájl használatával ApplicationInsights.config
. Győződjön meg arról, hogy az inicializálás a lehető leghamarabb megtörténik.
Megjegyzés
ApplicationInsights.config a .NET Core-alkalmazások nem támogatják.
A konfigurációs fájl használata
A .NET-keretrendszer-alapú alkalmazások esetében alapértelmezés szerint az Application Insights SDK a létrehozáskor TelemetryConfiguration
a munkakönyvtárban keresi ApplicationInsights.config
a fájlt. A konfigurációs fájl olvasása nem támogatott a .NET Core-on.
TelemetryConfiguration config = TelemetryConfiguration.Active; // Reads ApplicationInsights.config file if present
A konfigurációs fájl elérési útját is megadhatja:
using System.IO;
TelemetryConfiguration configuration = TelemetryConfiguration.CreateFromConfiguration(File.ReadAllText("C:\\ApplicationInsights.config"));
var telemetryClient = new TelemetryClient(configuration);
A konfigurációs fájl teljes példáját a Microsoft.ApplicationInsights.WindowsServer csomag legújabb verziójának telepítésével szerezheti be. A következő minimális konfiguráció a függőségi gyűjteményhez, amely egyenértékű a kód példájával:
<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsights xmlns="http://schemas.microsoft.com/ApplicationInsights/2013/Settings">
<ConnectionString>"Copy connection string from Application Insights Resource Overview"</ConnectionString>
<TelemetryInitializers>
<Add Type="Microsoft.ApplicationInsights.DependencyCollector.HttpDependenciesParsingTelemetryInitializer, Microsoft.AI.DependencyCollector"/>
</TelemetryInitializers>
<TelemetryModules>
<Add Type="Microsoft.ApplicationInsights.DependencyCollector.DependencyTrackingTelemetryModule, Microsoft.AI.DependencyCollector">
<ExcludeComponentCorrelationHttpHeadersOnDomains>
<Add>core.windows.net</Add>
<Add>core.chinacloudapi.cn</Add>
<Add>core.cloudapi.de</Add>
<Add>core.usgovcloudapi.net</Add>
<Add>localhost</Add>
<Add>127.0.0.1</Add>
</ExcludeComponentCorrelationHttpHeadersOnDomains>
<IncludeDiagnosticSourceActivities>
<Add>Microsoft.Azure.ServiceBus</Add>
<Add>Microsoft.Azure.EventHubs</Add>
</IncludeDiagnosticSourceActivities>
</Add>
</TelemetryModules>
<TelemetryChannel Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.ServerTelemetryChannel, Microsoft.AI.ServerTelemetryChannel"/>
</ApplicationInsights>
Telemetriai gyűjtemény konfigurálása kódból
Megjegyzés
A konfigurációs fájl olvasása nem támogatott a .NET Core-on.
Az alkalmazás indításakor hozzon létre és konfiguráljon egy példányt
DependencyTrackingTelemetryModule
. Egyhangosnak kell lennie, és meg kell őrizni az alkalmazás élettartama alatt.var module = new DependencyTrackingTelemetryModule(); // prevent Correlation Id to be sent to certain endpoints. You may add other domains as needed. module.ExcludeComponentCorrelationHttpHeadersOnDomains.Add("core.windows.net"); //... // enable known dependency tracking, note that in future versions, we will extend this list. // please check default settings in https://github.com/Microsoft/ApplicationInsights-dotnet-server/blob/develop/Src/DependencyCollector/DependencyCollector/ApplicationInsights.config.install.xdt module.IncludeDiagnosticSourceActivities.Add("Microsoft.Azure.ServiceBus"); module.IncludeDiagnosticSourceActivities.Add("Microsoft.Azure.EventHubs"); //.... // initialize the module module.Initialize(configuration);
Általános telemetriai inicializálók hozzáadása:
// ensures proper DependencyTelemetry.Type is set for Azure RESTful API calls configuration.TelemetryInitializers.Add(new HttpDependenciesParsingTelemetryInitializer());
Ha egyszerű
TelemetryConfiguration()
konstruktorral hozott létre konfigurációt, akkor engedélyeznie kell a korreláció támogatását is. Nincs rá szükség , ha egy fájlból olvassa el a konfigurációt, vagy használjaTelemetryConfiguration.CreateDefault()
a vagyTelemetryConfiguration.Active
a fájlt.configuration.TelemetryInitializers.Add(new OperationCorrelationTelemetryInitializer());
Érdemes lehet telepíteni és inicializálni a Teljesítményszámláló gyűjtő modult a webhelyen leírtak szerint.
Teljes példa
using Microsoft.ApplicationInsights;
using Microsoft.ApplicationInsights.DependencyCollector;
using Microsoft.ApplicationInsights.Extensibility;
using System.Net.Http;
using System.Threading.Tasks;
namespace ConsoleApp
{
class Program
{
static void Main(string[] args)
{
TelemetryConfiguration configuration = TelemetryConfiguration.CreateDefault();
configuration.ConnectionString = "removed";
configuration.TelemetryInitializers.Add(new HttpDependenciesParsingTelemetryInitializer());
var telemetryClient = new TelemetryClient(configuration);
using (InitializeDependencyTracking(configuration))
{
// run app...
telemetryClient.TrackTrace("Hello World!");
using (var httpClient = new HttpClient())
{
// Http dependency is automatically tracked!
httpClient.GetAsync("https://microsoft.com").Wait();
}
}
// before exit, flush the remaining data
telemetryClient.Flush();
// Console apps should use the WorkerService package.
// This uses ServerTelemetryChannel which does not have synchronous flushing.
// For this reason we add a short 5s delay in this sample.
Task.Delay(5000).Wait();
// If you're using InMemoryChannel, Flush() is synchronous and the short delay is not required.
}
static DependencyTrackingTelemetryModule InitializeDependencyTracking(TelemetryConfiguration configuration)
{
var module = new DependencyTrackingTelemetryModule();
// prevent Correlation Id to be sent to certain endpoints. You may add other domains as needed.
module.ExcludeComponentCorrelationHttpHeadersOnDomains.Add("core.windows.net");
module.ExcludeComponentCorrelationHttpHeadersOnDomains.Add("core.chinacloudapi.cn");
module.ExcludeComponentCorrelationHttpHeadersOnDomains.Add("core.cloudapi.de");
module.ExcludeComponentCorrelationHttpHeadersOnDomains.Add("core.usgovcloudapi.net");
module.ExcludeComponentCorrelationHttpHeadersOnDomains.Add("localhost");
module.ExcludeComponentCorrelationHttpHeadersOnDomains.Add("127.0.0.1");
// enable known dependency tracking, note that in future versions, we will extend this list.
// please check default settings in https://github.com/microsoft/ApplicationInsights-dotnet-server/blob/develop/WEB/Src/DependencyCollector/DependencyCollector/ApplicationInsights.config.install.xdt
module.IncludeDiagnosticSourceActivities.Add("Microsoft.Azure.ServiceBus");
module.IncludeDiagnosticSourceActivities.Add("Microsoft.Azure.EventHubs");
// initialize the module
module.Initialize(configuration);
return module;
}
}
}