Application Insights’ta örnekleme

örnekleme, Azure Application Insights'deki bir özelliktir. Uygulama verilerinin istatistiksel olarak doğru analizini korurken telemetri trafiğini, veri maliyetlerini ve depolama maliyetlerini azaltmak için önerilen yoldur. örnekleme, telemetrinizi azaltmayı Application Insights önlemeye de yardımcı olur. Örnekleme filtresi, tanılama araştırmalar yaparken öğeler arasında gezinebilmeniz için ilgili öğeleri seçer.

Portalda ölçüm sayıları sunulduklarında, bunlar hesap örneklemesi içine alınır. Bunun yapılması, istatistiklerdeki etkileri en aza indirir.

Kısa Özet

  • Üç farklı örnekleme türü vardır: Uyarlamalı örnekleme, sabit fiyat örnekleme ve Alım örnekleme.
  • uyarlamalı örnekleme, Application Insights ASP.NET ve ASP.NET Core yazılım geliştirme setleri 'nin (sdk) en son sürümlerinde varsayılan olarak etkindir. Azure işlevleritarafından da kullanılır.
  • sabit hızlı örnekleme, 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 kullanılabilir.
  • Java 'da, örnekleme geçersiz kılmaları kullanılabilir ve seçilen bağımlılıklara, isteklere ve healthdenetimlerine farklı örnekleme oranları uygulamanız gerektiğinde faydalıdır. Bazı gürültülü bağımlılıkları ayarlamak için örnekleme geçersiz kılmalarını kullanın, örneğin tüm önemli hatalar %100 ' de tutulur. Bu, telemetriniz üzerinde hassas bir denetim düzeyi sağlayan bir sabit örnekleme biçimidir.
  • alma örnekleme, Application Insights hizmeti uç noktasında çalışmaktadır. Yalnızca başka bir örnekleme etkin olmadığında geçerlidir. SDK, telemetrinizi örnekleyerek alma örneklemesini devre dışı bırakılır.
  • Web uygulamaları için, özel olayları günlüğe kaydeder ve bir olay kümesinin birlikte tutulup tutulmayacağından emin olmanız gerekiyorsa, olayların aynı değere sahip olması gerekir OperationId .
  • Analiz sorguları yazarsanız, örnekleme hesabıalmalısınız. Özellikle de kayıtları saymak yerine, kullanmanız gerekir summarize sum(itemCount) .
  • Performans ölçümleri ve özel ölçümler de dahil olmak üzere bazı telemetri türleri, örnekleme 'nın etkin olup olmamasına bakılmaksızın her zaman tutulur.

Aşağıdaki tabloda her SDK ve uygulama türü için kullanılabilir örnekleme türleri özetlenmektedir:

Application Insights SDK Uyarlamalı örnekleme destekleniyor Sabit hızlı örnekleme destekleniyor Alım örnekleme destekleniyor
ASP.NET Evet (varsayılan olarak açık) Evet Yalnızca başka bir örnekleme geçerli değilse
ASP.NET Core Evet (varsayılan olarak açık) Evet Yalnızca başka bir örnekleme geçerli değilse
Azure İşlevleri Evet (varsayılan olarak açık) No Yalnızca başka bir örnekleme geçerli değilse
Java Hayır Evet Yalnızca başka bir örnekleme geçerli değilse
Node.JS Hayır Evet Yalnızca başka bir örnekleme geçerli değilse
Python Hayır Evet Yalnızca başka bir örnekleme geçerli değilse
Tüm diğerleri Hayır Hayır Evet

Not

bu sayfanın büyük bir yanındaki bilgiler Application Insights sdk 'ların güncel 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 türleri

