Application Insights pro konzolové aplikace .NETApplication Insights for .NET console applications

Application Insights umožňuje monitorovat webovou aplikaci pro účely dostupnosti, výkonu a využití.Application Insights lets you monitor your web application for availability, performance, and usage.

K Microsoft Azurepotřebujete předplatné.You need a subscription with Microsoft Azure. Přihlaste se pomocí účet Microsoft, kterou můžete potřebovat pro Windows, Xbox Live nebo jiné cloudové služby Microsoftu.Sign in with a Microsoft account, which you might have for Windows, Xbox Live, or other Microsoft cloud services. Váš tým může mít k Azure předplatné organizace: Požádejte vlastníka, aby vás do něho přidal pomocí účet Microsoft.Your team might have an organizational subscription to Azure: ask the owner to add you to it using your Microsoft account.

Poznámka

Pro všechny konzolové aplikace se důrazně doporučuje použít balíček Microsoft. ApplicationInsights. WorkerService a související pokyny.It is highly recommended to use the Microsoft.ApplicationInsights.WorkerService package and associated instructions from here for any Console Applications. Tento balíček cílí NetStandard2.0 , a proto se dá použít v .NET Core 2,1 nebo vyšší a .NET Framework 4.7.2 nebo novější.This package targets NetStandard2.0, and hence can be used in .NET Core 2.1 or higher, and .NET Framework 4.7.2 or higher.

ZačínámeGetting started

  • Na webu Azure Portalvytvořte prostředek Application Insights.In the Azure portal, create an Application Insights resource. Jako typ aplikace vyberte Obecné.For application type, choose General.
  • Zkopírujte klíč instrumentace.Take a copy of the Instrumentation Key. Vyhledejte klíč v rozevíracím seznamu základy nového prostředku, který jste vytvořili.Find the key in the Essentials drop-down of the new resource you created.
  • Nainstalujte nejnovější balíček Microsoft. ApplicationInsights .Install latest Microsoft.ApplicationInsights package.
  • Před sledováním jakékoli telemetrie (nebo nastavením APPINSIGHTS_INSTRUMENTATIONKEY proměnné prostředí) nastavte v kódu klíč instrumentace.Set the instrumentation key in your code before tracking any telemetry (or set APPINSIGHTS_INSTRUMENTATIONKEY environment variable). Potom byste měli být schopni ručně sledovat telemetrii a vidět ji na Azure PortalAfter that, you should be able to manually track telemetry and see it on the Azure portal
// you may use different options to create configuration as shown later in this article
TelemetryConfiguration configuration = TelemetryConfiguration.CreateDefault();
configuration.InstrumentationKey = " *your key* ";
var telemetryClient = new TelemetryClient(configuration);
telemetryClient.TrackTrace("Hello World!");

Poznámka

Telemetrii se neposílá okamžitě.Telemetry is not sent instantly. Položky telemetrie jsou v sadě ApplicationInsights SDK a posílány pomocí dávek.Telemetry items are batched and sent by the ApplicationInsights SDK. V konzolových aplikacích, které se ukončí hned po volání Track() metod, telemetrie nemůžete odeslat, pokud Flush() a Sleep / Delay není provedeno před ukončením aplikace, jak je uvedeno v úplném příkladu dále v tomto článku.In Console apps, which exits right after calling Track() methods, telemetry may not be sent unless Flush() and Sleep/Delay is done before the app exits as shown in full example later in this article. Sleepnení vyžadováno, pokud používáte InMemoryChannel .Sleep is not required if you are using InMemoryChannel. Existuje aktivní problém týkající se potřeby, Sleep které tady sledujeme: ApplicationInsights-dotnet/problémy/407There is an active issue regarding the need for Sleep which is tracked here: ApplicationInsights-dotnet/issues/407

Můžete inicializovat a konfigurovat Application Insights z kódu nebo pomocí ApplicationInsights.config souboru.You may initialize and configure Application Insights from the code or using ApplicationInsights.config file. Ujistěte se, že k inicializaci dojde co nejdříve.Make sure initialization happens as early as possible.

Poznámka

