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.
Microsoft.ApplicationInsights.DependencyCollector.DependencyTrackingTelemetryModule- Microsoft. applicationınsights. dependencycollector NuGet paketi.
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.
Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.PerformanceCollectorModule- Microsoft. applicationınsights. perfcountercollector NuGet paketi.
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.
Microsoft.ApplicationInsights.WindowsServer.DeveloperModeWithDebuggerAttachedTelemetryModule- Application Insights Windows Server NuGet paketi
Web Isteği Izleme
HTTP isteklerinin yanıt süresini ve sonuç kodunu bildirir.
Microsoft.ApplicationInsights.Web.RequestTrackingTelemetryModule- Microsoft. applicationınsights. Web NuGet paketi
Ö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ı izlerMicrosoft.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.
Microsoft.ApplicationInsights.EventSourceListener.EventSourceTelemetryModule- Microsoft. ApplicationInsights. EventSourceListener
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.EtwCollector.EtwCollectorTelemetryModule- Microsoft. ApplicationInsights. EtwCollector
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.
- ApplicationInsights.config giriş yok.
- Microsoft. applicationınsights NuGet paketi. yalnızca bu NuGet yüklüyorsanız .config dosya oluşturulmaz.
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:
AccountIdTelemetryInitializerAccountId özelliğini ayarlar.AuthenticatedUserIdTelemetryInitializerKimlik doğrulayan Teduserıd özelliğini JavaScript SDK 'Sı tarafından ayarlanmış olarak ayarlar.AzureRoleEnvironmentTelemetryInitializer``RoleNameRoleInstanceDeviceAzure çalışma zamanı ortamından ayıklanan bilgilerle tüm telemetri öğeleri için bağlamın ve özelliklerini güncelleştirir.BuildInfoConfigComponentVersionTelemetryInitializer``VersionComponentTüm telemetri öğeleri için bağlam özelliğiniBuildInfo.configMS Build tarafından üretilen dosyadan ayıklanan değerle güncelleştirir.ClientIpHeaderTelemetryInitializer``IpLocationisteğin HTTP üstbilgisine göre tüm telemetri öğelerinin bağlamının Updates özelliğiX-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.ManufacturerWMI kullanılarak alandan ayıklanan değere ayarlanır.Model,Win32_ComputerSystem.ModelWMI kullanılarak alandan ayıklanan değere ayarlanır.NetworkType, öğesinden ayıklanan değere ayarlanırNetworkInterface.Language, adına ayarlanırCurrentCulture.
DomainNameRoleInstanceTelemetryInitializer``RoleInstanceDeviceTü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,RequestTelemetryveNameOperationisteklerini 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.OperationIdTelemetryInitializerya daOperationCorrelationTelemetryInitializerOperation.Idotomatik olarak oluşturulan bir istek işlenirken izlenen tüm telemetri öğelerinin bağlam özelliğini güncelleştirirRequestTelemetry.Id.SessionTelemetryInitializer``IdSessionai_sessionkullanı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.SyntheticTelemetryInitializerya daSyntheticUserAgentTelemetryInitializerUserSessionOperationbir 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``IdAcquisitionDateUserai_userkullanı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"}
}
};