Üç farklı örnekleme yöntemi vardır:

  • uyarlamalı örnekleme , ASP.NET/ASP.NET Core uygulamanızda ve Azure işlevleri 'nden SDK 'dan gönderilen telemetri hacmini otomatik olarak ayarlar. bu, ASP.NET veya ASP.NET Core SDK kullandığınızda varsayılan örneklemeyle belirlenir. uyarlamalı örnekleme şu anda yalnızca ASP.NET sunucu tarafı telemetri ve Azure işlevleri için kullanılabilir.

  • sabit hızlı örnekleme , hem ASP.NET, hem de ASP.NET Core ya da Java sunucunuzun ve kullanıcılarınızın tarayıcılarınızdan gönderilen telemetri hacmini azaltır. Oranı ayarlarsınız. İstemci ve sunucu, arama sırasında ilgili sayfa görünümleri ve istekleri arasında gezinebilmeniz için örneklemesini eşitler.

  • alma örnekleme , Application Insights hizmeti uç noktasında gerçekleşir. Sizin ayarladığınız örnekleme ücretine göre uygulamanızdan gelen telemetrinin bir kısmını atar. Uygulamanızdan gönderilen telemetri trafiğini azaltmaz, ancak aylık kotasında tutmanıza yardımcı olur. Alım örnekleme 'nın başlıca avantajı, örnekleme hızını uygulamanızı yeniden dağıtmaya gerek kalmadan ayarlayabilmektir. Alım örneklemesi tüm sunucular ve istemciler için tek bir işlem yapar, ancak başka herhangi bir örnekleme türü işlem sırasında uygulanmaz.

Önemli

Bir telemetri türü için uyarlamalı veya sabit oran örnekleme yöntemleri etkinleştirilmişse, bu telemetri için alma örnekleme devre dışı bırakılır. Bununla birlikte, SDK düzeyinde örnekleme dışında bırakılan telemetri türleri, portalda ayarlanan ücret örneklemeye tabi olmaya devam edecektir.

Uyarlamalı örnekleme

uyarlamalı örnekleme, web sunucusu uygulamanızdan Application Insights hizmeti uç noktasına gönderilen telemetri hacmini etkiler.

İpucu

uyarlamalı örnekleme, ASP.NET sdk veya ASP.NET Core sdk 'sını kullandığınızda varsayılan olarak etkindir ve ayrıca Azure işlevleri için varsayılan olarak etkinleştirilmiştir.

Birim, belirtilen maksimum trafik oranı içinde tutulacak şekilde otomatik olarak ayarlanır ve ayarı aracılığıyla denetlenir MaxTelemetryItemsPerSecond . Uygulama, hata ayıklama sırasında veya düşük kullanım nedeniyle düşük miktarda telemetri üretirse, birim aşağıda olduğu sürece, öğeler örnekleme işlemcisi tarafından atılamaz MaxTelemetryItemsPerSecond . Telemetri hacmi arttıkça örnekleme hızı, hedef birime ulaşmak üzere ayarlanır. Ayarlama, düzenli aralıklarla yeniden hesaplanır ve giden aktarım hızının hareketli ortalamasını temel alır.

Hedef birime ulaşmak için, oluşturulan telemetrinin bazıları atılır. Ancak, diğer örnekleme türleri gibi algoritma ilgili telemetri öğelerini korur. Örneğin, aramada Telemetriyi incelerken belirli bir özel durumla ilgili isteği bulabilirsiniz.

İstek hızı ve özel durum oranı gibi ölçüm sayıları örnekleme hızının dengelemeye göre ayarlanır, böylece Ölçüm Gezgini 'nde yaklaşık doğru değerler gösterilir.

ASP.NET uygulamalar için uyarlamalı örnekleme yapılandırma

Not

bu bölüm, uygulamalar ASP.NET Core için değil ASP.NET uygulamalar için geçerlidir. bu belgede daha sonra ASP.NET Core uygulamalar için uyarlamalı örnekleme yapılandırma hakkında bilgi edinin.

