Application Insights’ta örnekleme

Örnekleme, Azure Uygulaması İçgörüleri'ndeki 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 dikkate almak için yeniden normalleştirilir. Bunu yapmak, istatistikler üzerindeki tüm etkileri en aza indirir.

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 Setlerinin (SDK) tüm son sürümlerinde varsayılan olarak etkindir. Ayrıca Azure İşlevleri tarafından da kullanılır.
  • ASP.NET, ASP.NET Core, Java (hem aracı hem de SDK) ve Python için Application Insights SDK'larının son sürümlerinde sabit hızlı örnekleme kullanılabilir.
  • Java'da örnekleme geçersiz kılmaları kullanılabilir ve seçilen 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, alım örnekleme 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.
  • Analiz 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ğine bakılmaksızın 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 hızlı ö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
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ğer tüm Hayır Hayır Evet

Not

Bu sayfanın çoğunda yer alan 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 aşağıdaki bölüme bakın.

Örnekleme ne zaman kullanılır?

Genel olarak, çoğu küçük ve orta boyutlu uygulama için örneklemeye ihtiyacınız yoktur. En yararlı tanılama bilgileri ve en doğru istatistikler, tüm kullanıcı etkinliklerinizle ilgili veriler toplanarak elde edilir.

Örneklemenin temel avantajları şunlardır:

  • Uygulamanız kısa bir zaman aralığında çok yüksek oranda telemetri gönderdiğinde Application Insights hizmeti veri noktalarını bırakır ("kısıtlar"). Örnekleme, uygulamanızın azaltmanın oluşma olasılığını azaltır.
  • Fiyatlandırma katmanınızın veri noktası kotası içinde kalma.
  • Telemetri koleksiyonundan ağ trafiğini azaltmak için.

Örnekleme nasıl çalışır?

Örnekleme algoritması, hangi telemetri öğelerinin bırakıldığına ve hangilerinin tutulacaklarına karar verir. Örneklemenin SDK tarafından veya Application Insights hizmetinde yapılması fark etmese de bu durum geçerlidir. Örnekleme kararı, application insights'ta azaltılmış bir veri kümesiyle bile eyleme dönüştürülebilir ve güvenilir bir tanılama deneyimi sağlayarak birbiriyle ilişkili tüm veri noktalarını korumayı amaçlayan çeşitli kuralları temel alır. Örneğin, uygulamanızın bir örnğe eklenmiş başarısız bir isteği varsa, ek telemetri öğeleri (bu istek için günlüğe kaydedilen özel durum ve izlemeler gibi) korunur. Örnekleme, hepsini bir arada tutar veya bırakır. Sonuç olarak, Application Insights'taki istek ayrıntılarına baktığınızda, isteği her zaman ilişkili telemetri öğeleriyle birlikte görebilirsiniz.

Ö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 ayarlanmamış 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 çok yakın olan istatistiksel olarak doğru yaklaşık tahminler 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 genel olarak benzer istekleri işleyen uygulamalar için doğruluk artar. Öte yandan, önemli bir yük ile çalışmayan uygulamalar için örnekleme gerekli değildir çünkü bu uygulamalar genellikle kota içinde kalırken tüm telemetrilerini gönderebilir ve azaltmadan veri kaybına neden olmaz.

Ö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. bu, ASP.NET veya ASP.NET Core SDK'sını kullandığınızda varsayılan örneklemedir. Uyarlamalı örnekleme şu anda yalnızca sunucu tarafı telemetri ASP.NET ve Azure İşlevleri için kullanılabilir.

  • Sabit hızlı örnekleme, hem ASP.NET, ASP.NET Core ya da Java sunucunuzdan hem de 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 bölümünü, ayarladığınız örnekleme hızında atar. Uygulamanızdan gönderilen telemetri trafiğini azaltmaz, ancak aylık kotanız dahilinde tutmanıza yardımcı olur. Alım örneklemesinin temel avantajı, uygulamanızı yeniden dağıtmadan örnekleme hızını ayarlayabilmenizdir. Alma örneklemesi tüm sunucular ve istemciler için tekdüzen çalışır, ancak diğer örnekleme türleri çalışırken uygulanmaz.

