Campionamento in Application InsightsSampling in Application Insights

Il campionamento è una funzionalità di Azure Application Insights.Sampling is a feature in Azure Application Insights. È l'approccio consigliato per ridurre il traffico e l'archiviazione della telemetria mantenendo però un'analisi statisticamente corretta dei dati dell'applicazione.It is the recommended way to reduce telemetry traffic and storage, while preserving a statistically correct analysis of application data. Il filtro seleziona gli elementi correlati per poter passare dall'uno all'altro nel corso delle indagini diagnostiche.The filter selects items that are related, so that you can navigate between items when you are doing diagnostic investigations. Quando vengono presentati i conteggi delle metriche nel portale, vengono rinormalizzati per tenere conto del campionamento.When metric counts are presented in the portal, they are renormalized to take into account sampling. Questa operazione riduce al minimo gli effetti sulle statistiche.Doing so minimizes any effect on the statistics.

Il campionamento riduce i costi del traffico e dei dati e consente di evitare la limitazione.Sampling reduces traffic and data costs, and helps you avoid throttling.

In breve:In brief:

  • Il campionamento mantiene un record su n e rimuove il resto.Sampling retains 1 in n records and discards the rest. Ad esempio, potrebbe conservarne uno in cinque eventi, una frequenza di campionamento del 20%.For example, it might retain one in five events, a sampling rate of 20%.
  • Il campionamento adattivo è abilitato per impostazione predefinita in tutta la versione più recente di ASP.NET e ASP.NET Core Software Development Kit (SDK).Adaptive Sampling is enabled by default in all the latest version of ASP.NET and ASP.NET Core Software Development Kits (SDKs).
  • È anche possibile impostare il campionamento manualmente.You can also set sampling manually. Questa configurazione può essere configurata nel portale nella pagina utilizzo e costi stimati, in ASP.NET SDK nel file ApplicationInsights. config, in ASP.NET Core SDK tramite codice o in Java SDK nel file ApplicationInsights. XML.This can be configured in the portal on the Usage and estimated costs page, in the ASP.NET SDK in the ApplicationInsights.config file, in the ASP.NET Core SDK via code or in the Java SDK in the ApplicationInsights.xml file.
  • Se si registrano eventi personalizzati ed è necessario assicurarsi che un set di eventi venga mantenuto o rimosso insieme, gli eventi devono avere lo stesso valore OperationId.If you log custom events and need to ensure that a set of events is retained or discarded together, the events must have the same OperationId value.
  • Il divisore di campionamento n è indicato in ogni record nella proprietà itemCount, visualizzata nella ricerca con il nome descrittivo "Conteggio delle richieste" o "Conteggio degli eventi".The sampling divisor n is reported in each record in the property itemCount, which in Search appears under the friendly name "request count" or "event count". itemCount==1quando il campionamento non è in esecuzione.itemCount==1when sampling is not in operation.
  • Se si scrivono query di Dati di analisi, è necessario tener conto del campionamento.If you write Analytics queries, you should take account of sampling. In particolare, anziché eseguire semplicemente il conteggio dei record, è necessario usare summarize sum(itemCount).In particular, instead of simply counting records, you should use summarize sum(itemCount).

Tipi di campionamentoTypes of sampling

Esistono tre diversi metodi di campionamento:There are three alternative sampling methods:

  • Il campionamento adattivo regola automaticamente il volume dei dati di telemetria inviati dall'SDK nell'app ASP.NET/ASP.NET Core.Adaptive sampling automatically adjusts the volume of telemetry sent from the SDK in your ASP.NET/ASP.NET Core app. Questo è il campionamento predefinito da ASP.NET Web SDK versione 2.0.0-beta3 e versioni successive e Microsoft. ApplicationInsights. AspNetCore SDK v 2.2.0-beta1.This is the default sampling from ASP.NET Web SDK v 2.0.0-beta3 onwards and Microsoft.ApplicationInsights.AspNetCore SDK v 2.2.0-beta1 onwards. Il campionamento adattativo è attualmente disponibile solo per la telemetria lato server di ASP.NET.Adaptive sampling is currently only available for ASP.NET server-side telemetry.

  • Il campionamento a frequenza fissa riduce il volume dei dati di telemetria inviati dal server ASP.NET o ASP.NET Core o Java e dai browser degli utenti.Fixed-rate sampling reduces the volume of telemetry sent from both your ASP.NET or ASP.NET Core or Java server and from your users' browsers. È necessario impostare la frequenza.You set the rate. Il client e il server sincronizzeranno il rispettivo campionamento in modo che nella ricerca sia possibile spostarsi tra le visualizzazioni pagina e le richieste correlate.The client and server will synchronize their sampling so that, in Search, you can navigate between related page views and requests.

  • Campionamento inserimento Funziona nel portale di Azure.Ingestion sampling Works in the Azure portal. Rimuove alcuni dati di telemetria provenienti dall'app, a una velocità di campionamento impostata.It discards some of the telemetry that arrives from your app, at a sampling rate that you set. Non riduce il traffico di telemetria inviato dall'app, ma consente all'utente di rispettare la quota mensile.It doesn't reduce telemetry traffic sent from your app, but helps you keep within your monthly quota. Il vantaggio principale del campionamento per inserimento è che è possibile impostare la frequenza di campionamento senza ridistribuire l'app.The main advantage of ingestion sampling is that you can set the sampling rate without redeploying your app. Il campionamento per inserimento funziona in modo uniforme per tutti i server e i client.Ingestion sampling works uniformly for all servers and clients.

Se è in esecuzione il campionamento adattivo o a frequenza fissa, il campionamento per inserimento è disabilitato.If Adaptive or Fixed rate sampling are in operation, Ingestion sampling is disabled.

Campionamento adattivo nelle applicazioni Web ASP.NET/ASP.NET CoreAdaptive sampling in your ASP.NET/ASP.NET Core Web Applications

Il campionamento adattivo è disponibile per Application Insights SDK per ASP.NET versione 2.0.0-beta3 e versioni successive, Microsoft. ApplicationInsights. AspNetCore SDK v 2.2.0-beta1 e versioni successive ed è abilitato per impostazione predefinita.Adaptive sampling is available for the Application Insights SDK for ASP.NET v 2.0.0-beta3 and later, Microsoft.ApplicationInsights.AspNetCore SDK v 2.2.0-beta1 and later, and is enabled by default.

