Aracılığıyla paylaş


.NET konsol uygulamaları için Application Insights

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()SleepDelay gönderilmeyebilir. Sleep kullanıyorsanız InMemoryChannelgerekli 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ış veya TelemetryConfiguration.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;
        }
    }
}