İçinde ApplicationInsights.config , düğümdeki çeşitli parametreleri ayarlayabilirsiniz AdaptiveSamplingTelemetryProcessor . Gösterilen rakamlar varsayılan değerlerdir:

  • <MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>

    Uyarlamalı algoritmaların her bir sunucu konağında toplanmasını sağlayan mantıksal işlemlerin hedef oranı. web uygulamanız birçok ana bilgisayarda çalışıyorsa, bu değeri, Application Insights portalındaki hedef trafik ücretine devam etmek için küçültün.

  • <EvaluationInterval>00:00:15</EvaluationInterval>

    Geçerli telemetri hızının yeniden değerlendirilme aralığı. Değerlendirme, hareketli ortalama olarak gerçekleştirilir. Telemetriyi ani bursts 'e tabi olursa 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 yeniden düşürmenize ne kadar yakında izin vereceğiz?

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

    Örnekleme yüzdesi değeri değiştiğinde, daha kısa süre sonra örnekleme yüzdesini daha fazla veri yakalamak için yeniden arttırıyoruz.

  • <MinSamplingPercentage>0.1</MinSamplingPercentage>

    Örnekleme yüzdesi farklılık gösterdiğinden, ayarlamaya izin verilen en küçük değer ne olur?

  • <MaxSamplingPercentage>100.0</MaxSamplingPercentage>

    Örnekleme yüzdesi farklılık gösterdiğinden, ayarlamaya izin verilen en büyük değer ne olur?

  • <MovingAverageRatio>0.25</MovingAverageRatio>

    Hareketli ortalama hesaplamasında bu, en son değere atanması gereken ağırlığı belirtir. 1 ' den küçük veya buna eşit 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 yeni başladığında örnek telemetri miktarı. Hata ayıklarken bu değeri küçültmeyin.

  • <ExcludedTypes>Trace;Exception</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; Belirtilmemiş Türler örneklenir.

  • <IncludedTypes>Request;Dependency</IncludedTypes>

    Örneklemeye tabi olmak 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ı örnekleme devre dışı bırakmak için AdaptiveSamplingTelemetryProcessor düğümleri öğesinden kaldırın ApplicationInsights.config .

Alternatif: kodda Uyarlamalı örnekleme yapılandırma

Dosyasında örnekleme parametresini ayarlamak yerine .config , bu değerleri programlı olarak ayarlayabilirsiniz.

  1. Tüm AdaptiveSamplingTelemetryProcessor düğümleri .config dosyadan kaldırın.

  2. Uyarlamalı örnekleme 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 bir telemetri türü için örnekleme hızını tek tek ayarlayabilir veya belirli türleri, hatta tüm örneklerden bağımsız olarak dışarıda bırakabilirsiniz:

// 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ı örnekleme yapılandırma

ApplicationInsights.configASP.NET Core uygulama yok, bu nedenle tüm yapılandırma kod aracılığıyla yapılır. 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ı örnekleme kapatılıyor

varsayılan örnekleme özelliği, yöntemi içinde Application Insights hizmeti eklenirken devre dışı bırakılabilir ConfigureServices ApplicationInsightsServiceOptions Startup.cs :

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ırakacak. Daha fazla özelleştirme seçeneği ile örnekleme eklemek için aşağıdaki adımları izleyin.

Örnekleme ayarlarını yapılandırma

TelemetryProcessorChainBuilderÖrnekleme davranışını özelleştirmek için aşağıda gösterildiği gibi uzantı yöntemlerini kullanın.

Önemli

Örnekleme yapılandırmak için bu yöntemi kullanırsanız, lütfen aiOptions.EnableAdaptiveSampling çağrılırken özelliğini olarak ayarladığınızdan emin olun false AddApplicationInsightsTelemetry() . Bu değişikliği yaptıktan sonra, özelleştirmelerinizi yerinde, uyarlamalı örneklemeyi yeniden etkinleştirmek için aşağıdaki kod bloğundaki yönergeleri tam olarak izlemeniz gerekir. Bunun yapılmaması, aşırı veri alımı oluşmasına neden olabilir. Her zaman değişen örnekleme ayarlarını test edin ve maliyetlerinizi denetlemeye yardımcı olması için uygun günlük veri ucunu 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 Işlevleri için uyarlamalı örnekleme yapılandırma

Azure Işlevleri 'nde çalışan uygulamalar için uyarlamalı örnekleme yapılandırmak üzere Bu sayfadaki yönergeleri izleyin.

Sabit fiyat örnekleme

Sabit fiyat örnekleme, Web sunucunuz ve Web tarayıcılardan gönderilen trafiği azaltır. Uyarlamalı örnekleme aksine, sizin için karar verdiğiniz sabit bir hızda Telemetriyi azaltır. ASP.NET, ASP.NET Core, Java ve Python uygulamaları için sabit fiyat örneklemesi kullanılabilir.