Il campionamento adattivo riguarda il volume dei dati di telemetria inviati dall'app del server Web all'endpoint del servizio Application Insights.Adaptive sampling affects the volume of telemetry sent from your web server app to the Application Insights service endpoint. Il volume viene regolato automaticamente per mantenuta entro una frequenza massima specificata di traffico e viene controllato tramite l'impostazione MaxTelemetryItemsPerSecond.The volume is adjusted automatically to keep within a specified maximum rate of traffic, and is controlled via the setting MaxTelemetryItemsPerSecond. Se l'applicazione produce una quantità ridotta di dati di telemetria, ad esempio durante il debug o a causa di un utilizzo ridotto, gli elementi non verranno eliminati dal processore di campionamento purché il volume sia inferiore MaxTelemetryItemsPerSecond.If the application produces a low amount of telemetry, such as when debugging or due to low usage, items won't be dropped by the sampling processor as long as volume is below MaxTelemetryItemsPerSecond. Man mano che aumenta il volume dei dati di telemetria, la frequenza di campionamento viene regolata in modo da ottenere il volume di destinazione.As the volume of telemetry increases, sampling rate is adjusted so as to achieve the target volume.

Per ottenere il volume di destinazione, alcuni dei dati di telemetria generati vengono eliminati.To achieve the target volume, some of the generated telemetry is discarded. Tuttavia, come in altri tipi di campionamento, l'algoritmo consente di mantenere gli elementi di telemetria correlati.But like other types of sampling, the algorithm retains related telemetry items. Ad esempio, quando si controllano i dati di telemetria nella ricerca, sarà possibile trovare la richiesta correlata a una particolare eccezione.For example, when you're inspecting the telemetry in Search, you'll be able to find the request related to a particular exception.

I conteggi di metrica, ad esempio la frequenza delle richieste e delle eccezioni, vengono adattati per compensare la frequenza di campionamento, in modo che mostrino i valori corretti in Esplora metriche.Metric counts such as request rate and exception rate are adjusted to compensate for the sampling rate, so that they show approximately correct values in Metric Explorer.

Configurazione del campionamento adattivo per le applicazioni ASP.NETConfiguring adaptive sampling for ASP.NET Applications

Informazioni sulla configurazione del campionamento adattivo per applicazioni ASP.NET Core.Learn about configuring adaptive sampling for ASP.NET Core Applications.

In ApplicationInsights.config è possibile regolare diversi parametri nel nodo AdaptiveSamplingTelemetryProcessor.In ApplicationInsights.config, you can adjust several parameters in the AdaptiveSamplingTelemetryProcessor node. Le cifre indicate sono i valori predefiniti:The figures shown are the default values:

  • <MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>

    Frequenza di destinazione che l'algoritmo adattivo deve raggiungere su ogni host server.The target rate that the adaptive algorithm aims for on each server host. Se l'app Web viene eseguita su più host, ridurre questo valore per non superare la frequenza di destinazione del traffico nel portale di Application Insights.If your web app runs on many hosts, reduce this value so as to remain within your target rate of traffic at the Application Insights portal.

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

    Intervallo in corrispondenza del quale viene rivalutata la frequenza corrente dei dati di telemetria.The interval at which the current rate of telemetry is reevaluated. La valutazione viene eseguita come media mobile.Evaluation is performed as a moving average. Potrebbe essere necessario ridurre questo intervallo se la telemetria è responsabile di burst improvvisi.You might want to shorten this interval if your telemetry is liable to sudden bursts.

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

    Quando il valore della percentuale di campionamento cambia, periodo di tempo dopo il quale è consentito ridurre nuovamente la percentuale di campionamento per acquisire meno dati.When sampling percentage value changes, how soon after are we allowed to lower sampling percentage again to capture less data.

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

    Quando il valore della percentuale di campionamento cambia, periodo di tempo dopo il quale è consentito aumentare nuovamente la percentuale di campionamento per acquisire più dati.When sampling percentage value changes, how soon after are we allowed to increase sampling percentage again to capture more data.

  • <MinSamplingPercentage>0.1</MinSamplingPercentage>

    Quando la percentuale di campionamento varia, valore minimo che è consentito impostare.As sampling percentage varies, what is the minimum value we're allowed to set.

  • <MaxSamplingPercentage>100.0</MaxSamplingPercentage>

    Quando la percentuale di campionamento varia, valore massimo che è consentito impostare.As sampling percentage varies, what is the maximum value we're allowed to set.

  • <MovingAverageRatio>0.25</MovingAverageRatio>

    Nel calcolo della media mobile, peso assegnato al valore più recente.In the calculation of the moving average, the weight assigned to the most recent value. Usare un valore uguale o inferiore a 1.Use a value equal to or less than 1. I valori più bassi rendono l'algoritmo meno reattivo alle modifiche improvvise.Smaller values make the algorithm less reactive to sudden changes.

  • <InitialSamplingPercentage>100</InitialSamplingPercentage>

    Valore assegnato quando l'app è appena stata avviata.The value assigned when the app has just started. Non ridurre il valore durante il debug.Don't reduce value while you're debugging.

  • <ExcludedTypes>Trace;Exception</ExcludedTypes>

    Elenco dei tipi da non campionare delimitato dal punto e virgola.A semi-colon delimited list of types that you do not want to be sampled. I tipi riconosciuti sono: dipendenza, evento, eccezione, pageview, richiesta, traccia.Recognized types are: Dependency, Event, Exception, PageView, Request, Trace. Tutte le istanze dei tipi specificati vengono trasmesse; i tipi non specificati vengono campionati.All instances of the specified types are transmitted; the types that are not specified are sampled.

  • <IncludedTypes>Request;Dependency</IncludedTypes>

    Elenco dei tipi da campionare delimitato dal punto e virgola.A semi-colon delimited list of types that you want to be sampled. I tipi riconosciuti sono: dipendenza, evento, eccezione, pageview, richiesta, traccia.Recognized types are: Dependency, Event, Exception, PageView, Request, Trace. I tipi specificati vengono campionati; tutte le istanze degli altri tipi vengono sempre trasmesse.The specified types are sampled; all instances of the other types will always be transmitted.

Per disattivare il campionamento adattivo, rimuovere il nodo o i nodi AdaptiveSamplingTelemetryProcessor da applicationinsights-config.To switch off adaptive sampling, remove the AdaptiveSamplingTelemetryProcessor node(s) from applicationinsights-config.

Alternativa: configurare il campionamento adattivo nel codiceAlternative: configure adaptive sampling in code

Invece di impostare il parametro di campionamento nel file con estensione config è possibile impostare questi valori a livello di codice.Instead of setting the sampling parameter in the .config file, you can programmatically set these values.

  1. Rimuovere tutti i nodi AdaptiveSamplingTelemetryProcessor dal file config.Remove all the AdaptiveSamplingTelemetryProcessor node(s) from the .config file.
  2. Usare il frammento di codice seguente per configurare il campionamento adattivo.Use the following snippet to configure Adaptive Sampling.

