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ótAPPLICATIONINSIGHTS_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()DelaySleep/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álja InMemoryChannel.

  • 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álja TelemetryConfiguration.CreateDefault() a vagy TelemetryConfiguration.Activea 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;
        }
    }
}