Diğer örnekleme teknikleri gibi, bu da ilgili öğeleri de korur. Ayrıca, ilgili öğelerin korunması için istemci ve sunucu örneklemesi eşitlenir. Örneğin, aramada bir sayfa görünümüne baktığınızda ilgili sunucu isteklerini bulabilirsiniz.

Ölçüm Gezgini, istek ve özel durum sayıları gibi ücretler örnekleme hızının dengelenerek yaklaşık doğru olmaları için bir faktörle çarpılır.

ASP.NET uygulamalar için sabit fiyat örneklemesi yapılandırma

  1. Uyarlamalı örneklemeyi devre dışı bırak: içinde ApplicationInsights.config , düğümü kaldırın veya not edin AdaptiveSamplingTelemetryProcessor .

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

    <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 örnekleme parametresini ayarlamak yerine ApplicationInsights.config , programlı olarak bu 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 fiyat örneklemesi yapılandırma

  1. Uyarlamalı örneklemeyi devre dışı bırak: şu ConfigureServices kullanılarak, yöntemde değişiklik yapılabilir ApplicationInsightsServiceOptions :

    public void ConfigureServices(IServiceCollection services)
    {
        // ...
    
        var aiOptions = new Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions();
        aiOptions.EnableAdaptiveSampling = false;
        services.AddApplicationInsightsTelemetry(aiOptions);
    
        //...
    }
    
  2. Sabit fiyat örnekleme modülünü etkinleştirin. ConfigureAşağıdaki kod parçacığında 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 fiyat örneklemesini yapılandırma

Varsayılan olarak, Java otomatik izleme ve SDK 'sında hiçbir örnekleme etkinleştirilmez. Şu anda Java otomatik izleme, örnekleme geçersiz kılmaları ve sabit fiyat örnekleme desteklenir. Uyarlamalı örnekleme, Java 'da desteklenmez.

Java otomatik izleme yapılandırma

Java 2. x SDK 'sını yapılandırma

  1. web uygulamanızı en son Application Insights Java SDK 'sıile indirin ve yapılandırın.

  2. Aşağıdaki kod parçacığını dosyaya ekleyerek sabit fiyat örnekleme modülünü etkinleştirin ApplicationInsights.xml :

    <TelemetryProcessors>
        <BuiltInProcessors>
            <Processor type="FixedRateSamplingTelemetryProcessor">
                <!-- 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) -->
                <Add name="SamplingPercentage" value="50" />
            </Processor>
        </BuiltInProcessors>
    </TelemetryProcessors>
    
  3. Etiketin içindeki aşağıdaki etiketleri kullanarak örnekleme türünden belirli telemetri türlerini dahil edebilir veya dışlayabilirsiniz Processor FixedRateSamplingTelemetryProcessor :

    <ExcludedTypes>
        <ExcludedType>Request</ExcludedType>
    </ExcludedTypes>
    
    <IncludedTypes>
        <IncludedType>Exception</IncludedType>
    </IncludedTypes>
    

Örneklemeye dahil edilebilir ya da hariç tutulacak telemetri türleri şunlardır: Dependency , Event ,, Exception PageView , Request ve Trace .

Not

Örnekleme yüzdesi için, N 'nin bir tamsayı olduğu, 100/N 'e yakın bir yüzde seçin. Şu anda örnekleme diğer değerleri desteklemiyor.

OpenCensus Python uygulamaları için sabit fiyat örneklemesi yapılandırma

Uygulamanızı en son Opencensus Azure izleyici dışarı layıcılarınıkullanarak işaretleyin.

Not

Ölçüm Dışarı Aktarıcı için sabit fiyat örnekleme kullanılamaz. Bu, örneklemenin yapılandırılamadığını tek tür telemetri olan özel ölçümleri gösterir. Ölçüm dışarı aktarıcı, izlediği tüm Telemetriyi gönderir.

İzleme için sabit fiyat örnekleme

Tracer yapılandırmanız kapsamında bir sampler belirtmelisiniz. Açık bir örnekleyiciyi sağlanmazsa, ProbabilitySampler Varsayılan olarak kullanılacaktır. , ProbabilitySampler varsayılan olarak 1/10000 oranını kullanır, yani her 10000 isteğin bir tanesi Application Insights gönderilir. Örnekleme oranı belirtmek isterseniz aşağıya bakın.

