ApplicationInsights.config veya .xml ile Application Insights SDK yapılandırma

Application Insights .net SDK, birkaç NuGet paketten oluşur. çekirdek paket , Application Insights telemetri göndermek için apı sağlar. Ek paketler , uygulama ve bağlamınızdan Telemetriyi otomatik olarak izlemek için telemetri modülleri ve başlatıcılar sağlar. Yapılandırma dosyasını ayarlayarak telemetri modüllerini ve başlatıcıları etkinleştirebilir veya devre dışı bırakabilir ve bunların bazıları için parametreler ayarlayabilirsiniz.

Yapılandırma dosyası ApplicationInsights.config ApplicationInsights.xml , uygulamanızın türüne göre veya olarak adlandırılır. SDK 'nın birçok sürümünü yüklediğinizdeprojenize otomatik olarak eklenir. varsayılan olarak, > Application Insights Telemetri eklemeyi destekleyen Visual Studio şablon projelerinden otomatik deneyim kullanılırken, ApplicationInsights.config dosyası proje kök klasöründe oluşturulur ve derleme bin klasörüne kopyalanır. Ayrıca bir IIS sunucusundaki durum İzleyicisitarafından bir Web uygulamasına da eklenir. Azure Web sitesi için uzantı veya Azure VM için uzantı ve sanal makine ölçek kümesi kullanılıyorsa yapılandırma dosyası yok sayılır.

Bir Web sayfasında SDK 'yıdenetlemek için eşdeğer bir dosya yok.

bu belgede yapılandırma dosyasında gördüğünüz bölümler, SDK 'nın bileşenlerini nasıl denetdukları ve hangi NuGet paketlerinin bu bileşenleri yüklendiği açıklanmaktadır.

Not

ApplicationInsights.config ve .xml yönergeleri .NET Core SDK uygulanmaz. .NET Core uygulamalarını yapılandırmak için Bu kılavuzu izleyin.

Telemetri modülleri (ASP.NET)

Her telemetri modülü belirli bir veri türünü toplar ve verileri göndermek için çekirdek API kullanır. modüller, .config dosyasına gerekli satırları da ekleyen farklı NuGet paketleri tarafından yüklenir.

Her modülün yapılandırma dosyasında bir düğüm bulunur. Bir modülü devre dışı bırakmak için düğümü silin veya not edin.

Bağımlılık İzleme

Bağımlılık izleme , uygulamanızın veritabanlarına ve dış hizmetlere ve veritabanlarına yaptığı çağrılar hakkında telemetri toplar. Bu modülün bir IIS sunucusunda çalışmasına izin vermek için durum İzleyicisi yüklemenizgerekir.

Ayrıca, TRACKDEPENDENCY API'sini kullanarak kendi bağımlılık izleme kodunuzu yazabilirsiniz.

Bağımlılıklar, aracı tabanlı (codeless) iliştirme kullanılarak kodunuzun değiştirilmeksizin otomatik olarak toplanabilir. Azure web apps 'te kullanmak için Application Insights uzantısınıetkinleştirin. Azure VM 'de veya Azure sanal makine ölçek kümesinde kullanmak için, VM ve sanal makine ölçek kümesi Için uygulama izleme uzantısınıetkinleştirin.

Performans toplayıcısı

IIS yüklemelerinden CPU, bellek ve ağ yükü gibi sistem performansı sayaçlarını toplar . Hangi sayaçların toplanacağını, sizin ayarladığınız performans sayaçlarını da dahil edebilirsiniz.

Application Insights tanılama telemetrisi

DiagnosticsTelemetryModuleApplication Insights izleme kodundaki hataları raporlar. Örneğin, kod performans sayaçlarına erişemiyorsa veya bir ITelemetryInitializer özel durum oluşturursa. Bu modül tarafından izlenen izleme telemetrisi, Tanılama aramasındagörüntülenir.