Önemli

Telemetri türü için uyarlamalı veya sabit hızlı örnekleme yöntemleri etkinleştirildiyse, 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 veya ASP.NET Core SDK kullandığınızda varsayılan olarak etkinleştirilir ve Azure İşlevleri için de varsayılan olarak etkinleştirilir.

Birim, belirtilen maksimum trafik hızı içinde tutulacak şekilde otomatik olarak ayarlanır ve ayarıyla MaxTelemetryItemsPerSeconddenetlenebilir. Uygulama hata ayıklarken veya düşük kullanım nedeniyle düşük miktarda telemetri üretirse, birim altında MaxTelemetryItemsPerSecondolduğu sürece öğeler örnekleme işlemcisi tarafından bırakılmaz. Telemetri hacmi arttıkça örnekleme hızı hedef birime ulaşacak şekilde ayarlanır. Ayarlama düzenli aralıklarla yeniden hesaplanır ve 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ürleri 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 ölçüm gezgininde yaklaşık değerleri gösterir.

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üğümdeki birkaç parametreyi AdaptiveSamplingTelemetryProcessor 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 hızı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 ani artışlardan sorumluysa bu aralığı kısaltmak isteyebilirsiniz.

  • <SamplingPercentageDecreaseTimeout>00:02:00</SamplingPercentageDecreaseTimeout>

    Örnekleme yüzdesi değeri değiştiğinde, bu değer daha az veri yakalamak için örnekleme yüzdesini ne kadar süre sonra yeniden düşürmemize izin verileceğini belirler.

  • <SamplingPercentageIncreaseTimeout>00:15:00</SamplingPercentageIncreaseTimeout>

    Örnekleme yüzdesi değeri değiştiğinde, bu değer daha fazla veri yakalamak için örnekleme yüzdesini ne kadar süre sonra yeniden artırmamıza izin verileceğini belirler.

  • <MinSamplingPercentage>0.1</MinSamplingPercentage>

    Örnekleme yüzdesi değiştiğinden, ayarlamamıza izin verilen en düşük değer nedir?

  • <MaxSamplingPercentage>100.0</MaxSamplingPercentage>

    Örnekleme yüzdesi değiştiğinden, ayarlamamıza izin verilen en yüksek 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 algoritmayı ani değişikliklere karşı daha az reaktif hale getirir.

  • <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 örneklenecek; diğer türlerin tüm telemetrisi her zaman iletilir.

Uyarlamalı örneklemeyi kapatmak için düğümleri AdaptiveSamplingTelemetryProcessor 'den ApplicationInsights.configkaldırın.

Alternatif: Kodda uyarlamalı örneklemeyi yapılandırma

Dosyada .config örnekleme parametresini ayarlamak yerine, bu değerleri program aracılığıyla ayarlayabilirsiniz.

  1. Dosyadan AdaptiveSamplingTelemetryProcessor.config tüm düğümleri kaldırın.

  2. 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ı tek tek ayarlayabilir veya hatta belirli türlerin örneklemenin 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, dosyasında kullanılarak ApplicationInsightsServiceOptions yönteminde ConfigureServicesStartup.cs devre dışı bırakılabilir:

public void ConfigureServices(IServiceCollection services)
{
    // ...

    var aiOptions = new Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions();
    aiOptions.EnableAdaptiveSampling = false;
    services.AddApplicationInsightsTelemetry(aiOptions);

    //...
}

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ğıda gösterildiği gibi uzantı yöntemlerini TelemetryProcessorChainBuilder kullanın.

Önemli

Örneklemeyi yapılandırmak için bu yöntemi kullanırsanız, çağrılırken AddApplicationInsightsTelemetry()özelliğini false olarak ayarladığınızdan aiOptions.EnableAdaptiveSampling emin olun. Bu değişikliği yaptıktan sonra özelleştirmelerinizi kullanarak 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 denetlemenize yardımcı olmak için uygun günlük veri üst sınırını ayarlayın.

using Microsoft.ApplicationInsights.Extensibility