Örnekleme hızını belirtmek için, Tracer 0,0 ve 1,0 dahil olmak üzere örnekleme oranına sahip bir örnekleyiciyi belirttiğinizden emin olun. 1,0 örnekleme oranı %100 ' i temsil eder, ancak tüm istekleriniz Application Insights 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 fiyat örnekleme

AzureLogHandlerİsteğe bağlı bağımsız değişkeni değiştirerek, için sabit fiyat örneklemesi yapılandırabilirsiniz logging_sampling_rate . Herhangi bir bağımsız değişken sağlanmazsa, 1,0 örnekleme ücreti kullanılacaktır. 1,0 örnekleme oranı %100 ' i temsil eder, ancak tüm istekleriniz Application Insights 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ı örnekleme yapılandırma

JavaScript tabanlı web sayfaları, Application Insights kullanacak şekilde yapılandırılabilir. Telemetri, kullanıcının tarayıcısı içinde çalışan istemci uygulamasından gönderilir ve sayfalar herhangi bir sunucudan barındırılabilir.

javascript tabanlı web sayfalarınızı Application Insights için yapılandırdığınızda, Application Insights portalından aldığınız javascript kod parçacığını değiştirin.

İpucu

JavaScript içeren ASP.NET uygulamalarda, kod parçacığı genellikle ' a gider _Layout.cshtml .

samplingPercentage: 10,İzleme anahtarından önce bir satır 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>

Örnekleme yüzdesi için, N 'nin bir tamsayı olduğu, 100/N 'e yakın bir yüzde seçin. Şu anda örnekleme diğer değerleri desteklemiyor.

Sunucu tarafı ve istemci tarafı örneklemesi koordine etme

İstemci tarafı JavaScript SDK 'Sı, sunucu tarafı SDK 'Sı ile birlikte sabit hızlı örneklemeye katılır. Araçlı sayfalar yalnızca, sunucu tarafı SDK 'sının örneklemeye dahil etme kararlarını yaptığı aynı kullanıcıdan gelen istemci tarafı telemetri gönderir. Bu mantık, istemci ve sunucu tarafı uygulamalardaki kullanıcı oturumlarının bütünlüğünü sürdürmek için tasarlanmıştır. sonuç olarak, Application Insights belirli bir telemetri öğesinden bu kullanıcı veya oturum için diğer tüm telemetri öğelerini bulabilir ve arama bölümünde ilgili sayfa görünümleri ve istekleri arasında gezinebilirsiniz.

İstemciniz ve sunucu tarafı telemetri, Eşgüdümlü örnekleri göstermiyor:

  • Hem sunucu hem de istemcide örnekleme 'yi etkinleştirdiğinizi doğrulayın.
  • Hem istemcide hem de sunucuda aynı örnekleme yüzdesini ayarlamış olun.
  • SDK sürümünün 2,0 veya üzeri olduğundan emin olun.

Giriş örnekleme

alma örnekleme, web sunucunuz, tarayıcılarınız ve cihazlarınızdaki telemetri Application Insights hizmeti uç noktasına ulaştığında çalışır. uygulamanızdan gönderilen telemetri trafiğini düşürmese de, Application Insights göre işlenen ve tutulan miktarı azaltır (ve için ücretlendirilir).

Bu örnekleme türünü, genellikle aylık kotasının üzerine gidiyorsa ve SDK tabanlı örnekleme türlerinden birini kullanma seçeneğiniz yoksa kullanın.

Kullanım ve tahmini maliyetler sayfasında örnekleme oranını ayarlayın:

Uygulamanın Genel Bakış dikey penceresinde 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, Ara'da telemetri 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 Analizler herhangi bir Application Analizler özelliğinde kullanılamaz.