C#C#


    using Microsoft.ApplicationInsights;
    using Microsoft.ApplicationInsights.Extensibility;
    using Microsoft.ApplicationInsights.WindowsServer.Channel.Implementation;
    using Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel;
    ...

    var builder = TelemetryConfiguration.Active.TelemetryProcessorChainBuilder;
    // If you are on ApplicationInsights SDK v 2.8.0-beta2 or higher, use the following line instead
    // var builder = TelemetryConfiguration.Active.DefaultTelemetrySink.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();

(Informazioni sui processori di telemetria.)(Learn about telemetry processors.)

È anche possibile regolare la frequenza di campionamento per ogni tipo di telemetria singolarmente oppure escludere determinati tipi dall'esempio.You can also adjust the sampling rate for each Telemetry type individually, or can even exclude certain types from being sampled at all.

C#C#

    // 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");

Configurazione del campionamento adattivo per applicazioni ASP.NET Core.Configuring adaptive sampling for ASP.NET Core Applications.

Non esiste alcuna ApplicationInsights.Config per le applicazioni ASP.NET Core, quindi ogni configurazione viene eseguita tramite codice.There is no ApplicationInsights.Config for ASP.NET Core Applications, so every configuration is done via code. Il campionamento adattivo è abilitato per impostazione predefinita in tutte le applicazioni ASP.NET Core,Adaptive sampling is enabled by default for all ASP.NET Core applications. ma può essere disabilitato o è possibile personalizzarne il comportamento.You can disable or customize the sampling behavior.

Disabilitazione del campionamento adattivoTurning off Adaptive Sampling

La funzionalità di campionamento predefinita può essere disabilitata durante l'aggiunta di Application Insights servizio nel metodo ConfigureServices, utilizzando ApplicationInsightsServiceOptions all'interno del file Startup.cs:The default sampling feature can be disabled while adding Application Insights service, in the method ConfigureServices, using ApplicationInsightsServiceOptions within the Startup.cs file:

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

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

Il codice sopra riportato disabilita la funzionalità di campionamento.The above code will disable sampling feature. Seguire la procedura descritta di seguito per aggiungere al campionamento più opzioni di personalizzazione.Follow the steps below to add sampling with more customization options.

Configurare le impostazioni del campionamentoConfigure Sampling settings

Usare i metodi di estensione di TelemetryProcessorChainBuilder, come illustrato di seguito, per personalizzare il comportamento della funzionalità di campionamento.Use extension methods of TelemetryProcessorChainBuilder as shown below to customize sampling behavior.

Importante

Se si usa questo metodo per configurare il campionamento, assicurarsi di usare le impostazioni aiOptions.EnableAdaptiveSampling = false; con AddApplicationInsightsTelemetry().If you use this method to configure sampling, please make sure to use aiOptions.EnableAdaptiveSampling = false; settings with AddApplicationInsightsTelemetry().

public void Configure(IApplicationBuilder app, IHostingEnvironment env, TelemetryConfiguration configuration)
{
    var builder = configuration.TelemetryProcessorChainBuilder;
    // version 2.5.0-beta2 and above should use the following line instead of above. (https://github.com/Microsoft/ApplicationInsights-aspnetcore/blob/develop/CHANGELOG.md#version-250-beta2)
    // var builder = configuration.DefaultTelemetrySink.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");

    builder.Build();

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

Se si usa il metodo precedente per configurare il campionamento, assicurarsi di usare aiOptions.EnableAdaptiveSampling = false; impostazioni con AddApplicationInsightsTelemetry ().If using the above method to configure sampling, make sure to use aiOptions.EnableAdaptiveSampling = false; settings with AddApplicationInsightsTelemetry().

Campionamento a frequenza fissa per ASP.NET, ASP.NET Core, siti Web Java e applicazioni PythonFixed-rate sampling for ASP.NET, ASP.NET Core, Java websites and Python applications

Il campionamento a frequenza fissa riduce il traffico inviato dal server e dai Web browser.Fixed rate sampling reduces the traffic sent from your web server and web browsers. A differenza del campionamento adattivo, riduce i dati di telemetria a una frequenza fissa definita dall'utente.Unlike adaptive sampling, it reduces telemetry at a fixed rate decided by you. Sincronizza inoltre il campionamento del client e del server in modo che gli elementi correlati vengano mantenuti, ad esempio quando si esamina una pagina di ricerca, è possibile trovare la richiesta correlata.It also synchronizes the client and server sampling so that related items are retained - for example, when you look at a page view in Search, you can find its related request.

Analogamente ad altre tecniche di campionamento, questo mantiene anche gli elementi correlati.Like other sampling techniques, this also retains related items. Per ciascun evento di richiesta HTTP, la richiesta e gli eventi correlati vengono eliminati o trasmessi congiuntamente.For each HTTP request event, the request and its related events are either discarded or transmitted together.

In Esplora metriche, frequenze quali il numero di richieste ed eccezioni vengono moltiplicate per un fattore in modo da compensare la frequenza di campionamento ed essere quindi corretti.In Metrics Explorer, rates such as request and exception counts are multiplied by a factor to compensate for the sampling rate, so that they are approximately correct.

Configurazione del campionamento a frequenza fissa in ASP.NETConfiguring fixed-rate sampling in ASP.NET

  1. Disabilitare il campionamento adattivo: in ApplicationInsights.config rimuovere o impostare come commento il nodo AdaptiveSamplingTelemetryProcessor.Disable adaptive sampling: In ApplicationInsights.config, remove or comment out the AdaptiveSamplingTelemetryProcessor node.

    
    <TelemetryProcessors>
    
    <!-- Disabled adaptive sampling:
      <Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.AdaptiveSamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel">
        <MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>
      </Add>
    -->
    
  2. Abilitare il modulo di campionamento a frequenza fissa.Enable the fixed-rate sampling module. Aggiungere questo frammento ad ApplicationInsights.config:Add this snippet to 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>
    
    

    Alternativa: abilitare il campionamento a frequenza fissa nel codice del server localeAlternative: enable fixed-rate sampling in your server code

    Invece di impostare il parametro di campionamento nel file con estensione config è possibile impostare questi valori a livello di codice.Instead of setting the sampling parameter in the .config file, you can programmatically set these values.

C#C#


    using Microsoft.ApplicationInsights.Extensibility;
    using Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel;
    ...

    var builder = TelemetryConfiguration.Active.TelemetryProcessorChainBuilder;
    // If you are on ApplicationInsights SDK v 2.8.0-beta2 or higher, use the following line instead
    // var builder = TelemetryConfiguration.Active.DefaultTelemetrySink.TelemetryProcessorChainBuilder;

    builder.UseSampling(10.0); // percentage

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

    builder.Build();

(Informazioni sui processori di telemetria.)(Learn about telemetry processors.)

Configurazione del campionamento a frequenza fissa in ASP.NET CoreConfiguring fixed-rate sampling in ASP.NET Core

  1. Disabilitare il campionamento adattivo: le modifiche possono essere apportate nel metodo ConfigureServices, usando ApplicationInsightsServiceOptions:Disable adaptive sampling: Changes can be made in the method ConfigureServices, using ApplicationInsightsServiceOptions:

    public void ConfigureServices(IServiceCollection services)
    {
    // ...
    
        var aiOptions = new Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions();
        aiOptions.EnableAdaptiveSampling = false;
        services.AddApplicationInsightsTelemetry(aiOptions);
    //...
    }
    
  2. Abilitare il modulo di campionamento a frequenza fissa.Enable the fixed-rate sampling module. È possibile apportare modifiche nel metodo Configure, come illustrato nel frammento di codice seguente:Changes can be made in the method Configure as shown in below snippet:

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        var configuration = app.ApplicationServices.GetService<TelemetryConfiguration>();
    
        var builder = configuration.TelemetryProcessorChainBuilder;
        // version 2.5.0-beta2 and above should use the following line instead of above. (https://github.com/Microsoft/ApplicationInsights-aspnetcore/blob/develop/CHANGELOG.md#version-250-beta2)
        // var builder = configuration.DefaultTelemetrySink.TelemetryProcessorChainBuilder;
    
        // Using fixed rate sampling   
        double fixedSamplingPercentage = 10;
        builder.UseSampling(fixedSamplingPercentage);
    
        builder.Build();
    
        // ...
    }
    
    