Pokyny týkající se ApplicationInsights.config jsou použitelné pouze pro aplikace, které cílí na .NET Framework a nevztahují se na aplikace .NET Core.Instructions referring to ApplicationInsights.config are only applicable to apps that are targeting the .NET Framework, and do not apply to .NET Core applications.

Použití konfiguračního souboruUsing config file

Ve výchozím nastavení Application Insights SDK ApplicationInsights.config při vytváření v pracovním adresáři vyhledá soubor TelemetryConfiguration .By default, Application Insights SDK looks for ApplicationInsights.config file in the working directory when TelemetryConfiguration is being created

TelemetryConfiguration config = TelemetryConfiguration.Active; // Reads ApplicationInsights.config file if present

Můžete také zadat cestu ke konfiguračnímu souboru.You may also specify path to the config file.

using System.IO;
TelemetryConfiguration configuration = TelemetryConfiguration.CreateFromConfiguration(File.ReadAllText("C:\\ApplicationInsights.config"));
var telemetryClient = new TelemetryClient(configuration);

Další informace najdete v tématu Referenční dokumentace ke konfiguračnímu souboru.For more information, see configuration file reference.

Úplný příklad konfiguračního souboru můžete získat instalací nejnovější verze balíčku Microsoft. ApplicationInsights. windowsserver .You may get a full example of the config file by installing latest version of Microsoft.ApplicationInsights.WindowsServer package. Zde je minimální konfigurace pro kolekci závislostí, která je ekvivalentní k příkladu kódu.Here is the minimal configuration for dependency collection that is equivalent to the code example.

<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsights xmlns="http://schemas.microsoft.com/ApplicationInsights/2013/Settings">
  <InstrumentationKey>Your Key</InstrumentationKey>
  <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>

Konfigurace kolekce telemetrie z kóduConfiguring telemetry collection from code

Poznámka

Čtení konfiguračního souboru není v rozhraní .NET Core podporováno.Reading config file is not supported on .NET Core. Můžete zvážit použití Application Insights SDK pro ASP.NET CoreYou may consider using Application Insights SDK for ASP.NET Core

  • Při spuštění aplikace vytvořte a nakonfigurujte DependencyTrackingTelemetryModule instanci – musí být typu Singleton a musí být zachována pro dobu života aplikace.During application start-up create and configure DependencyTrackingTelemetryModule instance - it must be singleton and must be preserved for application lifetime.
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);
  • Přidat běžné Inicializátory telemetrieAdd common telemetry initializers
// ensures proper DependencyTelemetry.Type is set for Azure RESTful API calls
configuration.TelemetryInitializers.Add(new HttpDependenciesParsingTelemetryInitializer());

Pokud jste vytvořili konfiguraci pomocí jednoduchého TelemetryConfiguration() konstruktoru, je nutné povolit podporu korelace navíc.If you created configuration with plain TelemetryConfiguration() constructor, you need to enable correlation support additionally. Není nutné , pokud si přečtete konfiguraci ze souboru, používá se TelemetryConfiguration.CreateDefault() nebo TelemetryConfiguration.Active .It is not needed if you read configuration from file, used TelemetryConfiguration.CreateDefault() or TelemetryConfiguration.Active.

configuration.TelemetryInitializers.Add(new OperationCorrelationTelemetryInitializer());
  • Můžete také chtít nainstalovat a inicializovat modul sběrače čítače výkonu, jak je popsáno zde .You may also want to install and initialize Performance Counter collector module as described here

Úplný příkladFull example

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.InstrumentationKey = "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();

            // flush is not blocking when not using InMemoryChannel so wait a bit. There is an active issue regarding the need for `Sleep`/`Delay`
            // which is tracked here: https://github.com/microsoft/ApplicationInsights-dotnet/issues/407
            Task.Delay(5000).Wait();

        }

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

Další krokyNext steps

  • Sledujte závislosti , abyste viděli, jestli REST, SQL nebo jiné externí prostředky zpomalují vaši práci.Monitor dependencies to see if REST, SQL, or other external resources are slowing you down.
  • Pomocí rozhraní API můžete odesílat vlastní události a metriky pro podrobnější přehled o výkonu a využití vaší aplikace.Use the API to send your own events and metrics for a more detailed view of your app's performance and usage.