Uyarlamalı veya sabit oranlı örnekleme çalışırken alma örneklemesi çalışmaz. Uyarlamalı örnekleme, ASP.NET SDK'sı veya ASP.NET Core SDK'sı kullanılırken ya da Application Analizler Azure App Service veya Durum İzleyicisi. Application Analizler hizmet uç noktası tarafından telemetri alınarak telemetri incelendiğinde ve örnekleme oranının %100'den az olduğu bildiriliyorsa (bu durum telemetri örneklemenin örneklendiğinden emin olunması) ayarlandığı örnekleme hızı yoksayılır.

Uyarı

Portal kutucuğunun üzerinde gösterilen değer, alma örneklemesi için ayar istediğiniz değeri gösterir. Herhangi bir SDK örneklemesi (uyarlamalı veya sabit oranlı örnekleme) devam ediyorsa gerçek örnekleme oranını temsil etmez.

Örnekleme ne zaman kullanımlı?

Genel olarak, çoğu küçük ve orta boyutlu uygulama için örneklemeye ihtiyacınız yok. En yararlı tanılama bilgileri ve en doğru istatistikler, tüm kullanıcı etkinlikleriniz üzerinde veri toplayarak elde edilir.

Örneklemenin temel avantajları:

  • Uygulama Analizler hizmeti, kısa bir süre içinde çok yüksek telemetri verileri gönderdiğinde veri noktalarını ("kısıtlama") düşürmektedir. Örnekleme, uygulamanıza azaltmanın oluşma olasılığını azaltır.
  • Fiyatlandırma katmanınız için veri noktası kotasını tutmak için.
  • Telemetri koleksiyonundan gelen ağ trafiğini azaltmak için.

Hangi örnekleme türünü kullan gerekir?

Aşağıdakiler için veri alımı örneklemesi kullanın:

  • Genellikle aylık telemetri kotanızı kullanırsiniz.
  • Kullanıcılarının web tarayıcılarından çok fazla telemetri elde ediyor.
  • SDK'nın örneklemeyi desteklemeen bir sürümünü (örneğin 2'den önceki ASP.NET sürümünü kullanıyorsanız.

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

  • İstemci ve sunucu arasında eşitlenmiş örnekleme istediğiniz için, Arama'dakiolayları araştırırken, istemci ve sunucu üzerinde sayfa görünümleri ve HTTP istekleri gibi ilgili olaylar arasında gezinebilirsiniz.
  • Uygulamanıza uygun örnekleme yüzdesine güvenebilirsiniz. Doğru ölçümleri elde etmek için yeterince yüksek, ancak fiyatlandırma kotanızı ve azaltma sınırlarını aşan oranın altında olması gerekir.

Uyarlamalı örneklemeyi kullanma:

Diğer örnekleme biçimlerini kullanma koşulları geçerli yoksa uyarlamalı örneklemeyi öneririz. Bu ayar, ASP.NET/ASP.NET Core SDK'da varsayılan olarak etkindir. Belirli bir minimum hıza ulaşıncaya kadar trafiği azaltmaz, bu nedenle düşük kullanımlı sitelerin örneklemesi büyük olasılıkla hiç olmayacaktır.

Örneklemenin çalışıp çalışmadığını öğrenme

Gerçek örnekleme oranı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 RetainedPercentage için 100'den küçük olduğunu görüyorsanız, bu telemetri türünün örneklemesi yapılıyor.

Önemli

Uygulama Analizler, örnekleme tekniklerinin herhangi birsinde oturum, ölçüm (özel ölçümler dahil) veya performans sayacı telemetri türleri oluşturmaz. Duyarlık azalması, bu telemetri türleri için yüksek oranda istenmeyen bir durum olarak bu türler her zaman örneklemenin dışında bırakılacaktır.

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

Örnekleme algoritması, hangi telemetri öğelerinin bırakılamayacak ve hangilerinin tutmayacaklarını karar verir. Bu, örneklemenin SDK tarafından mı yoksa Application Analizler hizmeti tarafından mı Analizler doğrudur. Örnekleme kararı, tüm ilişkili veri noktalarını bozulmadan korumayı ve uygulama veri kümeleriyle bile eyleme değiştirilebilir ve güvenilir Analizler bir tanılama deneyimi sürdürmeyi amaçlaan çeşitli kuralları temel alıyor. Örneğin, uygulamanıza bir örnekte bulunan başarısız bir istek varsa, ek telemetri öğeleri (bu istek için günlüğe kaydedilen özel durum ve izlemeler gibi) korunur. Örnekleme, bunların hepsini bir arada tutar veya birlikte tutar. Sonuç olarak, Application Analizler'da istek ayrıntılarına bakarak isteği ilişkili telemetri öğeleriyle birlikte her zaman da göreebilirsiniz.