public void Configure(IApplicationBuilder app, IHostingEnvironment env, TelemetryConfiguration configuration)
{
    var builder = configuration.DefaultTelemetrySink.TelemetryProcessorChainBuilder;
    // For older versions of the Application Insights SDK, use the following line instead:
    // var builder = configuration.TelemetryProcessorChainBuilder;

    // Using adaptive sampling
    builder.UseAdaptiveSampling(maxTelemetryItemsPerSecond:5);

    // Alternately, the following configures adaptive sampling with 5 items per second, and also excludes DependencyTelemetry from being subject to sampling.
    // builder.UseAdaptiveSampling(maxTelemetryItemsPerSecond:5, excludedTypes: "Dependency");

    // If you have other telemetry processors:
    builder.Use((next) => new AnotherProcessor(next));
    
    builder.Build();

    // ...
}

Azure İşlevleri için uyarlamalı örneklemeyi 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ızlı örnekleme, web sunucunuzdan ve web tarayıcılarınızdan gönderilen trafiği azaltır. Uyarlamalı örneklemeden farklı olarak, sizin karar verdiğiniz sabit bir hızda telemetriyi 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. Örnek olarak, 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ıları 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ızlı örneklemeyi yapılandırma

  1. Uyarlamalı örneklemeyi devre dışı bırakın: içinde ApplicationInsights.configdüğümü kaldırın veya açıklama satırı gerçekleştirin AdaptiveSamplingTelemetryProcessor .

    <TelemetryProcessors>
        <!-- Disabled adaptive sampling:
        <Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.AdaptiveSamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel">
            <MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>
        </Add>
        -->
    
  2. Sabit hızlı örnekleme modülünü etkinleştirin. Bu kod parçacığını içine ApplicationInsights.configekleyin:

    <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>
    

    Alternatif olarak, dosyadaki ApplicationInsights.config örnekleme parametresini ayarlamak yerine program aracılığıyla şu değerleri 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ızlı örneklemeyi yapılandırma

  1. Uyarlamalı örneklemeyi devre dışı bırakma: yönteminde ConfigureServices , kullanılarak ApplicationInsightsServiceOptionsdeğişiklikler yapılabilir:

    public void ConfigureServices(IServiceCollection services)
    {
        // ...
    
        var aiOptions = new Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions();
        aiOptions.EnableAdaptiveSampling = false;
        services.AddApplicationInsightsTelemetry(aiOptions);
    
        //...
    }
    
  2. Sabit hızlı örnekleme modülünü etkinleştirin. Aşağıdaki kod parçacığında Configure gösterildiği gibi yönteminde değişiklik yapılabilir:

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        var configuration = app.ApplicationServices.GetService<TelemetryConfiguration>();
    
        var builder = configuration.DefaultTelemetrySink.TelemetryProcessorChainBuilder;
        // For older versions of the Application Insights SDK, use the following line instead:
        // var builder = configuration.TelemetryProcessorChainBuilder;
    
        // Using fixed rate sampling
        double fixedSamplingPercentage = 10;
        builder.UseSampling(fixedSamplingPercentage);
    
        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 izleme ve SDK'da örnekleme etkinleştirilmez. Şu anda Java otomatik izlemesi, örnekleme geçersiz kılmaları ve sabit hız örneklemesi desteklenmektedir. Uyarlamalı örnekleme Java'da desteklenmez.

Java otomatik izlemesini yapılandırma

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 desteklemiyor.

OpenCensus Python uygulamaları için sabit hızlı örneklemeyi yapılandırma

Uygulamanızı en son OpenCensus Azure İzleyici ihracatçılarıyla izleyin.

Not

Sabit oranlı örnekleme, ölçümleri veren için kullanılamaz. Bu, örneklemenin yapılandırılabildiği tek telemetri türünün özel ölçümler olduğu anlamına gelir. Ölçümleri veren, izlediği tüm telemetri verilerini gönderir.

İzleme için sabit hızlı örnekleme

