ApplicationInsights.config veya .xml ile Application Insights SDK'sını yapılandırma
Application Insights .NET SDK'sı birçok NuGet paketinden oluşur. Çekirdek paket, Application Insights'a telemetri göndermek için API sağlar. Daha fazla paket, uygulamanızdan ve bağlamından 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ırakabilirsiniz. Ayrıca bazıları için parametreler de ayarlayabilirsiniz.
Not
Aşağıdaki belgeler Application Insights klasik API'sine dayanır. Application Insights için uzun vadeli plan, OpenTelemetry kullanarak veri toplamaktır. Daha fazla bilgi için bkz . .NET, Node.js, Python ve Java uygulamaları için Azure İzleyici OpenTelemetry'yi etkinleştirme ve OpenTelemetry Yol Haritamız. Geçiş kılavuzu .NET, Node.js ve Python için kullanılabilir.
Yapılandırma dosyası veya ApplicationInsights.xml
olarak adlandırılırApplicationInsights.config
. Ad, uygulamanızın türüne bağlıdır. SDK'nın çoğu sürümünü yüklediğinizde projenize otomatik olarak eklenir. Varsayılan olarak, Application Insights Telemetrisi Ekle'yi>destekleyen Visual Studio şablon projelerinden otomatik deneyimi kullandığınızda, ApplicationInsights.config
dosya proje kök klasöründe oluşturulur. Derlendiğinde, bin klasörüne kopyalanır. Ayrıca bir IIS sunucusundaki Application Insights Aracısı tarafından bir web uygulamasına eklenir. Azure web siteleri için uzantı veya Azure VM'leri ve sanal makine ölçek kümeleri için uzantı kullanılırsa yapılandırma dosyası yoksayılır.
Bir web sayfasında SDK'yi denetlemek için eşdeğer bir dosya yoktur.
Bu makalede yapılandırma dosyasında gördüğünüz bölümler, SDK bileşenlerini nasıl denetledikleri ve hangi NuGet paketlerinin bu bileşenleri yüklediği açıklanmaktadır.
Not
ApplicationInsights.config
ve .xml yönergeleri .NET Core SDK'sı için geçerli değildir. .NET Core uygulamalarını yapılandırmak için ASP.NET Core uygulamaları için Application Insights'taki yönergeleri 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'yi kullanır. Modüller, .config dosyasına gerekli satırları da ekleyen farklı NuGet paketleri tarafından yüklenir.
Yapılandırma dosyasında her modül için bir düğüm bulunur. Modülü devre dışı bırakmak için düğümü silin veya açıklama satırı yapın.
Bağımlılık izleme
Bağımlılık izleme , uygulamanızın veritabanlarına, 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 Application Insights Aracısını yüklemeniz gerekir.
TrackDependency API'sini kullanarak kendi bağımlılık izleme kodunuzu da yazabilirsiniz.
Microsoft.ApplicationInsights.DependencyCollector.DependencyTrackingTelemetryModule
- Microsoft.ApplicationInsights.DependencyCollector NuGet paketi
Bağımlılıklar, aracı tabanlı (kodsuz) ekleme kullanılarak kodunuzu değiştirmeden otomatik olarak birleştirilebilir. Azure web uygulamalarında kullanmak için Application Insights uzantısını etkinleştirin. Bunu bir Azure VM veya Azure sanal makine ölçek kümesinde kullanmak için VM'ler ve sanal makine ölçek kümeleri için Uygulama İzleme uzantısını etkinleştirin.
Performans toplayıcı
Performans toplayıcıSı , IIS yüklemelerinden CPU, bellek ve ağ yükü gibi sistem performans sayaçlarını toplar. Kendi ayarladığınız performans sayaçları da dahil olmak üzere hangi sayaçların toplandığını belirtebilirsiniz.
Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.PerformanceCollectorModule
- Microsoft.ApplicationInsights.PerfCounterCollector NuGet paketi
Application Insights tanılama telemetrisi
sınıfı, DiagnosticsTelemetryModule
Application Insights izleme kodundaki hataları bildirir. Örnek olarak kodun performans sayaçlarına erişememe veya ITelemetryInitializer
özel durum oluşturması verilebilir. Bu modül tarafından izlenen izleme telemetrisi Tanılama Aramasında görünür.
Microsoft.ApplicationInsights.Extensibility.Implementation.Tracing.DiagnosticsTelemetryModule
- Microsoft.ApplicationInsights NuGet paketi. Yalnızca bu paketi yüklerseniz ApplicationInsights.config dosyası otomatik olarak oluşturulmaz.
Geliştirici modu
sınıfı Application Insights'ı DeveloperModeWithDebuggerAttachedTelemetryModule
TelemetryChannel
uygulama işlemine bir hata ayıklayıcı eklendiğinde verileri hemen, bir kerede bir telemetri öğesi göndermeye zorlar. Bu tasarım, uygulamanızın telemetriyi izlediği an ile Application Insights portalında görünmesi arasındaki süreyi azaltır. CPU ve ağ bant genişliği konusunda önemli ek yüke neden olur.
Microsoft.ApplicationInsights.WindowsServer.DeveloperModeWithDebuggerAttachedTelemetryModule
- Application Insights Windows Server NuGet paketi
Web isteği izleme
Web isteği izleme, HTTP isteklerinin yanıt süresini ve sonuç kodunu bildirir.
Microsoft.ApplicationInsights.Web.RequestTrackingTelemetryModule
- Microsoft.ApplicationInsights.Web NuGet paketi
Özel durum izleme
sınıfı, ExceptionTrackingTelemetryModule
web uygulamanızda işlenmeyen özel durumları izler. Daha fazla bilgi için bkz . Hatalar ve özel durumlar.
Microsoft.ApplicationInsights.Web.ExceptionTrackingTelemetryModule
.- Microsoft.ApplicationInsights.Web NuGet paketi.
Microsoft.ApplicationInsights.WindowsServer.UnobservedExceptionTelemetryModule
: Gözlemlenmeyen görevi izler. Özel durum.Microsoft.ApplicationInsights.WindowsServer.UnhandledExceptionTelemetryModule
: Çalışan rolleri, Windows hizmetleri ve konsol uygulamaları için işlenmeyen özel durumları izler.- Application Insights Windows Server NuGet paketi.
EventSource izleme
sınıfı, EventSourceTelemetryModule
Application Insights'a izleme olarak gönderilecek EventSource olaylarını yapılandırmanıza olanak tanır. EventSource olaylarını izleme hakkında bilgi için bkz . EventSource olaylarını kullanma.
Microsoft.ApplicationInsights.EventSourceListener.EventSourceTelemetryModule
- Microsoft.ApplicationInsights.EventSourceListener
ETW olay izleme
sınıfı, EtwCollectorTelemetryModule
ETW sağlayıcılarından application insights'a izleme olarak gönderilecek olayları yapılandırmanıza olanak tanır. ETW olaylarını izleme hakkında bilgi için bkz . ETW olaylarını kullanma.
Microsoft.ApplicationInsights.EtwCollector.EtwCollectorTelemetryModule
- Microsoft.ApplicationInsights.EtwCollector
Microsoft.ApplicationInsights
Paket, Microsoft.ApplicationInsights
SDK'nın temel API'sini sağlar. Diğer telemetri modülleri bu API'yi kullanır. Kendi telemetrinizi tanımlamak için de kullanabilirsiniz.
- ApplicationInsights.config dosyasında girdi yok.
- Microsoft.ApplicationInsights NuGet paketi. Bu NuGet'i yalnızca yüklerseniz hiçbir .config dosyası oluşturulmaz.
Telemetri kanalı
Telemetri kanalı, telemetrinin Application Insights hizmetine arabelleğe alınıp iletilmesini yönetir.
Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.ServerTelemetryChannel
web uygulamaları için varsayılan kanaldır. Verileri bellekte arabelleğe alır ve daha güvenilir telemetri teslimi için yeniden deneme mekanizmaları ve yerel disk depolama kullanır.Microsoft.ApplicationInsights.InMemoryChannel
basit bir telemetri kanalıdır. Başka bir kanal yapılandırılmamışsa kullanılı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
AuthenticatedUserId
Özelliği JavaScript SDK'sı tarafından ayarlandığı şekilde ayarlar.AzureRoleEnvironmentTelemetryInitializer
RoleName
, Azure çalışma zamanı ortamındanDevice
ayıklanan bilgilerle tüm telemetri öğeleri için bağlamın veRoleInstance
özelliklerini güncelleştirir.BuildInfoConfigComponentVersionTelemetryInitializer
Version
tüm telemetri öğeleri için bağlamınComponent
özelliğini MS Build tarafından oluşturulan dosyadanBuildInfo.config
ayıklanan değerle güncelleştirir.ClientIpHeaderTelemetryInitializer
Ip
, isteğinLocation
HTTP üst bilgisine göre tüm telemetri öğelerininX-Forwarded-For
bağlamının özelliğini güncelleştirir.DeviceTelemetryInitializer
tüm telemetri öğeleri için bağlamınDevice
aşağıdaki özelliklerini güncelleştirir.Type
olarak ayarlanırPC
.Id
, web uygulamasının çalıştığı bilgisayarın etki alanı adına ayarlanır.OemName
, WMI kullanılarak alandan ayıklanan değereWin32_ComputerSystem.Manufacturer
ayarlanır.Model
, WMI kullanılarak alandan ayıklanan değereWin32_ComputerSystem.Model
ayarlanır.NetworkType
özelliğinden ayıklanan değereNetworkInterface
ayarlanır.Language
özelliğininCurrentCulture
adına ayarlanır.
DomainNameRoleInstanceTelemetryInitializer
RoleInstance
, web uygulamasınınDevice
çalıştığı bilgisayarın etki alanı adıyla tüm telemetri öğeleri için bağlamın özelliğini güncelleştirir.OperationNameTelemetryInitializer
Name
RequestTelemetry
http yöntemine göre tüm telemetri öğelerininOperation
bağlamının veName
özelliğini ve isteği işlemek için çağrılan ASP.NET MVC denetleyicisinin ve eyleminin adlarını güncelleştirir.OperationIdTelemetryInitializer
veyaOperationCorrelationTelemetryInitializer
otomatik olarak oluşturulanRequestTelemetry.Id
ile bir isteği işlerken izlenen tüm telemetri öğelerinin bağlam özelliğini güncelleştirirOperation.Id
.SessionTelemetryInitializer
Id
, kullanıcının tarayıcısındaSession
çalışan JavaScript izleme kodu tarafındanApplicationInsights
oluşturulan tanımlama bilgisindenai_session
ayıklanan değerle tüm telemetri öğeleri için bağlamın özelliğini güncelleştirir.SyntheticTelemetryInitializer
veyaSyntheticUserAgentTelemetryInitializer
kullanılabilirlik testi veyaOperation
arama motoru botu gibi yapay bir kaynaktan gelen bir isteği işlerken izlenen tüm telemetri öğelerinin ,Session
ve bağlam özelliklerini güncelleştirirUser
. Varsayılan olarak ölçüm gezgini yapay telemetri görüntülemez.<Filters>
İsteklerin tanımlayıcı özellikleri kümesi.UserTelemetryInitializer
, kullanıcının tarayıcısındaId
çalışan Application Insights JavaScript izleme kodu tarafından oluşturulan tanımlama bilgisindenai_user
ayıklanan değerlerle tüm telemetri öğeleri için bağlamın veAcquisitionDate
özellikleriniUser
güncelleştirir.WebTestTelemetryInitializer
kullanılabilirlik testlerinden gelen HTTP istekleri için kullanıcı kimliğini, oturum kimliğini ve yapay kaynak özelliklerini ayarlar.<Filters>
İsteklerin tanımlayıcı özellikleri kümesi.
Azure Service Fabric'te çalışan .NET uygulamaları için NuGet paketini ekleyebilirsiniz Microsoft.ApplicationInsights.ServiceFabric
. Bu paket, telemetri öğelerine Service Fabric özellikleri ekleyen bir FabricTelemetryInitializer
özellik içerir. Daha fazla bilgi için bu NuGet paketi tarafından eklenen özellikler hakkında GitHub sayfasına bakın.
Telemetri işlemcileri (ASP.NET)
Telemetri işlemcileri, SDK'dan portala gönderilmeden önce her telemetri öğesini filtreleyebilir ve değiştirebilir.
Kendi telemetri işlemcilerinizi yazabilirsiniz.
Uyarlamalı örnekleme telemetri işlemcisi (2.0.0-beta3 arası)
Bu işlev varsayılan olarak etkindir. Uygulamanız önemli ölçüde telemetri gönderirse, bu işlemci bazı telemetri verilerini kaldırır.
<TelemetryProcessors>
<Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.AdaptiveSamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel">
<MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>
</Add>
</TelemetryProcessors>
parametresi, algoritmanın ulaşmaya çalıştığı hedefi sağlar. SDK'nın her örneği bağımsız olarak çalışır. Bu nedenle, sunucunuz birkaç makineden oluşan bir kümeyse, gerçek telemetri hacmi buna göre çarpılır.
Örnekleme hakkında daha fazla bilgi edinin.
Sabit hızlı örnekleme telemetri işlemcisi (2.0.0-beta1 arası)
Standart bir örnekleme telemetri işlemcisi de vardır (2.0.1'den itibaren):
<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>
ConnectionString
Bkz. bağlantı dizesi kod örnekleri.
InstrumentationKey
Not
31 Mart 2025’te izleme anahtarı alımı desteği sona erecektir. İzleme anahtarı alımı çalışmaya devam edecek, ancak artık özellik için güncelleştirme veya destek sağlamayacağız. Yeni özelliklerden yararlanmak için bağlantı dizesi geçiş.
Bu ayar, verilerinizin görüntülendiği 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ızdan farklı kaynaklara sonuç göndermek istiyorsanız, anahtarı yapılandırma dosyasından atlayabilir ve bunun yerine kodda ayarlayabilirsiniz.
Standart telemetri modülleri dahil olmak üzere tüm örneklerinin TelemetryClient
anahtarını ayarlamak için, bu adımı ASP.NET hizmetinde global.aspx.cs gibi bir başlatma yönteminde gerçekleştirin:
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);
Belirli bir olay kümesini farklı bir kaynağa göndermek istiyorsanız, belirli bir telemetri istemcisinin anahtarını 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ı
Sağlayıcı v2.6.0'dan itibaren kullanılabilir.
Bu sağlayıcının amacı, izleme anahtarına dayalı bir uygulama kimliği aramaktır. Uygulama kimliği ve içinde RequestTelemetry
DependencyTelemetry
bulunur ve portalda bağıntıyı belirlemek için kullanılır.
Bu işlev, kodda veya yapılandırma dosyasında ayarlanarak TelemetryConfiguration.ApplicationIdProvider
kullanılabilir.
Arabirim: IApplicationIdProvider
public interface IApplicationIdProvider
{
bool TryGetApplicationId(string instrumentationKey, out string applicationId);
}
Microsoft.ApplicationInsights SDK'sında iki uygulama sağlıyoruz: ApplicationInsightsApplicationIdProvider
ve DictionaryApplicationIdProvider
.
ApplicationInsightsApplicationIdProvider
Bu sarmalayıcı Profil API'mize yöneliktir. İstekleri kısıtlar ve sonuçları önbelleğe alır.
Bu sağlayıcı, Microsoft.ApplicationInsights.DependencyCollector veya Microsoft.ApplicationInsights.Web yüklediğinizde yapılandırma dosyanıza eklenir.
Bu sınıfın isteğe bağlı bir özelliği ProfileQueryEndpoint
vardır. Varsayılan olarak olarak 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 ara sunucu olarak eklemeniz ve eklemeniz "/api/profiles/{0}/appId"
önerilir. A {0}
, çalışma zamanında istek başına izleme anahtarıyla 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 statik sağlayıcı, yapılandırılmış izleme anahtarı/uygulama kimliği çiftlerinize dayanır.
Bu sınıf, izleme anahtarı/uygulama kimliği çiftlerinin bir Dictionary<string,string>
özelliğine sahiptirDefined
.
Bu sınıf, yapılandırmanızda mevcut olmayan bir izleme anahtarı istendiğinde kullanmak üzere başka bir sağlayıcı yapılandırmak için kullanılabilen isteğe bağlı özelliğine Next
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"}
}
};
ASP.NET uygulamaları için anlık görüntü koleksiyonunu yapılandırma
ASP.NET uygulamaları için bir anlık görüntü koleksiyonu yapılandırın.