.NET konsol uygulamaları için Application Insights
Uyarı
Microsoft.ApplicationInsights.WorkerService paketini ve konsol uygulamaları için Çalışan Hizmeti uygulamaları için Application Insights (HTTP olmayan uygulamalar) yönergelerini kullanın. .NET Core ve .NET Framework veya üzerinin Uzun Süreli Destek (LTS) sürümleriyle uyumludur.
Application Insights, web uygulamanızı kullanılabilirlik, performans ve kullanım açısından izlemenize olanak tanır.
Başlarken
Azure portal bir Application Insights kaynağı oluşturun.
Bağlantı dizesinin bir kopyasını alın. Oluşturduğunuz yeni kaynağın Temel Bileşenler açılan listesinde bağlantı dizesini bulun.
En son Microsoft.ApplicationInsights paketini yükleyin.
Herhangi bir telemetriyi izlemeden önce kodunuzda bağlantı dizesini ayarlayın (veya ortam değişkenini
APPLICATIONINSIGHTS_CONNECTION_STRING
ayarlayın). Bundan sonra telemetriyi el ile izleyebilmeli ve Azure portal görebilirsiniz.// 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!");
Not
Telemetri anında gönderilmez. Öğeler toplu olarak oluşturulur ve ApplicationInsights SDK'sı tarafından gönderilir. Konsol uygulamaları, yöntemleri çağırdıktan
Track()
sonra çıkar.Telemetri, bu makalenin sonraki bölümlerindeki tam örnekte gösterildiği gibi uygulamadan çıkmadan önce yapılmadığı sürece ve yapılmadığı sürece/
Flush()
Sleep
Delay
gönderilmeyebilir.Sleep
kullanıyorsanızInMemoryChannel
gerekli değildir.Microsoft.ApplicationInsights.DependencyCollector paketinin en son sürümünü yükleyin. HTTP, SQL veya diğer bazı dış bağımlılık çağrılarını otomatik olarak izler.
Application Insights'ı koddan veya dosya kullanarak ApplicationInsights.config
başlatabilir ve yapılandırabilirsiniz. Başlatmanın mümkün olduğunca erken gerçekleştiğine emin olun.
Not
ApplicationInsights.config .NET Core uygulamaları tarafından desteklenmez.
Yapılandırma dosyasını kullanma
.NET Framework tabanlı uygulamalar için, Application Insights SDK'sı ApplicationInsights.config
varsayılan olarak oluşturulurken TelemetryConfiguration
dosyayı çalışma dizininde arar. Yapılandırma dosyasının okunması .NET Core'da desteklenmez.
TelemetryConfiguration config = TelemetryConfiguration.Active; // Reads ApplicationInsights.config file if present
Yapılandırma dosyasının yolunu da belirtebilirsiniz:
using System.IO;
TelemetryConfiguration configuration = TelemetryConfiguration.CreateFromConfiguration(File.ReadAllText("C:\\ApplicationInsights.config"));
var telemetryClient = new TelemetryClient(configuration);
Microsoft.ApplicationInsights.WindowsServer paketinin en son sürümünü yükleyerek yapılandırma dosyasının tam bir örneğini alabilirsiniz. Aşağıda kod örneğine eşdeğer bağımlılık koleksiyonu için minimum yapılandırma verilmiştir:
<?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>
Koddan telemetri koleksiyonunu yapılandırma
Not
Yapılandırma dosyasının okunması .NET Core'da desteklenmez.
Uygulama başlatılırken bir
DependencyTrackingTelemetryModule
örnek oluşturun ve yapılandırın. Tekil olmalı ve uygulama ömrü boyunca korunmalıdır.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);
Yaygın telemetri başlatıcıları ekleyin:
// ensures proper DependencyTelemetry.Type is set for Azure RESTful API calls configuration.TelemetryInitializers.Add(new HttpDependenciesParsingTelemetryInitializer());
Yapılandırmayı düz
TelemetryConfiguration()
bir oluşturucuyla oluşturduysanız, bağıntı desteğini de etkinleştirmeniz gerekir. Yapılandırmayı bir dosyadan veya kullanılmış veyaTelemetryConfiguration.Active
'TelemetryConfiguration.CreateDefault()
den okursanız gerekli değildir.configuration.TelemetryInitializers.Add(new OperationCorrelationTelemetryInitializer());
Performans Sayacı toplayıcı modülünü bu web sitesinde açıklandığı gibi yüklemek ve başlatmak da isteyebilirsiniz.
Tam örnek
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;
}
}
}