Tracer yapılandırmanız kapsamında bir sampler belirtmelisiniz. Açık bir örnekleyici sağlanmazsa, ProbabilitySampler varsayılan olarak kullanılır. ProbabilitySampler varsayılan olarak 1/10000 oranını kullanır; yani her 10.000 istekten biri Application Insights'a gönderilir. Örnekleme oranı belirtmek isterseniz aşağıya 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'ünü temsil eder; 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 hızlı örnekleme

İsteğe bağlı bağımsız değişkenini değiştirerek logging_sampling_rate için AzureLogHandler sabit hızlı ö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.cshtmlyer 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ı dizelerine 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 desteklemiyor.

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ı telemetriniz eşgüdümlü örnekleri göstermiyorsa:

  • 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 gelen 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:

Uygulamanın Genel Bakış bölmesinde Ayarlar, Kota, Örnekler'e tıklayın, ardından bir örnekleme oranı seçin ve Güncelleştir'e tıklayın.

Diğer örnekleme türleri 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 tarafından atılan veri noktaları , Sürekli Dışarı Aktarma gibi application insights özelliklerinde kullanılamaz.

Uyarlamalı veya sabit hızlı örnekleme çalışırken alma örneklemesi çalışmaz. Uyarlamalı örnekleme, ASP.NET SDK veya ASP.NET Core SDK kullanıldığında ya da Application Insights Azure App Service veya Durum İzleyicisi kullanılarak etkinleştirildiğinde varsayılan olarak etkinleştirilir. Application Insights hizmet uç noktası tarafından telemetri alındığında telemetriyi inceler ve örnekleme hızının %100'ün altında olduğu bildirilirse (telemetrinin örneklendiğini gösterir) ayarladığınız alım örnekleme oranı yoksayılır.

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ızlı örnekleme) çalıştırılıyorsa, gerçek örnekleme hızını temsil etmez.

Hangi tür örnekleme kullanmalıyım?

Aşağıdaki durumlarda alım ö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'den önceki ASP.NET sürümleri.

Aşağıdakiler için sabit hızlı örnekleme kullanın:

  • İstemci ve sunucu arasında eşitlenmiş örnekleme istiyorsunuz, böylece Arama'da olayları araştırırken, istemci ve sunucudaki sayfa görünümleri ve HTTP istekleri gibi ilgili olaylar arasında gezinebilirsiniz.
  • Uygulamanız için uygun örnekleme yüzdesine güvenebilirsiniz. Doğru ölçümleri alacak kadar yüksek olmalı 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'da varsayılan olarak etkindir. 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

Gerçek örnekleme hızını nerede uygulanmış olursa olsun bulmak için aşağıdaki gibi bir Analytics 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ı oldukça istenmeyen bir durum olabileceğinden, bu türler her zaman örneklemenin dışında tutulur.

Günlük sorgusu doğruluğu ve yüksek örnek oranları

Uygulamanın ölçeği artırıldığı için saniyede onlarca, yüzlerce veya binlerce iş öğesi işleniyor olabilir. 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şlemde her uygulama tarafından farklı örnekleme kararları alındığından, 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ı günlük tabanlı sorguların doğruluğu azaldıkça ve genellikle şişirilir. Bu 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.

Önceden toplanmış ölçümleri örnekleme yoluyla ortaya konan sorunları gidermek için SDK'larda kullanılır. Günlük tabanlı ve önceden toplanmış bu ölçümlerle ilgili ek ayrıntılara Azure Uygulaması Insights - Azure İzleyici | Microsoft Docs. Günlüğe kaydedilen verilerin ilgili özellikleri tanımlanır ve örnekleme gerçekleşmeden önce istatistikler ayıklanır. Kaynak ve maliyet sorunlarını önlemek için ölçümler toplanır. Sonuçta elde edilen toplama verileri, binlerce olay telemetri öğesi yerine dakikada yalnızca birkaç ölçüm telemetri öğesiyle gösterilir. Bu ölçümler örnekteki 25 isteği hesaplar ve "bu web uygulaması 25 isteği işledi" bildirimini bildiren MDM hesabına bir ölçüm gönderir, ancak gönderilen istek telemetri kaydı 100'e sahip itemCount olur. Önceden toplanmış bu ölçümler doğru sayıları bildirir ve örnekleme günlük tabanlı sorgu sonuçlarını etkilerken bu ölçümlere dayanılabilir. Bunlar Application Insights portalının Ölçümler bölmesinde görüntülenebilir.