Örnekleme kararı, isteğin işlem kimliğini temel alarak, belirli bir işleme ait olan tüm telemetri öğelerinin korundu veya bırakıldı olduğu anlamına gelir. Bir iş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ürün telemetri öğelerinin yüzdesini yakalar.

Application Analizler hizmeti, telemetri verilerini size geri sunarken, eksik veri noktalarını telafi etmek için ölçümleri toplama zamanında kullanılan örnekleme yüzdesine göre ayarlar. Bu nedenle, Application Analizler telemetri verilerine bakarak, kullanıcılar gerçek sayılara çok yakın olan istatistiksel olarak doğru tahminler görüyor.

Yaklaşık değerin doğruluğu büyük ölçüde yapılandırılmış örnekleme yüzdesine bağlıdır. Ayrıca, çok sayıda kullanıcıdan gelen büyük hacimli genel olarak benzer isteklerin iş kolu olan 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 olmaz.

Sık sorulan sorular

ASP.NET ve ASP.NET Core davranış nedir?

  • Yukarıdaki SDK'nın en son sürümlerinden birini kullanıyorsanız Uyarlamalı Örnekleme, saniye başına beş telemetri öğe ile varsayılan olarak etkindir. Varsayılan olarak eklenen iki düğüm vardır ve bunlardan biri örnekleme türünü, diğeri ise türü AdaptiveSamplingTelemetryProcessor Event Event örneklemenin dışında tut. Bu yapılandırma, SDK'nın telemetri öğelerini türlerden beş telemetri öğeleriyle ve diğer tüm türlerden beş telemetri öğeleriyle sınırlamayı deneyerek diğer Event telemetri türlerinden ayrı olarak örneklemenin sağlanmış olmasını sağlamaya çalışacak. Events Olaylar genellikle iş telemetrisi için kullanılır ve büyük olasılıkla tanılama telemetri hacimlerinden etkilenmez.

    Aşağıda, oluşturulan varsayılan ApplicationInsights.config dosya gösterir. Bu ASP.NET Core, aynı varsayılan davranış kodda etkindir. 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 örnek olabilir mi?

  • Hayır. ÖrneklemeTelemetryProcessors, öğe zaten örnekli ise örnekleme değerlendirmelerinden öğeleri yok sayar. Aynı durum, alma örneklemesi için de geçerlidir. Bu durum, daha önce SDK'da örnek alınan öğelere örnekleme uygulamaz.

Neden basit bir "her telemetri türünün X yüzdesini topla" örneklemesi yapmak mümkün değildir?

  • Bu örnekleme yaklaşımı ölçüm tahminleri için yüksek düzeyde duyarlık sağlasa da, tanılama için kritik öneme sahip olan kullanıcı, oturum ve istek başına tanılama verileri arasında ilişki sağlama becerisini bozacak. Bu nedenle örnekleme, "uygulama kullanıcılarının yüzde X'i için tüm telemetri öğelerini toplama" veya "uygulama isteklerinin yüzde X'i için tüm telemetrileri toplama" gibi ilkelerle daha iyi çalışır. İsteklerle ilişkilendirilen telemetri öğeleri için (arka plan zaman uyumsuz işleme gibi), geri dönüş "her telemetri türü için tüm öğelerin yüzde X'ini toplamaktır."

Örnekleme yüzdesi zaman içinde değişebilir mi?

  • Evet, uyarlamalı örnekleme, o anda gözlemlenen telemetri hacmine göre örnekleme yüzdesini kademeli olarak değiştirir.

