Application Insights’ta örnekleme
Örnekleme, Application Insights'taki bir özelliktir. Uygulama verilerinin istatistiksel olarak doğru analizini korurken telemetri trafiğini, veri maliyetlerini ve depolama maliyetlerini azaltmanın önerilen yoludur. Örnekleme ayrıca Application Insights'ın telemetrinizi azaltmasını önlemenize de yardımcı olur. Örnekleme filtresi, tanılama araştırmaları yaparken öğeler arasında gezinebilmeniz için ilgili öğeleri seçer.
Ölçüm sayıları portalda sunulduğunda örneklemeyi hesaba katmak için yeniden normalleştirilir. Bunu yapmak, istatistikler üzerindeki tüm etkiyi en aza indirir.
Not
- OpenTelemetry Distro'muzu benimsediyseniz ve yapılandırma seçeneklerini arıyorsanız bkz . Örneklemeyi Etkinleştirme.
Dikkat
Yeni uygulamalar veya müşterilerin Azure İzleyici Application Insights'ı desteklemesi için Azure İzleyici OpenTelemetry Distro'yu öneririz. Azure İzleyici OpenTelemetry Distro, Application Insights SDK'sı ile benzer bir işlev ve deneyim sunar. .NET, Node.js ve Python için geçiş kılavuzlarını kullanarak Application Insights SDK'sından geçiş yapmak mümkündür, ancak geriye dönük uyumluluk için birkaç özellik daha eklemeye çalışıyoruz.
Kısa özet
- Üç farklı örnekleme türü vardır: uyarlamalı örnekleme, sabit hızlı örnekleme ve alım örneklemesi.
- Uyarlamalı örnekleme, Application Insights ASP.NET ve ASP.NET Core Yazılım Geliştirme Setleri (SDK) ve Azure İşlevleri'nin tüm son sürümlerinde varsayılan olarak etkinleştirilir.
- Sabit hızlı örnekleme, ASP.NET, ASP.NET Core, Java (hem aracı hem de SDK), JavaScript ve Python için Application Insights SDK'larının son sürümlerinde kullanılabilir.
- Java'da örnekleme geçersiz kılmaları kullanılabilir ve seçili bağımlılıklara, isteklere ve sistem durumu denetimlerine farklı örnekleme hızları uygulamanız gerektiğinde kullanışlıdır. Örneğin tüm önemli hatalar %100'de tutulurken bazı gürültülü bağımlılıkları ayarlamak için örnekleme geçersiz kılmalarını kullanın. Bu davranış, telemetriniz üzerinde ayrıntılı bir denetim düzeyi sağlayan sabit örnekleme biçimidir.
- Alma örneklemesi Application Insights hizmet uç noktasında çalışır. Yalnızca başka hiçbir örnekleme geçerli olmadığında uygulanır. SDK telemetrinizi örneklediyse, alma örneklemesi devre dışı bırakılır.
- Web uygulamaları için, özel olayları günlüğe kaydederseniz ve bir olay kümesinin birlikte tutulduğunu veya atıldığından emin olmanız gerekiyorsa, olayların aynı
OperationId
değere sahip olması gerekir. - Analytics sorguları yazıyorsanız örneklemeyi dikkate almanız gerekir. Özellikle kayıtları saymak yerine kullanmanız
summarize sum(itemCount)
gerekir. - Performans ölçümleri ve özel ölçümler de dahil olmak üzere bazı telemetri türleri, örneklemenin etkinleştirilip etkinleştirilmediğinden bağımsız olarak her zaman tutulur.
Aşağıdaki tabloda, her SDK için kullanılabilen örnekleme türleri ve uygulama türü özetlenmiştir:
Application Insights SDK'sı | Uyarlamalı örnekleme desteklenir | Sabit oranlı örnekleme desteklenir | Alım örneklemesi destekleniyor |
---|---|---|---|
ASP.NET | Evet (varsayılan olarak açık) | Evet | Yalnızca başka örnekleme etkin değilse |
ASP.NET Core | Evet (varsayılan olarak açık) | Evet | Yalnızca başka örnekleme etkin değilse |
Azure İşlevleri | Evet (varsayılan olarak açık) | Hayır | Yalnızca başka örnekleme etkin değilse |
Java | Hayır | Evet | Yalnızca başka örnekleme etkin değilse |
JavaScript | Hayır | Evet | Yalnızca başka örnekleme etkin değilse |
Node.JS | Hayır | Evet | Yalnızca başka örnekleme etkin değilse |
Python | Hayır | Evet | Yalnızca başka örnekleme etkin değilse |
Diğerleri | Hayır | Hayır | Evet |
Not
- Java Application Agent 3.4.0 ve üzeri, Application Insights'a telemetri gönderirken varsayılan olarak hız sınırlı örnekleme kullanır. Daha fazla bilgi için bkz . Hız sınırlı örnekleme.
- Bu sayfanın çoğundaki bilgiler Application Insights SDK'larının geçerli sürümleri için geçerlidir. SDK'ların eski sürümleri hakkında bilgi için bkz . Eski SDK sürümleri.
Örnekleme ne zaman kullanılır?
Genel olarak, küçük ve orta ölçekli uygulamaların çoğu için örneklemeye ihtiyacınız yoktur. En yararlı tanılama bilgileri ve en doğru istatistikler, tüm kullanıcı etkinlikleriniz hakkında veri toplanarak elde edilir.
Örneklemenin başlıca avantajları şunlardır:
- Uygulamanız kısa bir zaman aralığında yüksek oranda telemetri gönderdiğinde Application Insights hizmeti veri noktalarını bırakır ("kısıtlar"). Örnekleme, uygulamanızın azaltmayı görme olasılığını azaltır.
- Fiyatlandırma katmanınızın veri noktası kotası içinde kalma.
- Telemetri koleksiyonundan gelen ağ trafiğini azaltmak için.
Örnekleme nasıl çalışır?
Örnekleme algoritması, hangi telemetri öğelerini saklayıp bırakmadığına, örneklemeyi SDK veya Application Insights hizmetinin mi yaptığına karar verir. Application Insights'ın daha az veriyle bile eyleme dönüştürülebilir ve güvenilir bir tanılama deneyimi sunmasını sağlayarak birbiriyle ilişkili tüm veri noktalarını olduğu gibi tutmak için kurallara uyar. Örneğin, bir örnek başarısız bir istek içeriyorsa, özel durumlar ve izlemeler gibi tüm ilgili telemetri öğelerini korur. Bu şekilde, Application Insights'ta istek ayrıntılarını görüntülediğinizde, isteği ve ilişkili telemetri verilerini her zaman görürsünüz.
Örnekleme kararı, isteğin işlem kimliğini temel alır ve bu da belirli bir işleme ait tüm telemetri öğelerinin korunduğu veya bırakıldığı anlamına gelir. İşlem kimliği kümesi olmayan telemetri öğeleri için (HTTP bağlamı olmayan zaman uyumsuz iş parçacıklarından bildirilen telemetri öğeleri gibi) örnekleme yalnızca her türdeki telemetri öğelerinin yüzdesini yakalar.
Application Insights hizmeti, telemetri verilerini size geri sunarken, eksik veri noktalarını telafi etmek için ölçümleri toplama sırasında kullanılan örnekleme yüzdesine göre ayarlar. Bu nedenle, Application Insights'taki telemetriye bakarken, kullanıcılar gerçek sayılara yakın istatistiksel olarak doğru yaklaşık değerler görür.
Yaklaşık değerin doğruluğu büyük ölçüde yapılandırılan örnekleme yüzdesine bağlıdır. Ayrıca, çok sayıda kullanıcıdan gelen çok sayıda benzer isteği işleyen uygulamalar için doğruluk artar. Öte yandan, önemli bir yükle çalışmayan uygulamalar için örnekleme gerekmez çünkü bu uygulamalar genellikle kotanın içinde kalırken tüm telemetri verilerini gönderebilir ve azaltmadan veri kaybına neden olabilir.
Örnekleme türleri
Üç farklı örnekleme yöntemi vardır:
Uyarlamalı örnekleme, ASP.NET/ASP.NET Core uygulamanızdaki SDK'dan ve Azure İşlevleri gönderilen telemetrinin hacmini otomatik olarak ayarlar. ASP.NET veya ASP.NET Core SDK'sını kullandığınızda varsayılan örneklemedir. Uyarlamalı örnekleme şu anda yalnızca ASP.NET/ASP.NET Core sunucu tarafı telemetrisinde ve Azure İşlevleri için kullanılabilir.
Sabit hızlı örnekleme , hem ASP.NET hem de ASP.NET Core veya Java sunucunuzdan ve kullanıcılarınızın tarayıcılarından gönderilen telemetri hacmini azaltır. Oranı siz ayarlarsınız. İstemci ve sunucu örneklemelerini eşitler, böylece Arama'da ilgili sayfa görünümleri ve istekler arasında gezinebilirsiniz.
Alma örneklemesi Application Insights hizmet uç noktasında gerçekleşir. Uygulamanızdan gelen telemetri verilerinin bir kısmını, ayarladığınız örnekleme hızında atar. Uygulamanızdan gönderilen telemetri trafiğini azaltmaz, ancak aylık kotanızın içinde kalmanıza yardımcı olur. Alma örneklemesinin temel avantajı, uygulamanızı yeniden dağıtmadan örnekleme hızını ayarlayabilmenizdir. Alma örneklemesi tüm sunucular ve istemciler için aynı şekilde çalışır, ancak başka örnekleme türleri çalışırken uygulanmaz.
Önemli
Telemetri türü için uyarlamalı veya sabit hız örnekleme yöntemleri etkinleştirilirse, bu telemetri için alım örnekleme devre dışı bırakılır. Ancak SDK düzeyinde örneklemenin dışında tutulan telemetri türleri yine de portalda ayarlanan hızda alım örneklemesine tabi olacaktır.
Uyarlamalı örnekleme
Uyarlamalı örnekleme, web sunucusu uygulamanızdan Application Insights hizmet uç noktasına gönderilen telemetri hacmini etkiler.
İpucu
Uyarlamalı örnekleme, ASP.NET SDK'sını veya ASP.NET Core SDK'sını kullandığınızda varsayılan olarak etkinleştirilir ve Azure İşlevleri için de varsayılan olarak etkinleştirilir.
Ses düzeyi, hız sınırının MaxTelemetryItemsPerSecond
içinde kalacak şekilde otomatik olarak ayarlanır. Uygulama hata ayıklama veya düşük kullanım sırasında olduğu gibi düşük telemetri oluşturursa, birim altında MaxTelemetryItemsPerSecond
kaldığı sürece öğeleri bırakmaz. Telemetri hacmi arttıkça, örnekleme hızını hedef birime isabet etmek için ayarlar. Düzenli aralıklarla yeniden hesaplanan bu ayarlama, giden iletim hızının hareketli ortalamasını temel alır.
Hedef birime ulaşmak için oluşturulan telemetri verilerinin bir bölümü atılır. Ancak diğer örnekleme türlerinde olduğu gibi algoritma da ilgili telemetri öğelerini korur. Örneğin, Arama'da telemetriyi incelerken, belirli bir özel durumla ilgili isteği bulabilirsiniz.
İstek oranı ve özel durum oranı gibi ölçüm sayıları örnekleme oranını telafi edecek şekilde ayarlanır ve böylece Ölçüm Gezgini'nde yaklaşık değerler gösterilir.
ASP.NET uygulamaları için uyarlamalı örneklemeyi yapılandırma
Not
Bu bölüm, ASP.NET Core uygulamaları için değil ASP.NET uygulamalar için geçerlidir. Bu belgenin devamında ASP.NET Core uygulamaları için uyarlamalı örnekleme yapılandırma hakkında bilgi edinin.
içinde ApplicationInsights.config
, düğümde AdaptiveSamplingTelemetryProcessor
birkaç parametre ayarlayabilirsiniz. Gösterilen şekiller varsayılan değerlerdir:
<MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>
Uyarlamalı algoritmanın her sunucu konağı üzerinde toplamayı hedeflediği mantıksal işlemlerin hedef oranı. Web uygulamanız birçok konakta çalışıyorsa, Application Insights portalında hedef trafik oranınızda kalacak şekilde bu değeri azaltın.
<EvaluationInterval>00:00:15</EvaluationInterval>
Geçerli telemetri hızının yeniden değerlendirildiği aralık. Değerlendirme hareketli ortalama olarak gerçekleştirilir. Telemetriniz ani patlamalara karşı sorumluysa bu aralığı kısaltmak isteyebilirsiniz.
<SamplingPercentageDecreaseTimeout>00:02:00</SamplingPercentageDecreaseTimeout>
Örnekleme yüzdesi değeri değiştiğinde, daha az veri yakalamak için örnekleme yüzdesini ne kadar hızlı azaltacağımızı belirler.
<SamplingPercentageIncreaseTimeout>00:15:00</SamplingPercentageIncreaseTimeout>
Örnekleme yüzdesi değeri değiştiğinde, daha fazla veri yakalamak için örnekleme yüzdesini ne kadar sürede yeniden artıracağımızı belirler.
<MinSamplingPercentage>0.1</MinSamplingPercentage>
Örnekleme yüzdesi farklılık gösterdiğinden ayarlamamıza izin verilen en düşük değer nedir?
<MaxSamplingPercentage>100.0</MaxSamplingPercentage>
Örnekleme yüzdesi farklılık gösterdiğinden ayarlamamıza izin verilen maksimum değer nedir?
<MovingAverageRatio>0.25</MovingAverageRatio>
Hareketli ortalamanın hesaplanmasında, bu değer en son değere atanması gereken ağırlığı belirtir. 1'e eşit veya 1'den küçük bir değer kullanın. Daha küçük değerler, algoritmanın ani değişikliklere daha az reaktif olmasını sağlar.
<InitialSamplingPercentage>100</InitialSamplingPercentage>
Uygulama başlatıldığında örneklene telemetri miktarı. Hata ayıklarken bu değeri azaltmayın.
<ExcludedTypes>type;type</ExcludedTypes>
Örneklemeye tabi olmasını istemediğiniz türlerin noktalı virgülle ayrılmış listesi. Tanınan türler şunlardır:
Dependency
,Event
,Exception
,PageView
,Request
,Trace
. Belirtilen türlerin tüm telemetrisi iletilir; belirtilmeyen türler örneklenir.<IncludedTypes>type;type</IncludedTypes>
Örneklemeye tabi olmasını istediğiniz türlerin noktalı virgülle ayrılmış listesi. Tanınan türler şunlardır:
Dependency
,Event
,Exception
,PageView
,Request
,Trace
. Belirtilen türler örneklenir; diğer türlerin tüm telemetrisi her zaman iletilir.
Uyarlamalı örneklemeyi kapatmak için düğümleri AdaptiveSamplingTelemetryProcessor
'den ApplicationInsights.config
kaldırın.
Alternatif: Kodda uyarlamalı örneklemeyi yapılandırma
Dosyada .config
örnekleme parametresini ayarlamak yerine bu değerleri program aracılığıyla ayarlayabilirsiniz.
Dosyadan
AdaptiveSamplingTelemetryProcessor
.config
tüm düğümleri kaldırın.Uyarlamalı örneklemeyi yapılandırmak için aşağıdaki kod parçacığını kullanın:
using Microsoft.ApplicationInsights; using Microsoft.ApplicationInsights.Extensibility; using Microsoft.ApplicationInsights.WindowsServer.Channel.Implementation; using Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel; // ... var builder = TelemetryConfiguration.Active.DefaultTelemetrySink.TelemetryProcessorChainBuilder; // For older versions of the Application Insights SDK, use the following line instead: // var builder = TelemetryConfiguration.Active.TelemetryProcessorChainBuilder; // Enable AdaptiveSampling so as to keep overall telemetry volume to 5 items per second. builder.UseAdaptiveSampling(maxTelemetryItemsPerSecond:5); // If you have other telemetry processors: builder.Use((next) => new AnotherProcessor(next)); builder.Build();
(Telemetri işlemcileri hakkında bilgi edinin.)
Ayrıca, her telemetri türü için örnekleme hızını ayrı ayrı ayarlayabilir veya hatta belirli türlerin örneklenmesinin dışında tutabilirsiniz:
// The following configures adaptive sampling with 5 items per second, and also excludes Dependency telemetry from being subjected to sampling.
builder.UseAdaptiveSampling(maxTelemetryItemsPerSecond:5, excludedTypes: "Dependency");
ASP.NET Core uygulamaları için uyarlamalı örneklemeyi yapılandırma
ASP.NET Core uygulamaları kodda veya dosya aracılığıyla appsettings.json
yapılandırılabilir. Daha fazla bilgi için, bkz. ASP.NET Core’da yapılandırma analizi.
Uyarlamalı örnekleme, tüm ASP.NET Core uygulamaları için varsayılan olarak etkindir. Örnekleme davranışını devre dışı bırakabilir veya özelleştirebilirsiniz.
Uyarlamalı örneklemeyi kapatma
Application Insights hizmeti eklenirken varsayılan örnekleme özelliği devre dışı bırakılabilir.
dosyasındaki yönteminden WebApplication.CreateBuilder()
Program.cs
sonra ekleyinApplicationInsightsServiceOptions
:
var builder = WebApplication.CreateBuilder(args);
var aiOptions = new Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions();
aiOptions.EnableAdaptiveSampling = false;
builder.Services.AddApplicationInsightsTelemetry(aiOptions);
var app = builder.Build();
Yukarıdaki kod uyarlamalı örneklemeyi devre dışı bırakır. Daha fazla özelleştirme seçeneğiyle örnekleme eklemek için aşağıdaki adımları izleyin.
Örnekleme ayarlarını yapılandırma
Örnekleme davranışını özelleştirmek için aşağıdaki uzantı yöntemlerini TelemetryProcessorChainBuilder
kullanın.
Önemli
Örneklemeyi yapılandırmak için bu yöntemi kullanırsanız, çağırırken AddApplicationInsightsTelemetry()
özelliğini false
olarak ayarladığınızdan aiOptions.EnableAdaptiveSampling
emin olun. Bu değişikliği yaptıktan sonra özelleştirmelerinizle uyarlamalı örneklemeyi yeniden etkinleştirmek için aşağıdaki kod bloğundaki yönergeleri izlemeniz gerekir. Bunun yapılmaması aşırı veri alımına neden olabilir. Örnekleme ayarlarını değiştirerek her zaman test edin ve maliyetlerinizi denetlemeye yardımcı olmak için uygun günlük veri üst sınırını ayarlayın.
using Microsoft.ApplicationInsights.AspNetCore.Extensions;
using Microsoft.ApplicationInsights.Extensibility;
var builder = WebApplication.CreateBuilder(args);
builder.Services.Configure<TelemetryConfiguration>(telemetryConfiguration =>
{
var telemetryProcessorChainBuilder = telemetryConfiguration.DefaultTelemetrySink.TelemetryProcessorChainBuilder;
// Using adaptive sampling
telemetryProcessorChainBuilder.UseAdaptiveSampling(maxTelemetryItemsPerSecond: 5);
// Alternately, the following configures adaptive sampling with 5 items per second, and also excludes DependencyTelemetry from being subject to sampling:
// telemetryProcessorChainBuilder.UseAdaptiveSampling(maxTelemetryItemsPerSecond:5, excludedTypes: "Dependency");
telemetryProcessorChainBuilder.Build();
});
builder.Services.AddApplicationInsightsTelemetry(new ApplicationInsightsServiceOptions
{
EnableAdaptiveSampling = false,
});
var app = builder.Build();
SamplingPercentageEstimatorSettings sınıfını kullanarak diğer örnekleme ayarlarını özelleştirebilirsiniz:
using Microsoft.ApplicationInsights.WindowsServer.Channel.Implementation;
telemetryProcessorChainBuilder.UseAdaptiveSampling(new SamplingPercentageEstimatorSettings
{
MinSamplingPercentage = 0.01,
MaxSamplingPercentage = 100,
MaxTelemetryItemsPerSecond = 5
}, null, excludedTypes: "Dependency");
uyarlamalı örneklemeyi Azure İşlevleri için yapılandırma
Azure İşlevleri'de çalışan uygulamalar için uyarlamalı örneklemeyi yapılandırmak için bu sayfadaki yönergeleri izleyin.
Sabit oranlı örnekleme
Sabit hızda örnekleme, web sunucunuzdan ve web tarayıcılarınızdan gönderilen trafiği azaltır. Uyarlamalı örneklemeden farklı olarak, telemetriyi sizin tarafınızdan karar verilmiş sabit bir hızda azaltır. ASP.NET, ASP.NET Core, Java ve Python uygulamaları için sabit hızlı örnekleme kullanılabilir.
Diğer tekniklerde olduğu gibi ilgili öğeleri de korur. ayrıca, ilgili öğelerin korunması için istemci ve sunucu örneklemesini eşitler. Örneğin, Arama'daki bir sayfa görünümüne baktığınızda ilgili sunucu isteklerini bulabilirsiniz.
Ölçüm Gezgini'nde istek ve özel durum sayısı gibi hızlar, örnekleme oranını telafi etmek için bir faktörle çarpılır ve böylece mümkün olduğunca doğru olur.
ASP.NET uygulamaları için sabit hız örneklemeyi yapılandırma
Uyarlamalı örneklemeyi devre dışı bırakma: içinde
ApplicationInsights.config
düğümü kaldırın veya açıklama ekleyinAdaptiveSamplingTelemetryProcessor
.<TelemetryProcessors> <!-- Disabled adaptive sampling: <Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.AdaptiveSamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel"> <MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond> </Add> -->
Sabit hız örnekleme modülünü etkinleştirin. Bu kod parçacığını içine
ApplicationInsights.config
ekleyin:Bu örnekte SamplingPercentage 20 olduğundan tüm öğelerin % 20'sini örnekledik. Ölçüm Gezgini'ndeki değerler telafi etmek için (100/20) = 5 ile çarpılır.
<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>20</SamplingPercentage> </Add> </TelemetryProcessors>
Alternatif olarak, dosyada
ApplicationInsights.config
örnekleme parametresini ayarlamak yerine şu değerleri program aracılığıyla ayarlayabilirsiniz:using Microsoft.ApplicationInsights.Extensibility; using Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel; // ... var builder = TelemetryConfiguration.Active.DefaultTelemetrySink.TelemetryProcessorChainBuilder; // For older versions of the Application Insights SDK, use the following line instead: // var builder = TelemetryConfiguration.Active.TelemetryProcessorChainBuilder; builder.UseSampling(10.0); // percentage // If you have other telemetry processors: builder.Use((next) => new AnotherProcessor(next)); builder.Build();
(Telemetri işlemcileri hakkında bilgi edinin.)
ASP.NET Core uygulamaları için sabit hız örneklemeyi yapılandırma
Uyarlamalı örneklemeyi devre dışı bırakma
yönteminden
WebApplication.CreateBuilder()
sonra, kullanılarakApplicationInsightsServiceOptions
değişiklikler yapılabilir:var builder = WebApplication.CreateBuilder(args); var aiOptions = new Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions(); aiOptions.EnableAdaptiveSampling = false; builder.Services.AddApplicationInsightsTelemetry(aiOptions); var app = builder.Build();
Sabit hız örnekleme modülünü etkinleştirme
Yöntemden
WebApplication.CreateBuilder()
sonra değişiklikler yapılabilir:var builder = WebApplication.CreateBuilder(args); builder.Services.Configure<TelemetryConfiguration>(telemetryConfiguration => { var builder = telemetryConfiguration.DefaultTelemetrySink.TelemetryProcessorChainBuilder; // Using fixed rate sampling double fixedSamplingPercentage = 10; builder.UseSampling(fixedSamplingPercentage); builder.Build(); }); builder.Services.AddApplicationInsightsTelemetry(new ApplicationInsightsServiceOptions { EnableAdaptiveSampling = false, }); var app = builder.Build();
Java uygulamaları için örnekleme geçersiz kılmalarını ve sabit hızlı örneklemeyi yapılandırma
Varsayılan olarak Java otomatik yetkisiz erişim ve SDK'da örnekleme etkinleştirilmez. Şu anda Java otomatik müdahalesi, örnekleme geçersiz kılmaları ve sabit hızlı örnekleme desteklenmektedir. Uyarlamalı örnekleme Java'da desteklenmez.
Java otomatik müdahalesini yapılandırma
- Varsayılan örnekleme hızını geçersiz kılan örnekleme geçersiz kılmalarını yapılandırmak ve seçili isteklere ve bağımlılıklara farklı örnekleme hızları uygulamak için örnekleme geçersiz kılma kılavuzunu kullanın.
- Telemetrinizin tümü için geçerli olan sabit hızda örneklemeyi yapılandırmak için sabit hız örnekleme kılavuzunu kullanın.
Not
Örnekleme yüzdesi için 100/N'ye yakın bir yüzde seçin; burada N tamsayıdır. Şu anda örnekleme diğer değerleri desteklememektedir.
OpenCensus Python uygulamaları için sabit hız örneklemeyi yapılandırma
Uygulamanızı en son OpenCensus Azure İzleyici ihracatçılarıyla izleyin.
Not
Ölçüm verenler için sabit oranlı örnekleme kullanılamaz. Bu, örneklemenin yapılandırılabildiği tek telemetri türlerinin özel ölçümler olduğu anlamına gelir. Ölçümleri veren, izlediği tüm telemetri verilerini gönderir.
İzleme için sabit oranlı örnekleme
Yapılandırmanızın Tracer
bir parçası olarak belirtebilirsinizsampler
. Açık örnekleyici sağlanmazsa, ProbabilitySampler
varsayılan olarak kullanılır. varsayılan ProbabilitySampler
olarak 1/10000 oranını kullanır; yani her 10.000 istekten biri Application Insights'a gönderilir. Örnekleme oranı belirtmek istiyorsanız aşağıdaki ayrıntılara bakın.
Örnekleme hızını belirtmek için örnekleme hızı 0,0 ile 1,0 (dahil) arasında olan bir örnekleyici belirttiğinizden emin olun Tracer
. 1,0 örnekleme oranı %100'dür; diğer bir deyişle tüm istekleriniz Application Insights'a telemetri olarak gönderilir.
tracer = Tracer(
exporter=AzureExporter(
instrumentation_key='00000000-0000-0000-0000-000000000000',
),
sampler=ProbabilitySampler(1.0),
)
Günlükler için sabit oranlı örnekleme
İsteğe bağlı bağımsız değişkenini değiştirerek logging_sampling_rate
için AzureLogHandler
sabit oranlı örneklemeyi yapılandırabilirsiniz. Bağımsız değişken sağlanmazsa 1,0 örnekleme hızı kullanılır. 1,0 örnekleme oranı %100'ünü temsil eder; diğer bir deyişle tüm istekleriniz Application Insights'a telemetri olarak gönderilir.
handler = AzureLogHandler(
instrumentation_key='00000000-0000-0000-0000-000000000000',
logging_sampling_rate=0.5,
)
JavaScript ile web sayfaları için sabit hızlı örneklemeyi yapılandırma
JavaScript tabanlı web sayfaları Application Insights'ı kullanacak şekilde yapılandırılabilir. Telemetri, kullanıcının tarayıcısında çalışan istemci uygulamasından gönderilir ve sayfalar herhangi bir sunucudan barındırılabilir.
Application Insights için JavaScript tabanlı web sayfalarınızı yapılandırırken , Application Insights portalından edindiğiniz JavaScript kod parçacığını değiştirin.
İpucu
JavaScript içeren ASP.NET uygulamalarda kod parçacığı genellikle içinde _Layout.cshtml
yer alır.
İzleme anahtarından önce olduğu gibi samplingPercentage: 10,
bir çizgi ekleyin:
<script>
var appInsights = // ...
({
// Value must be 100/N where N is an integer.
// Valid examples: 50, 25, 20, 10, 5, 1, 0.1, ...
samplingPercentage: 10,
instrumentationKey: ...
});
window.appInsights = appInsights;
appInsights.trackPageView();
</script>
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ş.
Örnekleme yüzdesi için 100/N'ye yakın bir yüzde seçin; burada N tamsayıdır. Şu anda örnekleme diğer değerleri desteklememektedir.
Sunucu tarafı ve istemci tarafı örneklemeyi koordine etme
İstemci tarafı JavaScript SDK'sı, sunucu tarafı SDK'sı ile sabit hızlı örneklemeye katılır. İzlemeli sayfalar yalnızca sunucu tarafı SDK'sının örneklemeye dahil etme kararını verdiği kullanıcıdan istemci tarafı telemetrisi gönderir. Bu mantık, istemci ve sunucu tarafı uygulamalarda kullanıcı oturumlarının bütünlüğünü korumak için tasarlanmıştır. Sonuç olarak, Application Insights'taki herhangi bir telemetri öğesinden bu kullanıcı veya oturum için diğer tüm telemetri öğelerini bulabilir ve Arama'da ilgili sayfa görünümleri ve istekleri arasında gezinebilirsiniz.
İstemci ve sunucu tarafı telemetrinizde eşgüdümlü örnekler gösterilmiyorsa:
- Hem sunucuda hem de istemcide örneklemeyi etkinleştirdiğinizden emin olun.
- hem istemcide hem de sunucuda aynı örnekleme yüzdesini ayarladığınızdan denetleyin.
- SDK sürümünün 2.0 veya üzeri olduğundan emin olun.
Alım örneklemesi
Alma örneklemesi, web sunucunuzdan, tarayıcılarınızdan ve cihazlarınızdan telemetrinin Application Insights hizmet uç noktasına ulaştığı noktada çalışır. Uygulamanızdan gönderilen telemetri trafiğini azaltmasa da, Application Insights tarafından işlenen ve tutulan (ve ücretlendirilen) miktarı azaltır.
Uygulamanız genellikle aylık kotasını aşıyorsa ve SDK tabanlı örnekleme türlerinden birini kullanma seçeneğiniz yoksa bu tür örneklemeyi kullanın.
Kullanım ve tahmini maliyetler sayfasında örnekleme oranını ayarlayın:
Diğer örnekleme türlerinde olduğu gibi algoritma da ilgili telemetri öğelerini korur. Örneğin, Arama'da telemetriyi incelerken, belirli bir özel durumla ilgili isteği bulabilirsiniz. İstek oranı ve özel durum oranı gibi ölçüm sayıları doğru şekilde korunur.
Örnekleme, belirli veri noktalarını atarak Sürekli Dışarı Aktarma gibi herhangi bir Application Insights özelliğinde kullanılamaz hale getirir.
Alım örneklemesi uyarlamalı veya sabit hız örnekleme ile birlikte çalışmaz. Uyarlamalı örnekleme, ASP.NET SDK'sı, ASP.NET Core SDK'sı, Azure Uygulaması Hizmeti'nde veya Application Insights Aracısı ile otomatik olarak etkinleştirilir. Application Insights hizmet uç noktası telemetriyi aldığında ve %100'in altında bir örnekleme oranı algıladığında (etkin örneklemeyi gösterir), ayarlanan alım örnekleme hızını yoksayar.
Uyarı
Portal kutucuğunda gösterilen değer, alım örneklemesi için ayarladığınız değeri gösterir. Herhangi bir SDK örneklemesi (uyarlamalı veya sabit hızda örnekleme) çalıştırılıyorsa gerçek örnekleme hızını temsil etmez.
Hangi örnekleme türünü kullanmalıyım?
Şu durumlarda alma örneklemesini kullanın:
- Genellikle aylık telemetri kotanızı kullanırsınız.
- Kullanıcılarınızın web tarayıcılarından çok fazla telemetri alıyorsunuz.
- SDK'nın örneklemeyi desteklemeyen bir sürümünü kullanıyorsunuz; örneğin 2.0'dan önceki ASP.NET sürümleri.
Şu durumda sabit oranlı örnekleme kullanın:
- İlgili olaylar arasında gezinmek için istemci ve sunucu arasında eşitlenmiş örnekleme gerekir. Örneğin, olayları araştırırken Arama'da sayfa görünümleri ve HTTP istekleri.
- Uygulamanız için uygun örnekleme yüzdesine güvenebilirsiniz. Doğru ölçümleri alacak kadar yüksek olmalıdır, ancak fiyatlandırma kotanızı ve azaltma sınırlarınızı aşan oranın altında olmalıdır.
Uyarlamalı örneklemeyi kullanın:
Diğer örnekleme biçimlerini kullanma koşulları geçerli değilse uyarlamalı örnekleme öneririz. Bu ayar, ASP.NET/ASP.NET Core SDK'sında varsayılan olarak etkinleştirilir. Belirli bir minimum hıza ulaşılana kadar trafiği azaltmaz, bu nedenle düşük kullanımlı siteler muhtemelen hiç örneklenmez.
Örneklemenin çalışıp çalışmadığını öğrenme
Örnekleme oranını bulmak için analiz sorgusu kullanın.
union requests,dependencies,pageViews,browserTimings,exceptions,traces
| where timestamp > ago(1d)
| summarize RetainedPercentage = 100/avg(itemCount) by bin(timestamp, 1h), itemType
Herhangi bir türün RetainedPercentage
değerinin 100'den küçük olması, o telemetri türünün örneklendiğini gösterir.
Önemli
Application Insights, hiçbir örnekleme tekniğinde oturum, ölçümler (özel ölçümler dahil) veya performans sayacı telemetri türlerinin örneklemesini yapmıyor. Bu telemetri türleri için duyarlık azalması son derece istenmeyen bir durum olabileceğinden, bu türler her zaman örneklemenin dışında tutulur.
Günlük sorgu doğruluğu ve yüksek örnek oranları
Uygulama ölçeklendirildikçe saniyede onlarca, yüzlerce veya binlerce iş öğesini işleyebilir. Her biri için bir olayın günlüğe kaydedilmesi kaynak veya uygun maliyetli değildir. Application Insights, artan telemetri hacmine esnek bir şekilde uyum sağlamak ve kaynak kullanımını ve maliyetini denetlemek için örnekleme kullanır.
Uyarı
Dağıtılmış işlemdeki herhangi bir uygulama örneklemeyi açtıysa, dağıtılmış işlemin uçtan uca görünüm bütünlüğü etkilenebilir. Dağıtılmış bir işlemdeki her uygulama tarafından farklı örnekleme kararları alınır, bu nedenle bir İşlem Kimliği için telemetri bir uygulama tarafından kaydedilebilirken, diğer uygulamalar aynı İşlem Kimliği için telemetriyi örneklememeye karar verebilir.
Örnekleme hızları arttıkça günlük tabanlı sorguların doğruluğu azalır ve şişirilir. Yalnızca örnekleme etkinleştirildiğinde ve örnek oranları daha yüksek bir aralıkta (%60) olduğunda günlük tabanlı sorguların doğruluğunu etkiler. Etki telemetri türlerine, işlem başına telemetri sayılarına ve diğer faktörlere göre değişir.
SDK'lar, örneklemenin neden olduğu sorunları çözmek için önceden toplanmış ölçümleri kullanır. Bu ölçümler hakkında daha fazla bilgi için bkz. Azure Uygulaması lication Insights - Azure İzleyici | Microsoft Docs. SDK'lar günlüğe kaydedilen verilerin ilgili özelliklerini belirler ve örneklemeden önce istatistikleri ayıklar. Kaynak kullanımını ve maliyetlerini en aza indirmek için ölçümler toplanır. Bu işlem, binlerce olay telemetri öğesi yerine dakika başına birkaç ölçüm telemetrisi öğesine neden olur. Örneğin, bu ölçümler gönderilen istek telemetri kaydında 100 ile birlikte MDM hesabına itemCount
"bu web uygulaması 25 isteği işledi" bildiriminde bulunabilir. Bu önceden toplanmış ölçümler doğru sayılar sağlar ve örnekleme günlük tabanlı sorgu sonuçlarını etkilese bile güvenilirdir. Bunları Application Insights portalının Ölçümler bölmesinde görüntüleyebilirsiniz.
Sık sorulan sorular
Örnekleme, uyarı doğruluğunu etkiler mi?
- Evet. Uyarılar yalnızca örneklenen veriler üzerinde tetiklenebilir. Agresif filtreleme uyarıların beklendiği gibi tetiklenmemesiyle sonuçlanabilir.
Not
Örnekleme Ölçümlere uygulanmaz, ancak Ölçümler örneklenen verilerden türetilebilir. Bu şekilde örnekleme, uyarı doğruluğunu dolaylı olarak etkileyebilir.
ASP.NET ve ASP.NET Çekirdek SDK'larında varsayılan örnekleme davranışı nedir?
- Yukarıdaki SDK'nın en son sürümlerinden birini kullanıyorsanız Uyarlamalı Örnekleme varsayılan olarak saniyede beş telemetri öğesiyle etkinleştirilir.
Varsayılan olarak, sistem iki
AdaptiveSamplingTelemetryProcessor
düğüm ekler: biri örnekleme türüEvent
içerirken diğeri bunu dışlar. Bu yapılandırma, telemetriyi beşEvent
tür öğesiyle ve diğer tüm türlerden beş öğeyle birleştirilmiş olarak sınırlar ve diğer telemetri türlerinden ayrı örneklenmesi sağlanırEvents
.
Bu varsayılan davranışı değiştirmek için bu sayfanın önceki bölümündeki örnekleri kullanın.
Telemetri birden çok kez örneklenebilir mi?
- Hayır SamplingTelemetryProcessors, öğe zaten örneklenmişse örnekleme konusunda dikkate alınacak öğeleri yoksayar. Aynı durum, alma örneklemesi için de geçerlidir ve bu da SDK'nın kendisinde zaten örneklenmiş olan öğelere örnekleme uygulamaz.
Örnekleme neden basit bir "her telemetri türünün X yüzdesini toplama" değildir?
- Bu örnekleme yaklaşımı ölçüm yaklaşıklarında yüksek düzeyde duyarlık sağlasa da, tanılama için kritik olan kullanıcı, oturum ve istek başına tanılama verilerini ilişkilendirme özelliğini bozar. Bu nedenle örnekleme, "uygulama kullanıcılarının X yüzdesi için tüm telemetri öğelerini toplama" veya "uygulama isteklerinin X yüzdesi için tüm telemetri verilerini toplama" gibi ilkelerle daha iyi çalışır. İsteklerle ilişkilendirilmemiş telemetri öğeleri için (arka plan zaman uyumsuz işleme gibi), geri dönüş "her telemetri türü için tüm öğelerin X yüzdesini toplamaktır."
Örnekleme yüzdesi zaman içinde değişebilir mi?
- Evet, uyarlamalı örnekleme, telemetrinin şu anda gözlemlenen hacmine göre örnekleme yüzdesini kademeli olarak değiştirir.
Sabit oranlı örnekleme kullanırsam, uygulamam için en iyi örnekleme yüzdesinin hangisi olduğunu nasıl bilebilirim?
Bunun bir yolu uyarlamalı örneklemeyle başlamak, hangi oranda durduğunu bulmak (yukarıdaki soruya bakın) ve ardından bu hızı kullanarak sabit fiyat örneklemesine geçmektir.
Aksi takdirde tahminde bulunursunuz. Application Insights'ta geçerli telemetri kullanımınızı analiz edin, gerçekleşen azaltmayı gözlemleyin ve toplanan telemetrinin hacmini tahmin edin. Bu üç giriş, seçtiğiniz fiyatlandırma katmanıyla birlikte toplanan telemetrinin hacmini ne kadar azaltmak isteyebileceğinizi önerir. Ancak, kullanıcılarınızın sayısındaki artış veya telemetri hacmindeki başka bir değişiklik tahmininizi geçersiz kabilir.
Örnekleme yüzdesini çok düşük olacak şekilde yapılandırırsam ne olur?
- Aşırı düşük örnekleme yüzdeleri aşırı agresif örneklemeye neden olur ve Application Insights veri hacminin azaltılması için verilerin görselleştirmesini dengelemeye çalıştığında yaklaşık değerlerin doğruluğunu azaltır. Ayrıca, nadiren başarısız olan veya yavaş isteklerden bazıları örneklenebileceği için tanılama deneyiminiz olumsuz etkilenebilir.
Örnekleme yüzdesini çok yüksek olacak şekilde yapılandırırsam ne olur?
- Örnekleme yüzdesinin çok yüksek yapılandırılması (yeterince agresif olmaması) toplanan telemetri hacminde yetersiz azalmaya neden olur. Azaltmayla ilgili telemetri veri kaybı yaşamaya devam edebilirsiniz ve fazla kullanım ücretleri nedeniyle Application Insights'ı kullanmanın maliyeti planlanandan daha yüksek olabilir.
Hem IncludedTypes hem de ExcludedTypes ayarlarını yapılandırırsam ne olur?
- Çakışmaları önlemek ve
IncludedTypes
net telemetri koleksiyonu ayarlarını güvence altına almak için hem hem deExcludedTypes
yapılandırmanızda ayarlanmaması en iyisidir. - içinde
ExcludedTypes
listelenen telemetri türleri, ayarlardaIncludedTypes
da ayarlanmış olsalar bile dışlanır. ExcludedTypes, IncludedTypes'a göre önceliklidir.
Örneklemeyi hangi platformlarda kullanabilirim?
- SDK örnekleme gerçekleştirmiyorsa, belirli bir birimin üzerindeki tüm telemetriler için alma örneklemesi otomatik olarak gerçekleşebilir. Bu yapılandırma, örneğin ASP.NET SDK'sının veya Java SDK'sının eski bir sürümünü kullanıyorsanız çalışır.
- Geçerli ASP.NET veya ASP.NET Çekirdek SDK'ları kullanıyorsanız (Azure'da veya kendi sunucunuzda barındırılır) varsayılan olarak uyarlamalı örnekleme alırsınız, ancak daha önce açıklandığı gibi sabit hıza geçebilirsiniz. Sabit hız örnekleme ile tarayıcı SDK'sı, örnek ilgili olaylarla otomatik olarak eşitlenir.
- Geçerli Java aracısını kullanıyorsanız, sabit hızlı örneklemeyi açmak için yapılandırabilirsiniz
applicationinsights.json
(Java SDK için, yapılandır).ApplicationInsights.xml
Örnekleme varsayılan olarak kapalıdır. Sabit oranlı örnekleme ile tarayıcı SDK'sı ve sunucu, örnek ilgili olaylarla otomatik olarak eşitlenir.
Her zaman görmek istediğim bazı nadir olaylar var. Örnekleme modülünü nasıl geçebilirim?
Belirli olayları her zaman görmenin en iyi yolu, aşağıdaki örnekte gösterildiği gibi, korunmasını istediğiniz telemetri öğesinde öğesini 100 olarak ayarlayan
SamplingPercentage
özel bir TelemetriInitializer yazmaktır. Başlatıcıların telemetri işlemcilerinden (örnekleme dahil) önce çalışması garanti edilir, bu nedenle tüm örnekleme tekniklerinin bu öğeyi örnekleme konusunda yoksaymasını sağlar. Özel telemetri başlatıcıları ASP.NET SDK'sında, ASP.NET Core SDK'sında, JavaScript SDK'sında ve Java SDK'sında kullanılabilir. Örneğin, ASP.NET SDK'sını kullanarak bir telemetri başlatıcısı yapılandırabilirsiniz:public class MyTelemetryInitializer : ITelemetryInitializer { public void Initialize(ITelemetry telemetry) { if(somecondition) { ((ISupportSampling)telemetry).SamplingPercentage = 100; } } }
Eski SDK sürümleri
Uyarlamalı örnekleme, ASP.NET v2.0.0-beta3 ve üzeri, Microsoft.ApplicationInsights.AspNetCore SDK v2.2.0-beta1 ve üzeri için Application Insights SDK'sı için kullanılabilir ve varsayılan olarak etkindir.
Sabit hızlı örnekleme, SDK'nın 2.0.0 ve Java SDK sürüm 2.0.1 ve sonrasındaki ASP.NET sürümlerindeki bir özelliğidir.
ASP.NET SDK'sının v2.5.0-beta2 ve ASP.NET Core SDK'sının v2.2.0-beta3 sürümünden önce, "kullanıcı" (çoğu web uygulaması gibi) tanımlayan uygulamalar için örnekleme kararları kullanıcı kimliğinin karmasından kaynaklanırdı. Kullanıcıları tanımlamayan uygulamalar için (web hizmetleri gibi), isteğin işlem kimliğine göre karara dayanır. Hem ASP.NET hem de ASP.NET Core SDK'larının son sürümleri artık örnekleme kararları için işlem kimliğini kullanıyor.
Sonraki adımlar
- Filtreleme, SDK'nızın ne gönderdiği konusunda daha katı bir denetim sağlayabilir.
- Application Insights ile Telemetriyi İyileştirme Geliştirici Ağı makalesini okuyun.