* `Microsoft.ApplicationInsights.Extensibility.Implementation.Tracing.DiagnosticsTelemetryModule`
* [Microsoft.ApplicationInsights](https://www.nuget.org/packages/Microsoft.ApplicationInsights) NuGet package. If you only install this package, the ApplicationInsights.config file is not automatically created.

Geliştirici modu

DeveloperModeWithDebuggerAttachedTelemetryModule``TelemetryChanneluygulama işlemine bir hata ayıklayıcı eklendiğinde, tek seferde bir telemetri öğesi olan Application Insights verileri hemen gönderecek şekilde zorlar. bu, uygulamanızın telemetriyi izlediği ve Application Insights portalında göründüğü süre arasındaki süreyi azaltır. CPU ve ağ bant genişliğinden önemli ölçüde ek yüke neden olur.

Web Isteği Izleme

HTTP isteklerinin yanıt süresini ve sonuç kodunu bildirir.

Özel durum izleme

ExceptionTrackingTelemetryModule Web uygulamanızdaki işlenmemiş özel durumları izler. Bkz. arızalar ve özel durumlar.

  • Microsoft.ApplicationInsights.Web.ExceptionTrackingTelemetryModule
  • Microsoft. applicationınsights. Web NuGet paketi
  • Microsoft.ApplicationInsights.WindowsServer.UnobservedExceptionTelemetryModule -gözlemlenen görev özel durumlarını izler
  • Microsoft.ApplicationInsights.WindowsServer.UnhandledExceptionTelemetryModule-çalışan rolleri, Windows hizmetleri ve konsol uygulamaları için işlenmemiş özel durumları izler.
  • Windows Server NuGet paketi Application Insights.

EventSource Izleme

EventSourceTelemetryModuleApplication Insights, izleme olarak için EventSource olaylarını yapılandırmanızı sağlar. EventSource olaylarını izleme hakkında daha fazla bilgi için bkz. EventSource olaylarını kullanma.

ETW olay Izleme

EtwCollectorTelemetryModuleETW sağlayıcılarındaki olayları, izleme olarak Application Insights gönderilmek üzere yapılandırmanıza olanak tanır. ETW olaylarını izleme hakkında daha fazla bilgi için bkz. ETW olaylarını kullanma.

Microsoft. ApplicationInsights

Microsoft. ApplicationInsights paketi SDK 'nın temel API 'sini sağlar. Diğer telemetri modülleri bunu kullanır ve bunu kendi telemetrinizi tanımlamak içinde kullanabilirsiniz.

Telemetri kanalı

telemetri kanalı , Application Insights hizmetine telemetri arabelleğini ve aktarımını yönetir.

  • Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.ServerTelemetryChannel , Web uygulamaları için varsayılan kanaldır. Bellekte verileri arabelleğe alır ve daha güvenilir telemetri teslimi için yeniden deneme mekanizmaları ve yerel disk depolama alanı kullanır.
  • Microsoft.ApplicationInsights.InMemoryChannel , başka bir kanal yapılandırılmamışsa kullanılan hafif bir telemetri kanaldır.

Telemetri başlatıcıları (ASP.NET)

Telemetri başlatıcıları, her telemetri öğesiyle birlikte gönderilen bağlam özelliklerini ayarlar.

Bağlam özelliklerini ayarlamak için kendi başlatıcılarınızı yazabilirsiniz .

standart başlatıcıların tümü Web veya windowsserver NuGet paketleri tarafından ayarlanır:

  • AccountIdTelemetryInitializer AccountId özelliğini ayarlar.

  • AuthenticatedUserIdTelemetryInitializer Kimlik doğrulayan Teduserıd özelliğini JavaScript SDK 'Sı tarafından ayarlanmış olarak ayarlar.

  • AzureRoleEnvironmentTelemetryInitializer``RoleName RoleInstance Device Azure çalışma zamanı ortamından ayıklanan bilgilerle tüm telemetri öğeleri için bağlamın ve özelliklerini güncelleştirir.

  • BuildInfoConfigComponentVersionTelemetryInitializer``Version Component Tüm telemetri öğeleri için bağlam özelliğini BuildInfo.config MS Build tarafından üretilen dosyadan ayıklanan değerle güncelleştirir.

  • ClientIpHeaderTelemetryInitializer``Ip Location isteğin HTTP üstbilgisine göre tüm telemetri öğelerinin bağlamının Updates özelliği X-Forwarded-For .

  • DeviceTelemetryInitializer``DeviceTüm telemetri öğeleri için bağlamın aşağıdaki özelliklerini güncelleştirir.

    • Type "PC" olarak ayarlandı
    • Id , Web uygulamasının çalıştığı bilgisayarın etki alanı adına ayarlanır.
    • OemName , Win32_ComputerSystem.Manufacturer WMI kullanılarak alandan ayıklanan değere ayarlanır.
    • Model , Win32_ComputerSystem.Model WMI kullanılarak alandan ayıklanan değere ayarlanır.
    • NetworkType , öğesinden ayıklanan değere ayarlanır NetworkInterface .
    • Language , adına ayarlanır CurrentCulture .
  • DomainNameRoleInstanceTelemetryInitializer``RoleInstance Device Tüm telemetri öğeleri için bağlam özelliğini, Web uygulamasının çalıştığı bilgisayarın etki alanı adı ile güncelleştirir.

  • OperationNameTelemetryInitializer``Name, RequestTelemetry ve Name Operation isteklerini işlemek için çağrılan ASP.NET MVC denetleyicisi ve eylem adlarının yanı sıra HTTP yöntemine göre tüm telemetri öğelerinin bağlamını ve özelliğini günceller.

  • OperationIdTelemetryInitializer ya da OperationCorrelationTelemetryInitializer Operation.Id otomatik olarak oluşturulan bir istek işlenirken izlenen tüm telemetri öğelerinin bağlam özelliğini güncelleştirir RequestTelemetry.Id .

  • SessionTelemetryInitializer``Id Session ai_session kullanıcının tarayıcısında çalışan ApplicationInsights JavaScript izleme kodu tarafından oluşturulan tanımlama bilgisinden ayıklanan değere sahip tüm telemetri öğeleri için bağlam özelliğini güncelleştirir.

  • SyntheticTelemetryInitializer ya da SyntheticUserAgentTelemetryInitializer User Session Operation bir kullanılabilirlik testi veya arama motoru bot gibi yapay bir kaynaktan gelen bir isteği işlerken izlenen tüm telemetri öğelerinin özelliklerini güncelleştirir. Ölçüm Gezgini , varsayılan olarak yapay telemetri göstermez.

    <Filters>İsteklerin tanımlayıcı özelliklerini ayarla.

  • UserTelemetryInitializer``Id AcquisitionDate User ai_user kullanıcının tarayıcısında çalıştırılan Application Insights JavaScript izleme kodu tarafından oluşturulan tanımlama bilgisinden ayıklanan değerler içeren tüm telemetri öğeleri için bağlamın ve özelliklerini güncelleştirir.

  • WebTestTelemetryInitializerkullanılabilirlik testlerindengelen http istekleri IÇIN Kullanıcı kimliği, oturum kimliği ve yapay kaynak özelliklerini ayarlar. <Filters>İsteklerin tanımlayıcı özelliklerini ayarla.

Service Fabric çalıştıran .net uygulamaları için Microsoft.ApplicationInsights.ServiceFabric NuGet paketini dahil edebilirsiniz. bu paket FabricTelemetryInitializer , telemetri öğelerine Service Fabric özellikleri ekleyen bir içerir. daha fazla bilgi için, bu NuGet paketinin eklediği özellikler hakkında GitHub sayfasına bakın.

Telemetri Işlemcileri (ASP.NET)

Telemetri Işlemcileri SDK 'dan portala gönderilmeden hemen önce her bir telemetri öğesini filtreleyebilir ve değiştirebilir.

Kendi telemetri işlemclerinizi yazabilirsiniz.

Uyarlamalı örnekleme telemetrisi Işlemcisi (2.0.0-Beta3)

Bu, varsayılan olarak etkindir. Uygulamanız çok sayıda telemetri gönderiyorsa, bu işlemci bazılarını kaldırır.


    <TelemetryProcessors>
      <Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.AdaptiveSamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel">
        <MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>
      </Add>
    </TelemetryProcessors>

Parametresi, algoritmanın elde etmeye çalışacağı hedefi sağlar. SDK 'nın her örneği bağımsız olarak çalışır, bu nedenle sunucunuz birkaç makine kümesi ise, telemetri gerçek hacmi buna göre çarpılacak.

Örnekleme hakkında daha fazla bilgi edinin.

Sabit fiyat örnekleme telemetrisi Işlemcisi (2.0.0-Beta1)

Ayrıca standart bir örnekleme telemetri işlemcisi de vardır (2.0.1 'ten):


    <TelemetryProcessors>
     <Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.SamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel">

     <!-- Set a percentage close to 100/N where N is an integer. -->
     <!-- E.g. 50 (=100/2), 33.33 (=100/3), 25 (=100/4), 20, 1 (=100/100), 0.1 (=100/1000) -->
     <SamplingPercentage>10</SamplingPercentage>
     </Add>
   </TelemetryProcessors>

Instrumentationkey

bu, verilerinizin göründüğü Application Insights kaynağını belirler. Genellikle uygulamalarınızın her biri için ayrı bir anahtarla ayrı bir kaynak oluşturursunuz.

Anahtarı dinamik olarak ayarlamak istiyorsanız, örneğin uygulamanızdaki sonuçları farklı kaynaklara göndermek istiyorsanız, yapılandırma dosyasından anahtarı atlayabilir ve bunun yerine kodda ayarlayabilirsiniz.

Standart telemetri modülleri de dahil olmak üzere tüm TelemetryClient örneklerinin anahtarını ayarlamak için. bunu bir ASP.NET hizmetinde global. aspx. cs gibi bir başlatma yönteminde yapın:

using Microsoft.ApplicationInsights.Extensibility;
using Microsoft.ApplicationInsights;

    protected void Application_Start()
    {
        TelemetryConfiguration configuration = TelemetryConfiguration.CreateDefault();
        configuration.InstrumentationKey = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
        var telemetryClient = new TelemetryClient(configuration);
   

Yalnızca belirli bir olay kümesini farklı bir kaynağa göndermek istiyorsanız, belirli bir TelemetryClient için anahtarı ayarlayabilirsiniz:


    var tc = new TelemetryClient();
    tc.Context.InstrumentationKey = "----- my key ----";
    tc.TrackEvent("myEvent");
    // ...

yeni bir anahtar almak için Application Insights portalında yeni bir kaynak oluşturun.

ApplicationId sağlayıcısı

V 2.6.0 'dan başlayarak kullanılabilir

Bu sağlayıcının amacı, bir Izleme anahtarına göre bir uygulama KIMLIĞI aramak için kullanılır. Uygulama KIMLIĞI Requesttelemetri ve Dependencytelemetri 'e dahildir ve portalda bağıntıyı belirlemede kullanılır.

Bu, TelemetryConfiguration.ApplicationIdProvider kodda ya da config içinde ayarlanarak kullanılabilir.

Arabirim: ıapplicationıdprovider

public interface IApplicationIdProvider
{
    bool TryGetApplicationId(string instrumentationKey, out string applicationId);
}

Microsoft. ApplicationInsights SDK 'sı: ve ' de iki uygulama sağlıyoruz ApplicationInsightsApplicationIdProvider DictionaryApplicationIdProvider .

ApplicationInsightsApplicationIdProvider

Bu, profil API 'imizin etrafındaki bir sarmalayıcıdır. İstekleri ve önbellek sonuçlarını azaleder.

Bu sağlayıcı, Microsoft. ApplicationInsights. DependencyCollector veya Microsoft. ApplicationInsights. Web 'i yüklediğinizde yapılandırma dosyanıza eklenir

Bu sınıfın isteğe bağlı bir özelliği vardır ProfileQueryEndpoint . Varsayılan olarak, bu olarak ayarlanır https://dc.services.visualstudio.com/api/profiles/{0}/appId . Bu yapılandırma için bir ara sunucu yapılandırmanız gerekiyorsa, temel adresi ve "/api/Profiles//AppID" dahil olmak üzere proxy 'yi kullanmanızı öneririz {0} . ' {0} ', Izleme anahtarı ile istek başına çalışma zamanında değiştirilir.

ApplicationInsights.config aracılığıyla örnek yapılandırma:

<ApplicationInsights>
    ...
    <ApplicationIdProvider Type="Microsoft.ApplicationInsights.Extensibility.Implementation.ApplicationId.ApplicationInsightsApplicationIdProvider, Microsoft.ApplicationInsights">
        <ProfileQueryEndpoint>https://dc.services.visualstudio.com/api/profiles/{0}/appId</ProfileQueryEndpoint>
    </ApplicationIdProvider>
    ...
</ApplicationInsights>

Kod aracılığıyla örnek yapılandırma:

TelemetryConfiguration.Active.ApplicationIdProvider = new ApplicationInsightsApplicationIdProvider();

DictionaryApplicationIdProvider

Bu, yapılandırılmış Izleme anahtarınız/uygulama KIMLIĞI çiftlerine bağlı olan statik bir sağlayıcıdır.

Bu sınıf Defined , bir sözlük<dize, uygulama kimliği çiftlerine yönelik Izleme anahtarının dize> olan bir özelliğe sahiptir.

Bu sınıf, Next yapılandırmanızda bulunmayan bir Izleme anahtarı istendiğinde kullanmak üzere başka bir sağlayıcıyı yapılandırmak için kullanılabilen isteğe bağlı bir özelliğe sahiptir.

ApplicationInsights.config aracılığıyla örnek yapılandırma:

<ApplicationInsights>
    ...
    <ApplicationIdProvider Type="Microsoft.ApplicationInsights.Extensibility.Implementation.ApplicationId.DictionaryApplicationIdProvider, Microsoft.ApplicationInsights">
        <Defined>
            <Type key="InstrumentationKey_1" value="ApplicationId_1"/>
            <Type key="InstrumentationKey_2" value="ApplicationId_2"/>
        </Defined>
        <Next Type="Microsoft.ApplicationInsights.Extensibility.Implementation.ApplicationId.ApplicationInsightsApplicationIdProvider, Microsoft.ApplicationInsights" />
    </ApplicationIdProvider>
    ...
</ApplicationInsights>

Kod aracılığıyla örnek yapılandırma:

TelemetryConfiguration.Active.ApplicationIdProvider = new DictionaryApplicationIdProvider{
 Defined = new Dictionary<string, string>
    {
        {"InstrumentationKey_1", "ApplicationId_1"},
        {"InstrumentationKey_2", "ApplicationId_2"}
    }
};

Sonraki adımlar

API hakkında daha fazla bilgi edinin.