Configurazione del campionamento a frequenza fissa in JAVAConfiguring fixed-rate sampling in JAVA

  1. Scaricare e configurare l'applicazione Web con l'SDK per Java di Application Insights più recenteDownload and configure your web application with latest application insights java SDK

  2. Abilitare il modulo di campionamento a frequenza fissa aggiungendo il frammento di codice seguente al file ApplicationInsights.xml.Enable the fixed-rate sampling module by adding the following snippet to ApplicationInsights.xml file.

        <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. È possibile includere o escludere determinati tipi di dati di telemetria dal campionamento usando i tag seguenti all'interno del tag del processore "FixedRateSamplingTelemetryProcessor"You can Include or Exclude specific types of telemetry from Sampling using the following tags inside the Processor tag "FixedRateSamplingTelemetryProcessor"

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

I tipi di dati di telemetria che possono essere inclusi o esclusi dal campionamento sono: Dependency, Event, Exception, di visualizzazione, Request e Trace.The telemetry types that can be included or excluded from sampling are: Dependency, Event, Exception, PageView, Request, and Trace.

Nota

Come percentuale di campionamento, sceglierne una vicina a 100/N dove N è un numero intero.For the sampling percentage, choose a percentage that is close to 100/N where N is an integer. Il campionamento attualmente non supporta altri valori.Currently sampling doesn't support other values.

Configurazione del campionamento a frequenza fissa in OpenCensus PythonConfiguring fixed-rate sampling in OpenCensus Python

  1. Instrumentare l'applicazione con le più recenti utilità di esportazione di monitoraggio di Azure OpenCensus.Instrument your application with the latest OpenCensus Azure Monitor exporters.

Nota

Il campionamento a frequenza fissa è disponibile solo tramite l'utilità di esportazione della traccia.Fixed-rate sampling is only available using the trace exporter. Ciò significa che le richieste in ingresso e in uscita sono gli unici tipi di dati di telemetria in cui è possibile configurare il campionamento.This means incoming and outgoing requests are the only types of telemetry where sampling can be configured.

  1. È possibile specificare un sampler come parte della configurazione Tracer.You may specify a sampler as part of your Tracer configuration. Se non viene fornito alcun campionatore esplicito, il ProbabilitySampler verrà usato per impostazione predefinita.If no explicit sampler is provided, the ProbabilitySampler will be used by default. Per impostazione predefinita, ProbabilitySampler utilizzerebbe una velocità di 1/10000, ovvero una delle richieste 10000 verrà inviata a Application Insights.The ProbabilitySampler would use a rate of 1/10000 by default, meaning one out of every 10000 requests will be sent to Application Insights. Se si desidera specificare una frequenza di campionamento, vedere di seguito.If you want to specify a sampling rate, see below.

  2. Quando si specifica un campionatore, verificare che Tracer specifichi un campionatore con una frequenza di campionamento compresa tra 0,0 e 1,0 inclusi.When specifying a sampler, make sure your Tracer specifies a sampler with a sampling rate between 0.0 and 1.0 inclusive. Una frequenza di campionamento di 1,0 rappresenta il 100%, vale a dire che tutte le richieste verranno inviate come dati di telemetria a Application Insights.A sampling rate of 1.0 represents 100%, meaning all of your requests will be sent as telemetry to Application Insights.

    tracer = Tracer(
        exporter=AzureExporter(
            instrumentation_key='00000000-0000-0000-0000-000000000000',
        ),
        sampler=ProbabilitySampler(1.0),
    )
    

Campionamento per inserimentoIngestion sampling

Questa forma di campionamento opera nel punto in cui i dati di telemetria di server Web, browser e dispositivi raggiungono l'endpoint di servizio di Application Insights.This form of sampling operates at the point where the telemetry from your web server, browsers, and devices reaches the Application Insights service endpoint. Anche se non riduce il traffico dei dati di telemetria inviato dall'app, riduce la quantità di dati elaborati, conservati e addebitati da Application Insights.Although it doesn't reduce the telemetry traffic sent from your app, it does reduce the amount processed and retained (and charged for) by Application Insights.

Usare questo tipo di campionamento se l'app spesso supera la quota mensile e non si ha la possibilità di usare uno dei tipi di campionamento basati sull'SDK.Use this type of sampling if your app often goes over its monthly quota and you don't have the option of using either of the SDK-based types of sampling.

Impostare la frequenza di campionamento nella pagina Utilizzo e costi stimati:Set the sampling rate in the Usage and estimated costs page:

Nel pannello Panoramica sull'applicazione fare clic su Impostazioni, Quota, Esempi e quindi selezionare una frequenza di campionamento e fare clic su Aggiorna.

