Usługa Application Insights dla aplikacji konsolowych platformy .NET
Ostrzeżenie
Użyj pakietu Microsoft.ApplicationInsights.WorkerService i skojarzonych instrukcji z usługi Application Insights dla aplikacji usługi Worker Service (aplikacji innych niż HTTP) dla aplikacji konsolowych. Jest ona zgodna z wersjami platformy .NET Core i .NET Framework lub nowszymi wersjami long term support (LTS).
Usługa Application Insights umożliwia monitorowanie aplikacji internetowej pod kątem dostępności, wydajności i użycia.
Rozpoczęcie pracy
W Azure Portal utwórz zasób usługi Application Insights.
Wykonaj kopię parametrów połączenia. Znajdź parametry połączenia na liście rozwijanej Podstawy nowo utworzonego zasobu.
Zainstaluj najnowszy pakiet Microsoft.ApplicationInsights .
Ustaw parametry połączenia w kodzie przed śledzeniem dowolnej telemetrii (lub ustaw zmienną
APPLICATIONINSIGHTS_CONNECTION_STRING
środowiskową). Następnie powinno być możliwe ręczne śledzenie danych telemetrycznych i wyświetlanie ich w 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!");
Uwaga
Dane telemetryczne nie są wysyłane natychmiast. Elementy są wsadowe i wysyłane przez zestaw SDK usługi ApplicationInsights. Aplikacje konsolowe zakończą działanie po wywołaniu
Track()
metod.Dane telemetryczne mogą nie być wysyłane, chyba że
Flush()
zostaną wykonane przedDelay
Sleep
/zakończeniem działania aplikacji, jak pokazano w pełnym przykładzie w dalszej części tego artykułu.Sleep
nie jest wymagane, jeśli używasz poleceniaInMemoryChannel
.Zainstaluj najnowszą wersję pakietu Microsoft.ApplicationInsights.DependencyCollector . Automatycznie śledzi wywołania HTTP, SQL lub innych wywołań zależności zewnętrznych.
Usługę Application Insights można zainicjować i skonfigurować za pomocą kodu lub przy użyciu ApplicationInsights.config
pliku. Upewnij się, że inicjowanie odbywa się tak szybko, jak to możliwe.
Uwaga
ApplicationInsights.config nie jest obsługiwane przez aplikacje platformy .NET Core.
Korzystanie z pliku konfiguracji
W przypadku aplikacji opartych na .NET Framework zestaw SDK usługi Application Insights domyślnie wyszukuje ApplicationInsights.config
plik w katalogu roboczym podczas TelemetryConfiguration
tworzenia. Odczytywanie pliku konfiguracji nie jest obsługiwane na platformie .NET Core.
TelemetryConfiguration config = TelemetryConfiguration.Active; // Reads ApplicationInsights.config file if present
Możesz również określić ścieżkę do pliku konfiguracji:
using System.IO;
TelemetryConfiguration configuration = TelemetryConfiguration.CreateFromConfiguration(File.ReadAllText("C:\\ApplicationInsights.config"));
var telemetryClient = new TelemetryClient(configuration);
Pełny przykład pliku konfiguracji można uzyskać, instalując najnowszą wersję pakietu Microsoft.ApplicationInsights.WindowsServer . Oto minimalna konfiguracja kolekcji zależności, która jest równoważna przykładowi kodu:
<?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>
Konfigurowanie zbierania danych telemetrycznych na podstawie kodu
Uwaga
Odczytywanie pliku konfiguracji nie jest obsługiwane na platformie .NET Core.
Podczas uruchamiania
DependencyTrackingTelemetryModule
aplikacji utwórz i skonfiguruj wystąpienie. Musi być pojedynczy i musi być zachowany przez cały okres istnienia aplikacji.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);
Dodaj typowe inicjatory telemetrii:
// ensures proper DependencyTelemetry.Type is set for Azure RESTful API calls configuration.TelemetryInitializers.Add(new HttpDependenciesParsingTelemetryInitializer());
Jeśli utworzono konfigurację przy użyciu zwykłego
TelemetryConfiguration()
konstruktora, należy dodatkowo włączyć obsługę korelacji. Nie jest to konieczne , jeśli odczytasz konfigurację z pliku lub użytoTelemetryConfiguration.CreateDefault()
pliku lubTelemetryConfiguration.Active
.configuration.TelemetryInitializers.Add(new OperationCorrelationTelemetryInitializer());
Możesz również zainstalować i zainicjować moduł modułu zbierającego Licznik wydajności zgodnie z opisem w tej witrynie internetowej.
Pełny przykład
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;
}
}
}