Sabit hız örneklemesi kullanırsanız uygulamam için en uygun örnekleme yüzdesini nasıl bu kadar iyi bilirsiniz?

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

    Aksi takdirde tahminde bulundurarak. Application Analizler'de geçerli telemetri kullanımınızı analiz edin, oluşan tüm azaltmaları gözlemler ve toplanan telemetri hacmini tahmin edin. Bu üç giriş, seçtiğiniz fiyatlandırma katmanıyla birlikte toplanan telemetri hacmini ne kadar azaltmak istemeniz olabileceğini gösterir. Ancak, kullanıcı sayısı artışı veya telemetri hacminde yapılan başka bir değişim tahmininizi geçersiz hale neden olabilir.

Örnekleme yüzdesini çok düşük olacak şekilde yapılandırarak ne olur?

  • Aşırı düşük örnekleme yüzdeleri aşırı agresif örneklemeye neden olur ve Application Analizler veri hacmini azaltmak için verilerin görselleştirmesini dengelemeye çalışır. Ayrıca, sık başarısız olan veya yavaş olan bazı isteklerin örneklemesi çıkarılana kadar tanılama deneyiminiz olumsuz etkilenene neden olabilir.

Örnekleme yüzdesini çok yüksek olacak şekilde yapılandırarak ne olur?

  • Çok yüksek bir örnekleme yüzdesinin yapılandırılması (yeterince agresif olmaması) toplanan telemetri hacminde yetersiz azalmaya neden olur. Yine de azaltmayla ilgili telemetri veri kaybıyla karşınız olabilir ve Uygulama Analizler kullanma maliyeti fazla kullanımın nedeniyle planlandığından daha yüksek olabilir.

Örneklemeyi hangi platformlarda kullanabilirim?

  • SDK örnekleme gerçekleştiremezse, veri alımı örneklemesi belirli bir birimin üzerindeki telemetri verileri için otomatik olarak oluşabilir. Bu yapılandırma, örneğin ASP.NET SDK'sı 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 (Azure'da veya kendi sunucunuzda barındırılan) kullanıyorsanız, varsayılan olarak uyarlamalı örnekleme alırsınız, ancak yukarıda açıklandığı gibi sabit hıza geçebilirsiniz. Sabit hızlı örnekleme ile tarayıcı SDK'sı örnekle ilgili olaylarla otomatik olarak eşitlenir.
  • Geçerli Java aracıyı kullanıyorsanız, sabit hız örneklemeyi açmak için applicationinsights.json yapılandırabilirsiniz (Java SDK için, yapılandırma). ApplicationInsights.xml Örnekleme varsayılan olarak kapalıdır. Sabit hızlı örnekleme ile tarayıcı SDK'sı ve sunucu örnekle ilgili olaylarla otomatik olarak eşitlenir.

Her zaman görmek istediğim bazı nadir olaylar vardır. Bunları örnekleme modülünü nasıl geçdirim?

  • Bunu başarmanın en iyi yolu, aşağıda gösterildiği gibi, korumak istediğiniz telemetri öğesinde öğesini 100 olarak ayaran özel bir TelemetryInitializer SamplingPercentage yazmaktır. Başlatıcıların telemetri işlemcilerinden önce (örnekleme dahil) çalıştırılamayacakları garanti olduğundan, tüm örnekleme teknikleri bu öğeyi örnekleme konusunda dikkate alınacak noktalardan yoksayacaktır. Özel telemetri başlatıcıları ASP.NET SDK, ASP.NET Core SDK, JavaScript SDK ve Java SDK'da kullanılabilir. Örneğin, ASP.NET SDK'sı 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 sonraki sürümler, Microsoft.ApplicationInsights.AspNetCore SDK v2.2.0-beta1 ve sonraki sürümler için Application Analizler 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 ASP.NET sürümlerindeki bir özelliğidir.

ASP.NET SDK'sı v2.5.0-beta2 ve ASP.NET Core SDK'sı v2.2.0-beta3 sürümünden önce, örnekleme kararı "kullanıcı" (yani çoğu tipik web uygulaması) tanımlayan uygulamalar için kullanıcı kimliğinin karması temel alınmıştı. Kullanıcıları tanımlamayan uygulama türleri (örneğin, Web Hizmetleri) için örnekleme kararı isteğin işlem KIMLIĞINE dayalıdır. ASP.NET ve ASP.NET Core sdk 'larının son sürümleri, örnekleme kararının işlem kimliğini kullanır.

Sonraki adımlar