Come in altri tipi di campionamento, l'algoritmo consente di mantenere gli elementi di telemetria correlati.Like other types of sampling, the algorithm retains related telemetry items. Ad esempio, quando si controllano i dati di telemetria nella ricerca, sarà possibile trovare la richiesta correlata a una particolare eccezione.For example, when you're inspecting the telemetry in Search, you'll be able to find the request related to a particular exception. I conteggi di metrica, ad esempio la frequenza delle richieste e delle eccezioni, vengono mantenuti correttamente.Metric counts such as request rate and exception rate are correctly retained.

I punti dati che vengono rimossi dal campionamento non sono disponibili in alcuna funzionalità di Application Insights, ad esempio nell' esportazione continua.Data points that are discarded by sampling are not available in any Application Insights feature such as Continuous Export.

Il campionamento per inserimento non funziona mentre è attivo il campionamento a frequenza fissa o adattivo basato sull'SDK.Ingestion sampling doesn't operate while SDK-based adaptive or fixed-rate sampling is in operation. Il campionamento adattivo è abilitato per impostazione predefinita quando ASP.NET/ASP.NET Core SDK è abilitato in Visual Studio o abilitato nelle estensioni delle app Web di Azure o tramite Status Monitor e il campionamento per inserimento è disabilitato.Adaptive sampling is enabled by default when ASP.NET/ASP.NET Core SDK is enabled in Visual Studio or enabled in Azure Web App extensions or by using Status Monitor, and ingestion sampling is disabled. Se la frequenza di campionamento nell'SDK è inferiore al 100% (ovveroIf the sampling rate at the SDK is less than 100% (i.e gli elementi vengono campionati) la frequenza di campionamento di inserimento impostata viene ignorata.items are being sampled) then the ingestion sampling rate that you set is ignored.

Avviso

Il valore visualizzato nel riquadro indica il valore impostato per il campionamento per inserimento.The value shown on the tile indicates the value that you set for ingestion sampling. Non rappresenta la frequenza di campionamento effettiva se il campionamento dell'SDK è in funzione.It doesn't represent the actual sampling rate if SDK sampling is in operation.

Campionamento per pagine Web con JavaScriptSampling for web pages with JavaScript

È possibile configurare le pagine Web per il campionamento a frequenza fissa da qualsiasi server.You can configure web pages for fixed-rate sampling from any server.

Quando si configurano le pagine Web per Application Insights, modificare il frammento JavaScript ottenuto dal portale di Application Insights.When you configure the web pages for Application Insights, modify the JavaScript snippet that you get from the Application Insights portal. Nelle app ASP.NET, il frammento di codice viene in genere _Layout. cshtml. Inserire una riga come samplingPercentage: 10, prima della chiave di strumentazione:(In ASP.NET apps, the snippet typically goes in _Layout.cshtml.) Insert a line like samplingPercentage: 10, before the instrumentation key:

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

Come percentuale di campionamento, sceglierne una vicina a 100/N dove N è un numero intero.For the sampling percentage, choose a percentage that is close to 100/N where N is an integer. Il campionamento attualmente non supporta altri valori.Currently sampling doesn't support other values.

Se si abilita il campionamento a frequenza fissa nel server, i client e il server si sincronizzeranno in modo che nella ricerca sia possibile spostarsi tra le visualizzazioni pagina e le richieste correlate.If you also enable fixed-rate sampling at the server, the clients and server will synchronize so that, in Search, you can navigate between related page views and requests.

Quando usare il campionamento?When to use sampling?

Il campionamento adattivo viene abilitato automaticamente negli SDK più recenti di .NET e .NET Core.Adaptive sampling is automatically enabled in latest .NET and .NET Core SDKs. Indipendentemente dalla versione di SDK usata, è possibile abilitare il campionamento per inserimento in modo da consentire ad Application Insights di campionare i dati raccolti.Regardless of which version of the SDK you use, you can enable ingestion sampling to allow Application Insights to sample the collected data.

Per impostazione predefinita non è abilitato alcun campionamento nell'SDK per Java.By default no sampling is enabled in Java SDK. Attualmente è supportato solo il campionamento a frequenza fissa.Currently, it only supports Fixed Rate Sampling. Il campionamento adattivo non è supportato nell'SDK di Java.Adaptive Sampling is not supported in Java SDK.

In linea generale, per la maggior parte delle applicazioni di piccole e medie dimensioni il campionamento non è necessario.In general, for most small and medium size applications you don’t need sampling. Le informazioni di diagnostica più utili e le statistiche più accurate si ottengono raccogliendo dati su tutte le attività utente.The most useful diagnostic information and most accurate statistics are obtained by collecting data on all your user activities.

I vantaggi principali del campionamento sono:The main advantages of sampling are:

  • Il servizio Application Insights rimuove ("limita") i punti dati quando l'app invia una frequenza di telemetria molto elevata in un breve intervallo di tempo.Application Insights service drops ("throttles") data points when your app sends a very high rate of telemetry in short time interval.
  • Non superare la quota di punti dati per il proprio piano tariffario.To keep within the quota of data points for your pricing tier.
  • Ridurre il traffico di rete dalla raccolta di telemetria.To reduce network traffic from the collection of telemetry.

Quale tipo di campionamento è opportuno usare?Which type of sampling should I use?

Usare il campionamento per inserimento se:Use ingestion sampling if:

  • Si supera spesso la quota mensile dei dati di telemetria.You often go through your monthly quota of telemetry.
  • Si usa una versione dell'SDK che non supporta il campionamento, ad esempio le versioni di ASP.NET precedenti alla 2.You're using a version of the SDK that doesn't support sampling - for example ASP.NET versions earlier than 2.
  • Si stanno ottenendo troppi dati di telemetria dai Web browser degli utenti.You're getting too much telemetry from your users' web browsers.

Usare il campionamento a frequenza fissa se:Use fixed-rate sampling if:

  • Si usa l'SDK per Application Insights per i servizi Web di ASP.NET versione 2.0.0 o successiva oppure l'SDK per Java v2.0.1 o versione successiva, eYou're using the Application Insights SDK for ASP.NET web services version 2.0.0 or later or Java SDK v2.0.1 or later, and
  • È necessario il campionamento sincronizzato tra client e server, in modo che, quando si esaminano gli eventi in Cerca, sia possibile spostarsi tra gli eventi correlati nel client e nel server, ad esempio visualizzazioni pagina e richieste http.You want synchronized sampling between client and server, so that, when you're investigating events in Search, you can navigate between related events on the client and server, such as page views and http requests.
  • Se è certi della percentuale di campionamento appropriata per l'app.You are confident of the appropriate sampling percentage for your app. Deve essere abbastanza elevata da ottenere metriche accurate, ma al di sotto della frequenza che fa superare la quota di prezzo e le soglie di limitazione.It should be high enough to get accurate metrics, but below the rate that exceeds your pricing quota and the throttling limits.