Sık sorulan sorular

Örnekleme, uyarı doğruluğunu etkiler mi?

  • Evet. Uyarılar yalnızca örneklenen veriler üzerine 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 Core 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 iki AdaptiveSamplingTelemetryProcessor düğüm eklenir ve biri örneklemede Event türünü içerir, diğeri ise türü örneklemenin Event dışında tutar. Bu yapılandırma, SDK'nın telemetri öğelerini beş türdeki telemetri öğesiyle Event ve diğer tüm türlerden beş telemetri öğesi bir araya getirerek Events diğer telemetri türlerinden ayrı olarak örneklenmiş olmasını sağlamaya çalışacağı anlamına gelir. Olaylar genellikle iş telemetrisi için kullanılır ve büyük olasılıkla tanılama telemetri birimlerinden etkilenmemelidir.

    Aşağıdakiler, oluşturulan varsayılan ApplicationInsights.config dosyayı gösterir. ASP.NET Core'de kodda aynı varsayılan davranış etkinleştirilir. Bu varsayılan davranışı değiştirmek için bu sayfanın önceki bölümündeki örnekleri kullanın.

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

Telemetri birden çok kez örneklenebilir mi?

  • Hayır. SampleTelemetryProcessors, öğe zaten örneklenmişse örnekleme konusunda dikkat edilmesi gereken öğ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 tahminlerinde yüksek düzeyde duyarlık sağlasa da, tanılama için kritik öneme sahip kullanıcı, oturum ve istek başına tanılama verileri arasında bağıntı oluşturma ö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şkili olmayan 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, şu anda gözlemlenen telemetri hacmine göre örnekleme yüzdesini aşamalı olarak değiştirir.

Sabit oranlı örnekleme kullanırsam, hangi örnekleme yüzdesinin uygulamam için en iyi şekilde çalışacağını nasıl bilebilirim?

  • Bunun bir yolu uyarlamalı örneklemeyle başlamak, hangi oranda durduğunu öğrenmek (yukarıdaki soruya bakın) ve ardından bu oranı kullanarak sabit oranlı örneklemeye geçmektir.

    Aksi takdirde, tahmin etmek zorundasın. Application Insights'ta geçerli telemetri kullanımınızı analiz edin, gerçekleşen azaltmaları 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 olması (yeterince agresif olmaması), toplanan telemetrinin hacminde yetersiz azalmaya neden olur. Azaltmayla ilgili telemetri veri kaybıyla karşılaşmaya devam edebilirsiniz ve fazla kullanım ücretleri nedeniyle Application Insights'ı kullanma maliyeti planladığınızdan daha yüksek olabilir.

Örneklemeyi hangi platformlarda kullanabilirim?

  • SDK örnekleme gerçekleştirmiyorsa, belirli bir birimin üzerindeki tüm telemetrilerde alım ö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 Core 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 yukarıda açıklandığı gibi sabit hıza geçebilirsiniz. Sabit oranlı ö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?

  • Bunu başarmak için en iyi yol, aşağıda 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ıştırılması garanti olduğundan, bu tüm örnekleme tekniklerinin bu öğeyi örnekleme konusunda dikkate almamasını sağlar. Özel telemetri başlatıcıları ASP.NET SDK, ASP.NET Core SDK, JavaScript SDK 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, örnekleme kararı "kullanıcı" (yani en tipik web uygulamaları) tanımlayan uygulamalar için kullanıcı kimliğinin karması temel alınıyordu. Kullanıcıları tanımlamamış uygulama türleri (web hizmetleri gibi) için örnekleme kararı isteğin işlem kimliğine dayanıyordu. ASP.NET ve ASP.NET Core SDK'larının son sürümleri, örnekleme kararı için işlem kimliğini kullanır.

Sonraki adımlar