Usare il campionamento adattivo:Use adaptive sampling:

Se le condizioni per l'uso di altre forme di campionamento non sono valide per uno scenario specifico, è consigliabile adottare il campionamento adattativo.If the conditions to use the other forms of sampling do not apply, we recommend adaptive sampling. Questa impostazione è abilitata per impostazione predefinita in ASP.NET/ASP.NET Core Server SDK.This setting is enabled by default in the ASP.NET/ASP.NET Core server SDK. Non riduce il traffico fino al raggiungimento di una frequenza minima specificata. Di conseguenza, i siti con bassi livelli di uso non saranno interessati.It will not reduce traffic until a certain minimum rate is reached, therefore, low-use sites will not be affected.

Come è possibile sapere se il campionamento è in esecuzione?How do I know whether sampling is in operation?

Per individuare la frequenza di campionamento effettiva indipendentemente dal punto in cui è stata applicata, usare una query di Analisi simile alla seguente:To discover the actual sampling rate no matter where it has been applied, use an Analytics query such as this:

union requests,dependencies,pageViews,browserTimings,exceptions,traces
| where timestamp > ago(1d)
| summarize RetainedPercentage = 100/avg(itemCount) by bin(timestamp, 1h), itemType

Se RetainedPercentage per qualsiasi tipo è minore di 100, viene campionato tale elemento.If RetainedPercentage for any type is less than 100, then that item is being sampled.

Application Insights non campiona i tipi di dati di telemetria relativi a sessione, metriche e contatori delle prestazioni in tutte le tecniche di campionamento descritte in precedenza. Questi tipi sono sempre esclusi dal campionamento poiché la riduzione della precisione può essere estremamente indesiderata per questi tipi di telemetriaApplication Insights does not sample session, metrics and performance counters telemetry types in any sampling techniques described above. These types are always excluded from sampling as reduction in precision can be highly undesirable for these telemetry types

Come funziona il campionamento?How does sampling work?

Funzionalità di campionamento a frequenza fissa dell'SDK per ASP.NET a partire dalla versione 2.0.0 e dell'SDK di Java a partire dalla versione 2.0.1 in poi.Fixed-rate sampling feature of the SDK in ASP.NET versions from 2.0.0 and Java SDK version 2.0.1 and onwards. Il campionamento adattivo è una funzionalità dell'SDK nella versione ASP.NET 2.0.0 o successiva.Adaptive sampling is a feature of SDK in ASP.NET versions from 2.0.0 onwards. Il campionamento per inserimento è una funzionalità del servizio Application Insights ed è operativo se l'SDK non sta eseguendo un altro campionamento.Ingestion sampling is a feature of the Application Insights service, and can be in operation if the SDK is not performing sampling.

L'algoritmo di campionamento decide quali elementi di telemetria eliminare e quali mantenere, sia che venga eseguito nell'SDK o nel servizio Application Insights.The sampling algorithm decides which telemetry items to drop, and which ones to keep (whether it's in the SDK or in the Application Insights service). La decisione sul campionamento si basa su alcune regole che hanno lo scopo di lasciare intatti tutti i punti dati correlati, mantenendo in Application Insights un'esperienza di diagnostica sfruttabile e affidabile anche con un set di dati ridotto.The sampling decision is based on several rules that aim to preserve all interrelated data points intact, maintaining a diagnostic experience in Application Insights that is actionable and reliable even with a reduced data set. Se, ad esempio, per una richiesta non riuscita l'app invia elementi di telemetria aggiuntivi (come eccezioni e tracce registrate da questa richiesta), il campionamento non dividerà la richiesta e il resto della telemetria,For example, if for a failed request your app sends additional telemetry items (such as exception and traces logged from this request), sampling will not split this request and other telemetry. ma conserverà o rimuoverà gli elementi tutti insieme.It either keeps or drops them all together. Di conseguenza, quando si osservano i dettagli della richiesta in Application Insights, è sempre possibile visualizzare la richiesta con gli elementi di telemetria associati.As a result, when you look at the request details in Application Insights, you can always see the request along with its associated telemetry items.

La decisione di campionamento è basata sull'ID operazione della richiesta, il che significa che tutti gli elementi di telemetria appartenenti a una determinata operazione vengono conservati o eliminati.The sampling decision is based on the operation ID of the request, which means that all telemetry items belonging to a particular operation is either preserved or dropped. Per gli elementi di telemetria che non hanno set di ID operazione (ad esempio, elementi di telemetria segnalati da thread asincroni senza contesto http) il campionamento acquisisce semplicemente una percentuale di elementi di telemetria di ogni tipo.For the telemetry items that do not have operation ID set (for example telemetry items reported from asynchronous threads with no http context) sampling simply captures a percentage of telemetry items of each type. Prima di 2.5.0-beta2 di .NET SDK e 2.2.0-beta3 di ASP.NET Core SDK, la decisione di campionamento è basata sull'hash dell'ID utente per le applicazioni che definiscono "User", ovvero la maggior parte delle applicazioni Web tipiche.Prior to 2.5.0-beta2 of .NET SDK, and 2.2.0-beta3 of ASP.NET Core SDK, the sampling decision was based on the hash of the user ID for applications that define "user" (that is, most typical web applications). Per i tipi di applicazioni che non definiscono gli utenti, ad esempio i servizi Web, la decisione di campionamento è basata sull'ID operazione della richiesta.For the types of applications that didn't define users (such as web services) the sampling decision was based on the operation ID of the request.

Quando la telemetria viene ripresentata all'utente, il servizio Application Insights modifica le metriche in base alla stessa percentuale di campionamento usata in fase di raccolta, per compensare i punti dati mancanti.When presenting telemetry back to you, the Application Insights service adjusts the metrics by the same sampling percentage that was used at the time of collection, to compensate for the missing data points. Quindi, quando osservano la telemetria in Application Insights, gli utenti visualizzano approssimazioni statisticamente corrette molto vicine ai numeri reali.Hence, when looking at the telemetry in Application Insights, the users are seeing statistically correct approximations that are very close to the real numbers.

La precisione dell'approssimazione dipende in gran parte dalla percentuale di campionamento configurata.The accuracy of the approximation largely depends on the configured sampling percentage. La precisione è anche maggiore per le applicazioni che gestiscono un volume elevato di richieste generalmente simili da una grande quantità di utenti.Also, the accuracy increases for applications that handle a large volume of generally similar requests from lots of users. Per le applicazioni che non gestiscono un carico di lavoro significativo, invece, il campionamento non è necessario perché queste applicazioni in genere riescono a inviare tutti i dati di telemetria senza superare la quota e senza causare perdite di dati dovute alla limitazione.On the other hand, for applications that don't work with a significant load, sampling is not needed as these applications can usually send all their telemetry while staying within the quota, without causing data loss from throttling.

Avviso

Application Insights non esegue il campionamento di metriche e tipi di dati di telemetria delle sessioni.Application Insights does not sample metrics and sessions telemetry types. La riduzione della precisione può risultare estremamente inappropriata per questi tipi di dati di telemetria.Reduction in the precision can be highly undesirable for these telemetry types.

Campionamento adattivoAdaptive sampling

Il campionamento adattivo aggiunge un componente che monitora la frequenza corrente di trasmissione dall'SDK e regola la percentuale di campionamento per cercare di rimanere entro la frequenza massima di destinazione.Adaptive sampling adds a component that monitors the current rate of transmission from the SDK, and adjusts the sampling percentage to try to stay within the target maximum rate. La rettifica viene ricalcolata a intervalli regolari e si basa su una media mobile della frequenza di trasmissione in uscita.The adjustment is recalculated at regular intervals, and is based on a moving average of the outgoing transmission rate.

Campionamento e JavaScript SDKSampling and the JavaScript SDK

L'SDK lato client (JavaScript) partecipa al campionamento a frequenza fissa insieme all'SDK lato server.The client-side (JavaScript) SDK participates in fixed-rate sampling in conjunction with the server-side SDK. Le pagine instrumentate invieranno solo la telemetria lato client dagli stessi utenti per cui il lato server ha preso la decisione di "eseguire il campionamento internamente".The instrumented pages will only send client-side telemetry from the same users for which the server-side made its decision to "sample in." Questa logica è concepita per mantenere l'integrità della sessione utente sui lati client e server.This logic is designed to maintain integrity of user session across client- and server-sides. Di conseguenza, da un particolare elemento della telemetria in Application Insights è possibile trovare tutti gli altri elementi della telemetria per questa sessione utente.As a result, from any particular telemetry item in Application Insights you can find all other telemetry items for this user or session.

La telemetria lato e client e server non mostra i campioni coordinati, come descritto sopra.My client and server-side telemetry don't show coordinated samples as you describe above.

  • Verificare di avere abilitato il campionamento a frequenza fissa sia sul server che sul client.Verify that you enabled fixed-rate sampling both on server and client.
  • Assicurarsi che la versione dell'SDK sia 2.0 o successiva.Make sure that the SDK version is 2.0 or above.
  • Controllare di avere impostato la stessa percentuale di campionamento sia nel client che nel server.Check that you set the same sampling percentage in both the client and server.

Campionamento in funzioni di AzureSampling in Azure Functions

Seguire le istruzioni di questo per configurare il campionamento per le app in esecuzione in funzioni di Azure.Follow instructions from this to configure sampling for apps running in Azure Functions.

Domande frequentiFrequently Asked Questions

Qual è il comportamento di campionamento predefinito in ASP.NET e ASP.NET Core SDK?What is the default sampling behavior in ASP.NET and ASP.NET Core SDK?

  • Se si usa una delle versioni più recenti dell'SDK precedente, il campionamento adattivo è abilitato per impostazione predefinita con cinque elementi di telemetria al secondo.If you are using one of the latest versions of the above SDK, Adaptive Sampling is enabled by default with five telemetry items per second. Sono stati aggiunti 2 AdaptiveSamplingTelemetryProcessors per impostazione predefinita e uno include il tipo di evento nel campionamento e l'altro esclude il tipo di evento dal campionamento.There are 2 AdaptiveSamplingTelemetryProcessors added by default, and one includes Event type in sampling, and the other excludes Event type from sampling. Questa configurazione significa che l'SDK tenterà di limitare gli elementi di telemetria a cinque elementi di telemetria dei tipi di evento e cinque elementi di telemetria di tutti gli altri tipi combinati, garantendo in tal modo che gli eventi vengano campionati separatamente dagli altri tipi di telemetria.This configuration means that the SDK will try to limit telemetry items to five telemetry items of Event types, and five telemetry items of all other types combined, thereby ensuring that Events are sampled separately from other Telemetry types. Gli eventi vengono in genere usati per la telemetria aziendale e probabilmente non dovrebbero essere interessati dai volumi di telemetria di diagnostica.Events are typically used for business telemetry, and most likely should not be affected by diagnostic telemetry volumes.

    Di seguito viene illustrato il file ApplicationInsights. config predefinito generato.The following shows the default ApplicationInsights.Config file generated. Come descritto, sono stati aggiunti due nodi AdaptiveSamplingTelemetryProcessor distinti, uno esclusi i tipi di evento e l'altro che lo include.As described, there are two separate AdaptiveSamplingTelemetryProcessor nodes added, one excluding Event types, and another including it. In ASP.NET Core, nel codice è abilitato esattamente lo stesso comportamento predefinito.In ASP.NET Core, exact same default behavior is enabled in code. Usare gli esempi nella sezione precedente del documento per modificare questo comportamento predefinito.Use the examples in the earlier section of the document to change this default behavior.

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

È possibile campionare i dati di telemetria più di una volta?Can telemetry be sampled more than once?

  • No.No. SamplingTelemetryProcessors ignora gli elementi dalle considerazioni di campionamento se l'elemento è già campionato.SamplingTelemetryProcessors ignore items from sampling considerations if the item is already sampled. Lo stesso vale anche per il campionamento di inserimento, che non applica il campionamento a tali elementi già campionati nell'SDK stesso.The same is true for Ingestion sampling as well, which won't apply sampling to those items already sampled in the SDK itself.'

Perché il campionamento non è una semplice "raccolta di percentuale X di ogni tipo di telemetria"?Why isn't sampling a simple "collect X percent of each telemetry type"?

  • Sebbene questo approccio di campionamento fornisca un livello elevato di precisione nelle approssimazioni delle metriche, potrebbe interrompere la possibilità di correlare i dati di diagnostica per utente, sessione e richiesta, che è fondamentale per la diagnostica.While this sampling approach would provide with a high level of precision in metric approximations, it would break ability to correlate diagnostic data per user, session, and request, which is critical for diagnostics. Il campionamento quindi funziona meglio come logica di "raccolta di tutti gli elementi della telemetria per una percentuale X di utenti dell'app" o di "raccolta di tutta la telemetria per una percentuale X di richieste app".Therefore, sampling works better with "collect all telemetry items for X percent of app users", or "collect all telemetry for X percent of app requests" logic. Per gli elementi di telemetria non associati alle richieste, ad esempio l'elaborazione asincrona in background, il fallback consiste nel "raccogliere la percentuale X di tutti gli elementi per ogni tipo di telemetria".For the telemetry items not associated with the requests (such as background asynchronous processing), the fallback is to "collect X percent of all items for each telemetry type."

La percentuale di campionamento può variare nel tempo?Can the sampling percentage change over time?

  • Sì, il campionamento adattivo modifica gradualmente la percentuale di campionamento, in base al volume attualmente osservato della telemetria.Yes, adaptive sampling gradually changes the sampling percentage, based on the currently observed volume of the telemetry.

Se si usa il campionamento a frequenza fissa, come stabilire quale sarà la percentuale di campionamento ideale per l'app?If I use fixed-rate sampling, how do I know which sampling percentage will work the best for my app?

  • Una modalità è quella di iniziare con il campionamento adattivo, scoprire quale frequenza è impostata (vedere la domanda precedente) e quindi cambiarla a campionamento a frequenza fissa usando quella frequenza.One way is to start with adaptive sampling, find out what rate it settles on (see the above question), and then switch to fixed-rate sampling using that rate.

    In caso contrario, è necessario usare l'intuito.Otherwise, you have to guess. Analizzare l'uso della telemetria corrente in Application Insights, osservare le possibili limitazioni in corso e stimare il volume della telemetria raccolta.Analyze your current telemetry usage in Application Insights, observe any throttling that is occurring, and estimate the volume of the collected telemetry. Questi tre input, insieme al piano tariffario selezionato, suggeriscono di quanto ridurre il volume dei dati di telemetria raccolti.These three inputs, together with your selected pricing tier, suggest how much you might want to reduce the volume of the collected telemetry. Tuttavia, un aumento nel numero degli utenti o qualsiasi altra migrazione nel volume di telemetria potrebbe invalidare la stima.However, an increase in the number of your users or some other shift in the volume of telemetry might invalidate your estimate.

Cosa accade se si configura una percentuale di campionamento troppo bassa?What happens if I configure sampling percentage too low?

  • Una percentuale di campionamento troppo bassa (campionamento eccessivamente aggressivo) ridurrà la precisione delle approssimazioni, quando Application Insights tenterà di compensare la visualizzazione dei dati per la riduzione del volume dei dati.Excessively low sampling percentage (over-aggressive sampling) reduces the accuracy of the approximations, when Application Insights attempts to compensate the visualization of the data for the data volume reduction. Anche l'esperienza di diagnostica potrebbe risultare compromessa, perché potrebbero venire campionate alcune richieste lente o non riuscite.Also, diagnostic experience might be negatively impacted, as some of the infrequently failing or slow requests may be sampled out.

Cosa accade se si configura una percentuale di campionamento troppo alta?What happens if I configure sampling percentage too high?

  • Configurando una percentuale di campionamento troppo elevata (non abbastanza aggressiva), si otterrà una riduzione insufficiente del volume dei dati di telemetria raccolti.Configuring too high sampling percentage (not aggressive enough) results in an insufficient reduction in the volume of the collected telemetry. Potrebbe tuttavia verificarsi una perdita dei dati di telemetria correlata alla limitazione e il costo per l'uso di Application Insights potrebbe essere superiore al previsto per l'applicazione di tariffe aggiuntive.You may still experience telemetry data loss related to throttling, and the cost of using Application Insights might be higher than you planned due to overage charges.

Su quali piattaforme è possibile usare il campionamento?On what platforms can I use sampling?

  • Se nell'SDK non è impostato il campionamento, si verifica automaticamente il campionamento per inserimento per i dati di telemetria superiori a un determinato volume.Ingestion sampling can occur automatically for any telemetry above a certain volume, if the SDK is not performing sampling. Questa configurazione funziona, ad esempio, se si usa una versione precedente di ASP.NET SDK o una versione precedente di Java SDK (1.0.10 o precedente).This configuration would work, for example, if you are using an older version of the ASP.NET SDK or previous version of Java SDK(1.0.10 or before).
  • Se si usano ASP.NET SDK versioni 2.0.0 e successive o ASP.NET CORE SDK versione 2.2.0 e successive (ospitate in Azure o nel proprio server), per impostazione predefinita si ottiene il campionamento adattivo, ma è possibile passare a una frequenza fissa come descritto in precedenza.If you're using ASP.NET SDK versions 2.0.0 and above or ASP.NET CORE SDK version 2.2.0 and above (hosted either in Azure or on your own server), you get adaptive sampling by default, but you can switch to fixed-rate as described above. Con il campionamento a frequenza fissa, l'SDK del browser si sincronizza automaticamente con gli eventi correlati al campione.With fixed-rate sampling, the browser SDK automatically synchronizes to sample related events.
  • Se si usa Java SDK versione 2.0.1 o successiva, è possibile configurare ApplicationInsights. XML per attivare il campionamento a frequenza fissa.If you're using Java SDK version 2.0.1 or above, you can configure ApplicationInsights.xml to turn on Fixed Rate Sampling. Il campionamento viene disattivato per impostazione predefinita.Sampling is turned off by default. Con il campionamento a frequenza fissa, l'SDK del browser si sincronizza automaticamente con gli eventi correlati al campione.With fixed-rate sampling, the browser SDK automatically synchronizes to sample related events.

Esistono alcuni eventi rari che si vuole visualizzare sempre. Come è possibile passarli al modulo di campionamento?There are certain rare events I always want to see. How can I get them past the sampling module?

  • Il modo migliore per ottenere questo risultato è scrivere un personalizzata telemetryinitializerpersonalizzato, che imposta il SamplingPercentage su 100 sull'elemento di telemetria che si vuole mantenere, come illustrato di seguito.The best way to achieve this is to write a custom TelemetryInitializer, which sets the SamplingPercentage to 100 on the telemetry item you want retained, as shown below. Poiché gli inizializzatori sono garantiti per l'esecuzione prima dei processori di telemetria (incluso il campionamento), ciò garantisce che tutte le tecniche di campionamento ignoreranno questo elemento da eventuali considerazioni di campionamento.As initializers are guaranteed to be run before telemetry processors (including sampling), this ensures that all sampling techniques will ignore this item from any sampling considerations.
     public class MyTelemetryInitializer : ITelemetryInitializer
      {
         public void Initialize(ITelemetry telemetry)
        {
            if(somecondition)
            {
                ((ISupportSampling)item).SamplingPercentage = 100;
            }
        }
      }

Passaggi successiviNext steps