Amostragem no Application InsightsSampling in Application Insights

A amostragem é um recurso do Azure Application Insights.Sampling is a feature in Azure Application Insights. É a maneira recomendada para reduzir o tráfego de telemetria, os custos de dados e os custos de armazenamento, preservando uma análise estatisticamente correta dos dados do aplicativo.It is the recommended way to reduce telemetry traffic, data costs, and storage costs, while preserving a statistically correct analysis of application data. A amostragem também ajuda a evitar Application Insights limitação da telemetria.Sampling also helps you avoid Application Insights throttling your telemetry. O filtro de amostragem seleciona itens relacionados, para que você possa navegar entre os itens quando estiver fazendo investigações de diagnóstico.The sampling filter selects items that are related, so that you can navigate between items when you are doing diagnostic investigations.

Quando as contagens de métricas são apresentadas no portal, elas são renormalizadas para levar em consideração a amostragem.When metric counts are presented in the portal, they are renormalized to take into account sampling. Isso minimiza qualquer efeito nas estatísticas.Doing so minimizes any effect on the statistics.

Breve resumoBrief summary

  • Há três tipos diferentes de amostragem: amostragem adaptável, amostragem de taxa fixa e amostragem de ingestão.There are three different types of sampling: adaptive sampling, fixed-rate sampling, and ingestion sampling.
  • A amostragem adaptável é habilitada por padrão em todas as versões mais recentes do Application Insights ASP.NET e ASP.NET Core SDKs (Software Development Kits).Adaptive sampling is enabled by default in all the latest versions of the Application Insights ASP.NET and ASP.NET Core Software Development Kits (SDKs). Ele também é usado pelo Azure Functions.It is also used by Azure Functions.
  • A amostragem de taxa fixa está disponível em versões recentes dos SDKs de Application Insights para ASP.NET, ASP.NET Core, Java (tanto o agente quanto o SDK) e o Python.Fixed-rate sampling is available in recent versions of the Application Insights SDKs for ASP.NET, ASP.NET Core, Java (both the agent and the SDK), and Python.
  • A amostragem de ingestão funciona no ponto de extremidade do serviço de Application Insights.Ingestion sampling works on the Application Insights service endpoint. Ele só se aplica quando nenhuma outra amostragem está em vigor.It only applies when no other sampling is in effect. Se o SDK amostras de sua telemetria, a amostragem de ingestão será desabilitada.If the SDK samples your telemetry, ingestion sampling is disabled.
  • Para aplicativos Web, se você registrar eventos personalizados e precisar garantir que um conjunto de eventos seja mantido ou descartado em conjunto, os eventos deverão ter o mesmo OperationId valor.For web applications, 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.
  • Se você escrever consultas de Análise, deverá levar em conta a amostragem.If you write Analytics queries, you should take account of sampling. Em particular, em vez de simplesmente contar registros, você deve usar summarize sum(itemCount).In particular, instead of simply counting records, you should use summarize sum(itemCount).
  • Alguns tipos de telemetria, incluindo métricas de desempenho e métricas personalizadas, são sempre mantidos, independentemente de a amostragem estar habilitada ou não.Some telemetry types, including performance metrics and custom metrics, are always kept regardless of whether sampling is enabled or not.

A tabela a seguir resume os tipos de amostragem disponíveis para cada SDK e tipo de aplicativo:The following table summarizes the sampling types available for each SDK and type of application:

SDK do Application InsightsApplication Insights SDK Amostragem adaptável com suporteAdaptive sampling supported Amostragem de taxa fixa com suporteFixed-rate sampling supported Amostragem de ingestão com suporteIngestion sampling supported
ASP.NETASP.NET Sim (ativado por padrão)Yes (on by default) SimYes Somente se nenhuma outra amostragem estiver em vigorOnly if no other sampling is in effect
ASP.NET CoreASP.NET Core Sim (ativado por padrão)Yes (on by default) SimYes Somente se nenhuma outra amostragem estiver em vigorOnly if no other sampling is in effect
Funções do AzureAzure Functions Sim (ativado por padrão)Yes (on by default) NãoNo Somente se nenhuma outra amostragem estiver em vigorOnly if no other sampling is in effect
JavaJava NãoNo SimYes Somente se nenhuma outra amostragem estiver em vigorOnly if no other sampling is in effect
Node.JSNode.JS NãoNo SimYes Somente se nenhuma outra amostragem estiver em vigorOnly if no other sampling is in effect
PythonPython NãoNo SimYes Somente se nenhuma outra amostragem estiver em vigorOnly if no other sampling is in effect
Todos os outrosAll others NãoNo NãoNo SimYes

Observação

As informações sobre a maior parte desta página se aplicam às versões atuais dos SDKs do Application Insights.The information on most of this page applies to the current versions of the Application Insights SDKs. Para obter informações sobre versões mais antigas dos SDKs, consulte a seção abaixo.For information on older versions of the SDKs, see the section below.

Tipos de amostragemTypes of sampling

Há três métodos diferentes de amostragem:There are three different sampling methods:

  • A amostragem adaptável ajusta automaticamente o volume de telemetria enviado do SDK em seu aplicativo ASP.net/ASP.NET Core e de Azure functions.Adaptive sampling automatically adjusts the volume of telemetry sent from the SDK in your ASP.NET/ASP.NET Core app, and from Azure Functions. Essa é a amostragem padrão quando você usa o SDK do ASP.NET ou do ASP.NET Core.This is the default sampling when you use the ASP.NET or ASP.NET Core SDK. A amostragem adaptável está disponível no momento apenas para telemetria ASP.NET do lado do servidor e para Azure Functions.Adaptive sampling is currently only available for ASP.NET server-side telemetry, and for Azure Functions.

  • A amostragem de taxa fixa reduz o volume de telemetria enviado do seu ASP.NET ou ASP.NET Core ou do servidor Java e dos navegadores dos seus usuários.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. Você define a taxa.You set the rate. O cliente e o servidor sincronizarão suas amostragens para que, na Pesquisa, você possa navegar entre exibições de página e solicitações relacionadas.The client and server will synchronize their sampling so that, in Search, you can navigate between related page views and requests.

  • A amostragem de ingestão ocorre no ponto de extremidade do serviço de Application insights.Ingestion sampling happens at the Application Insights service endpoint. Ela descarta parte da telemetria que chega em seu aplicativo, na taxa de amostragem que você definir.It discards some of the telemetry that arrives from your app, at a sampling rate that you set. Ela não reduz o tráfego de telemetria enviado do seu aplicativo, mas ajuda você a se manter em sua cota mensal.It doesn't reduce telemetry traffic sent from your app, but helps you keep within your monthly quota. A principal vantagem da amostragem de ingestão é que você pode definir a taxa de amostragem sem reimplantar seu aplicativo.The main advantage of ingestion sampling is that you can set the sampling rate without redeploying your app. A amostragem de ingestão funciona uniformemente para todos os servidores e clientes, mas não se aplica quando outros tipos de amostragem estão em operação.Ingestion sampling works uniformly for all servers and clients, but it does not apply when any other types of sampling are in operation.

Importante

Se os métodos de amostragem de taxa adaptável ou fixa estiverem em operação, a amostragem de ingestão será desabilitada.If adaptive or fixed rate sampling methods are in operation, ingestion sampling is disabled.

amostragem adaptávelAdaptive sampling

A amostragem adaptável afeta o volume de telemetria enviado do seu aplicativo de servidor Web para o end-point do serviço Application Insights.Adaptive sampling affects the volume of telemetry sent from your web server app to the Application Insights service endpoint.

Dica

A amostragem adaptável é habilitada por padrão quando você usa o SDK do ASP.NET ou o SDK do ASP.NET Core e também é habilitada por padrão para Azure Functions.Adaptive sampling is enabled by default when you use the ASP.NET SDK or the ASP.NET Core SDK, and is also enabled by default for Azure Functions.

O volume é ajustado automaticamente para manter dentro de uma taxa máxima de tráfego especificada e é controlado por meio da configuração MaxTelemetryItemsPerSecond .The volume is adjusted automatically to keep within a specified maximum rate of traffic, and is controlled via the setting MaxTelemetryItemsPerSecond. Se o aplicativo produzir uma pequena quantidade de telemetria, como durante a depuração ou devido ao baixo uso, os itens não serão descartados pelo processador de amostragem, desde que o volume esteja abaixo 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. À medida que aumenta o volume de telemetria, a taxa de amostragem é ajustada para alcançar o volume de destino.As the volume of telemetry increases, the sampling rate is adjusted so as to achieve the target volume. O ajuste é recalculado em intervalos regulares e tem base em uma média móvel da taxa de transmissão de saída.The adjustment is recalculated at regular intervals, and is based on a moving average of the outgoing transmission rate.

Para atingir o volume de destino, parte da telemetria gerada é descartada.To achieve the target volume, some of the generated telemetry is discarded. Assim como os outros tipos de amostragem, o algoritmo retém os itens de telemetria relacionados.But like other types of sampling, the algorithm retains related telemetry items. Por exemplo, quando você estiver analisando a telemetria na Pesquisa, poderá localizar a solicitação relacionada a uma exceção específica.For example, when you're inspecting the telemetry in Search, you'll be able to find the request related to a particular exception.

As contagens de métrica, como a taxa de solicitações e a taxa de exceções são ajustadas para compensar a taxa de amostragem, para que mostrem valores aproximadamente corretos no Gerenciador de Métricas.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.

Configurando a amostragem adaptável para aplicativos ASP.NETConfiguring adaptive sampling for ASP.NET applications

Observação

Esta seção se aplica a aplicativos ASP.NET, não a ASP.NET Core aplicativos.This section applies to ASP.NET applications, not to ASP.NET Core applications. Saiba mais sobre como configurar a amostragem adaptável para aplicativos ASP.NET Core mais adiante neste documento.Learn about configuring adaptive sampling for ASP.NET Core applications later in this document.

No ApplicationInsights.config , você pode ajustar vários parâmetros no AdaptiveSamplingTelemetryProcessor nó.In ApplicationInsights.config, you can adjust several parameters in the AdaptiveSamplingTelemetryProcessor node. Os números mostrados são os valores padrão:The figures shown are the default values:

  • <MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>

    A taxa de destino de operações lógicas que o algoritmo adaptável pretende coletar em cada host do servidor.The target rate of logical operations that the adaptive algorithm aims to collect on each server host. Se o seu aplicativo Web for executado em muitos hosts, reduza esse valor para permanecer dentro de sua taxa de destino de tráfego no portal do 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>

    O intervalo no qual a taxa atual de telemetria é reavaliada.The interval at which the current rate of telemetry is reevaluated. Avaliação é executada como uma média móvel.Evaluation is performed as a moving average. Talvez você queira reduzir esse intervalo se a sua telemetria estiver sujeita a picos repentinos.You might want to shorten this interval if your telemetry is liable to sudden bursts.

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

    Quando o valor da porcentagem de amostragem for alterado, o quanto logo depois será permitido reduzir o percentual de amostragem novamente para capturar menos dados?When sampling percentage value changes, how soon after are we allowed to lower the sampling percentage again to capture less data?

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

    Quando o valor da porcentagem de amostragem for alterado, o quanto logo depois será permitido aumentar o percentual de amostragem novamente para capturar mais dados?When sampling percentage value changes, how soon after are we allowed to increase the sampling percentage again to capture more data?

  • <MinSamplingPercentage>0.1</MinSamplingPercentage>

    À medida que a porcentagem de amostragem varia, qual é o valor mínimo que temos permissão para definir?As sampling percentage varies, what is the minimum value we're allowed to set?

  • <MaxSamplingPercentage>100.0</MaxSamplingPercentage>

    À medida que a porcentagem de amostragem varia, qual é o valor máximo que temos permissão para definir?As sampling percentage varies, what is the maximum value we're allowed to set?

  • <MovingAverageRatio>0.25</MovingAverageRatio>

    No cálculo da média móvel, isso especifica o peso que deve ser atribuído ao valor mais recente.In the calculation of the moving average, this specifies the weight that should be assigned to the most recent value. Use um valor menor ou igual a 1.Use a value equal to or less than 1. Valores menores tornam o algoritmo menos reativo a mudanças repentinas.Smaller values make the algorithm less reactive to sudden changes.

  • <InitialSamplingPercentage>100</InitialSamplingPercentage>

    A quantidade de telemetria a ser amostrada quando o aplicativo acabou de ser iniciado.The amount of telemetry to sample when the app has just started. Não reduza esse valor enquanto estiver depurando.Don't reduce this value while you're debugging.

  • <ExcludedTypes>Trace;Exception</ExcludedTypes>

    Uma lista delimitada por ponto e vírgula de tipos que você não deseja que estejam sujeitos à amostragem.A semi-colon delimited list of types that you do not want to be subject to sampling. Os tipos reconhecidos são: Dependency , Event , Exception ,, PageView Request , Trace .Recognized types are: Dependency, Event, Exception, PageView, Request, Trace. Toda a telemetria dos tipos especificados é transmitida; os tipos que não forem especificados serão amostrados.All telemetry of the specified types is transmitted; the types that are not specified will be sampled.

  • <IncludedTypes>Request;Dependency</IncludedTypes>

    Uma lista delimitada por ponto e vírgula dos tipos que você deseja que sejam sujeitos à amostragem.A semi-colon delimited list of types that you do want to subject to sampling. Os tipos reconhecidos são: Dependency , Event , Exception ,, PageView Request , Trace .Recognized types are: Dependency, Event, Exception, PageView, Request, Trace. Os tipos especificados serão amostrados; toda a telemetria dos outros tipos sempre será transmitida.The specified types will be sampled; all telemetry of the other types will always be transmitted.

Para desativar a amostragem adaptável, remova os AdaptiveSamplingTelemetryProcessor nós do ApplicationInsights.config .To switch off adaptive sampling, remove the AdaptiveSamplingTelemetryProcessor node(s) from ApplicationInsights.config.

Alternativa: configurar a amostragem adaptável no códigoAlternative: Configure adaptive sampling in code

Em vez de definir o parâmetro de amostragem no .config arquivo, você pode definir esses valores programaticamente.Instead of setting the sampling parameter in the .config file, you can programmatically set these values.

  1. Remova todos os AdaptiveSamplingTelemetryProcessor nós do .config arquivo.Remove all the AdaptiveSamplingTelemetryProcessor node(s) from the .config file.

  2. Use o trecho a seguir para configurar a amostragem adaptável:Use the following snippet to configure adaptive sampling:

    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();
    

    (Saiba mais sobre os processadores de telemetria.)(Learn about telemetry processors.)

Você também pode ajustar a taxa de amostragem para cada tipo de telemetria individualmente ou pode até mesmo excluir determinados tipos de amostra:You can also adjust the sampling rate for each telemetry type individually, or can even exclude certain types from being sampled at all:

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

Configurando a amostragem adaptável para aplicativos ASP.NET CoreConfiguring adaptive sampling for ASP.NET Core applications

Não há nenhum ApplicationInsights.config para ASP.NET Core aplicativos, portanto, toda a configuração é feita por meio de código.There is no ApplicationInsights.config for ASP.NET Core applications, so all configuration is done via code. A amostragem adaptável está habilitada por padrão para todos os aplicativos ASP.NET Core.Adaptive sampling is enabled by default for all ASP.NET Core applications. É possível desabilitar ou personalizar o comportamento de amostragem.You can disable or customize the sampling behavior.

Desativando a amostragem adaptávelTurning off adaptive sampling

O recurso de amostragem padrão pode ser desabilitado ao adicionar Application Insights serviço, no método ConfigureServices , usando ApplicationInsightsServiceOptions dentro do Startup.cs arquivo: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);

    //...
}

O código acima desabilitará a amostragem adaptável.The above code will disable adaptive sampling. Siga as etapas abaixo para adicionar a amostragem com mais opções de personalização.Follow the steps below to add sampling with more customization options.

Definir configurações de amostragemConfigure sampling settings

Use os métodos de extensão de TelemetryProcessorChainBuilder conforme mostrado abaixo para personalizar o comportamento de amostragem.Use extension methods of TelemetryProcessorChainBuilder as shown below to customize sampling behavior.

Importante

Se você usar esse método para configurar a amostragem, certifique-se de definir a aiOptions.EnableAdaptiveSampling propriedade como false ao chamar AddApplicationInsightsTelemetry() .If you use this method to configure sampling, please make sure to set the aiOptions.EnableAdaptiveSampling property to false when calling AddApplicationInsightsTelemetry().

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();

    // ...
}

Configurando a amostragem adaptável para Azure FunctionsConfiguring adaptive sampling for Azure Functions

Siga as instruções desta página para configurar a amostragem adaptável para aplicativos em execução no Azure functions.Follow instructions from this page to configure adaptive sampling for apps running in Azure Functions.

Amostragem de taxa fixaFixed-rate sampling

A amostragem de taxa fixa reduz o tráfego enviado do seu servidor Web e navegadores da Web.Fixed-rate sampling reduces the traffic sent from your web server and web browsers. Ao contrário da amostragem adaptável, ela reduz a telemetria a uma taxa fixa decidida por você.Unlike adaptive sampling, it reduces telemetry at a fixed rate decided by you. A amostragem de taxa fixa está disponível para aplicativos ASP.NET, ASP.NET Core, Java e Python.Fixed-rate sampling is available for ASP.NET, ASP.NET Core, Java and Python applications.

Assim como outras técnicas de amostragem, isso também retém itens relacionados.Like other sampling techniques, this also retains related items. Ele também sincroniza a amostragem do cliente e do servidor para que os itens relacionados sejam retidos-por exemplo, ao examinar um modo de exibição de página na pesquisa, você pode encontrar suas solicitações de servidor relacionadas.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 server requests.

No Metrics Explorer, as taxas como as contagens de solicitações e de exceções são multiplicadas por um fator para compensar a taxa de amostragem, para que elas sejam aproximadamente corretas.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.

Configurando a amostragem de taxa fixa para aplicativos ASP.NETConfiguring fixed-rate sampling for ASP.NET applications

  1. Desabilitar amostragem adaptável: no ApplicationInsights.config , remova ou comente o AdaptiveSamplingTelemetryProcessor nó.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. Habilitar o módulo de amostragem de taxa fixa.Enable the fixed-rate sampling module. Adicione este trecho a 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>
    

    Como alternativa, em vez de definir o parâmetro de amostragem no ApplicationInsights.config arquivo, você pode definir esses valores programaticamente:Alternatively, instead of setting the sampling parameter in the ApplicationInsights.config file, you can programmatically set these values:

    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();
    

    (Saiba mais sobre os processadores de telemetria.)(Learn about telemetry processors.)

Configurando a amostragem de taxa fixa para aplicativos ASP.NET CoreConfiguring fixed-rate sampling for ASP.NET Core applications

  1. Desabilitar amostragem adaptável: as alterações podem ser feitas no ConfigureServices método, usando ApplicationInsightsServiceOptions :Disable adaptive sampling: Changes can be made in the ConfigureServices method, using ApplicationInsightsServiceOptions:

    public void ConfigureServices(IServiceCollection services)
    {
        // ...
    
        var aiOptions = new Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions();
        aiOptions.EnableAdaptiveSampling = false;
        services.AddApplicationInsightsTelemetry(aiOptions);
    
        //...
    }
    
  2. Habilitar o módulo de amostragem de taxa fixa.Enable the fixed-rate sampling module. As alterações podem ser feitas no Configure método, conforme mostrado no trecho de código abaixo:Changes can be made in the Configure method as shown in the below snippet:

    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 = TelemetryConfiguration.Active.TelemetryProcessorChainBuilder;
    
        // Using fixed rate sampling   
        double fixedSamplingPercentage = 10;
        builder.UseSampling(fixedSamplingPercentage);
    
        builder.Build();
    
        // ...
    }
    

Configurando a amostragem de taxa fixa para aplicativos JavaConfiguring fixed-rate sampling for Java applications

Por padrão, nenhuma amostragem está habilitada no Java Agent e no SDK.By default no sampling is enabled in the Java agent and SDK. Atualmente, ele só dá suporte à amostragem de taxa fixa.Currently it only supports fixed rate sampling. A amostragem adaptável não tem suporte em Java.Adaptive sampling is not supported in Java.

Configurando o agente JavaConfiguring Java Agent

  1. Baixe applicationinsights-Agent-3.0.0-Preview. 5. jarDownload applicationinsights-agent-3.0.0-PREVIEW.5.jar

  2. Para habilitar a amostragem, adicione o seguinte ao seu ApplicationInsights.json arquivo:To enable sampling add the following to your ApplicationInsights.json file:

{
  "instrumentationSettings": {
    "preview": {
      "sampling": {
        "fixedRate": {
          "percentage": 10 //this is just an example that shows you how to enable only only 10% of transaction 
        }
      }
    }
  }
}

Configurando o SDK do JavaConfiguring Java SDK

  1. Baixe e configure seu aplicativo Web com o SDK Application insights Javamais recente.Download and configure your web application with the latest Application Insights Java SDK.

  2. Habilite o módulo amostragem de taxa fixa adicionando o seguinte trecho ao ApplicationInsights.xml arquivo: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. Você pode incluir ou excluir tipos específicos de telemetria de amostragem usando as seguintes marcas dentro da Processor marca FixedRateSamplingTelemetryProcessor :You can include or exclude specific types of telemetry from sampling using the following tags inside the Processor tag's FixedRateSamplingTelemetryProcessor:

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

Os tipos de telemetria que podem ser incluídos ou excluídos da amostragem são: Dependency ,, Event ,, Exception PageView Request e Trace .The telemetry types that can be included or excluded from sampling are: Dependency, Event, Exception, PageView, Request, and Trace.

Observação

Para o percentual de amostragem, escolha um percentual que esteja próximo a 100/N, em que N é um inteiro.For the sampling percentage, choose a percentage that is close to 100/N where N is an integer. Atualmente, a amostragem não dá suporte a outros valores.Currently sampling doesn't support other values.

Configurando a amostragem de taxa fixa para aplicativos OpenCensus PythonConfiguring fixed-rate sampling for OpenCensus Python applications

Instrumente seu aplicativo com os mais recentes OpenCensus Azure monitor exportadores.Instrument your application with the latest OpenCensus Azure Monitor exporters.

Observação

A amostragem de taxa fixa não está disponível para o exportador de métricas.Fixed-rate sampling is not available for the metrics exporter. Isso significa que as métricas personalizadas são os únicos tipos de telemetria em que a amostragem não pode ser configurada.This means custom metrics are the only types of telemetry where sampling can NOT be configured. O exportador de métricas enviará toda a telemetria que ele acompanha.The metrics exporter will send all telemetry that it tracks.

Amostragem de taxa fixa para rastreamentoFixed-rate sampling for tracing

Você pode especificar um sampler como parte da configuração do Tracer.You may specify a sampler as part of your Tracer configuration. Se nenhum amostra explícito for fornecido, o ProbabilitySampler será usado por padrão.If no explicit sampler is provided, the ProbabilitySampler will be used by default. O ProbabilitySampler usaria uma taxa de 1/10000 por padrão, o que significa que uma das solicitações de 10000 será enviada para 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 você quiser especificar uma taxa de amostragem, veja abaixo.If you want to specify a sampling rate, see below.

Para especificar a taxa de amostragem, verifique se o Tracer especifica um amostra com uma taxa de amostragem entre 0,0 e 1,0, inclusive.To specify the sampling rate, make sure your Tracer specifies a sampler with a sampling rate between 0.0 and 1.0 inclusive. Uma taxa de amostragem de 1,0 representa 100%, o que significa que todas as suas solicitações serão enviadas como telemetria para 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),
)

Amostragem de taxa fixa para logsFixed-rate sampling for logs

Você pode configurar a amostragem de taxa fixa para AzureLogHandler modificando o logging_sampling_rate argumento opcional.You can configure fixed-rate sampling for AzureLogHandler by modifying the logging_sampling_rate optional argument. Se nenhum argumento for fornecido, uma taxa de amostragem de 1,0 será usada.If no argument is supplied, a sampling rate of 1.0 will be used. Uma taxa de amostragem de 1,0 representa 100%, o que significa que todas as suas solicitações serão enviadas como telemetria para Application Insights.A sampling rate of 1.0 represents 100%, meaning all of your requests will be sent as telemetry to Application Insights.

handler = AzureLogHandler(
    instrumentation_key='00000000-0000-0000-0000-000000000000',
    logging_sampling_rate=0.5,
)

Configurando a amostragem de taxa fixa para páginas da Web com JavaScriptConfiguring fixed-rate sampling for web pages with JavaScript

As páginas da Web baseadas em JavaScript podem ser configuradas para usar Application Insights.JavaScript-based web pages can be configured to use Application Insights. A telemetria é enviada do aplicativo cliente em execução no navegador do usuário, e as páginas podem ser hospedadas de qualquer servidor.Telemetry is sent from the client application running within the user's browser, and the pages can be hosted from any server.

Ao configurar suas páginas da Web baseadas em JavaScript para Application insights, modifique o trecho de código JavaScript que você obtém do portal de Application insights.When you configure your JavaScript-based web pages for Application Insights, modify the JavaScript snippet that you get from the Application Insights portal.

Dica

Em aplicativos ASP.NET com JavaScript incluído, o trecho de código normalmente entra em inglês _Layout.cshtml .In ASP.NET apps with JavaScript included, the snippet typically goes in _Layout.cshtml.

Insira uma linha como samplingPercentage: 10, antes da chave de instrumentação: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>

Para o percentual de amostragem, escolha um percentual que esteja próximo a 100/N, em que N é um inteiro.For the sampling percentage, choose a percentage that is close to 100/N where N is an integer. Atualmente, a amostragem não dá suporte a outros valores.Currently sampling doesn't support other values.

Coordenando a amostragem do lado do servidor e do clienteCoordinating server-side and client-side sampling

O SDK do JavaScript do lado do cliente participa da amostragem de taxa fixa em conjunto com o SDK do lado do servidor.The client-side JavaScript SDK participates in fixed-rate sampling in conjunction with the server-side SDK. As páginas instrumentadas só enviarão telemetria do lado do cliente do mesmo usuário para o qual o SDK do lado do servidor fez sua decisão de incluir na amostragem.The instrumented pages will only send client-side telemetry from the same user for which the server-side SDK made its decision to include in the sampling. Essa lógica foi projetada para manter a integridade das sessões de usuário em aplicativos do lado do cliente e do servidor.This logic is designed to maintain the integrity of user sessions across client- and server-side applications. Como resultado, de qualquer item de telemetria específico no Application Insights você pode encontrar todos os outros itens de telemetria para esse usuário ou sessão e, na pesquisa, você pode navegar entre exibições de página e solicitações relacionadas.As a result, from any particular telemetry item in Application Insights you can find all other telemetry items for this user or session and in Search, you can navigate between related page views and requests.

Se o cliente e a telemetria do lado do servidor não mostrarem exemplos coordenados:If your client and server-side telemetry don't show coordinated samples:

  • Verifique se você habilitou a amostragem no servidor e no cliente.Verify that you enabled sampling both on the server and client.
  • Verifique se você definiu o mesmo percentual de amostragem no cliente e no servidor.Check that you set the same sampling percentage in both the client and server.
  • Certifique-se de que a versão do SDK é 2.0 ou superior.Make sure that the SDK version is 2.0 or above.

amostragem de ingestãoIngestion sampling

A amostragem de ingestão opera no ponto em que a telemetria do seu servidor Web, navegadores e dispositivos atinge o ponto de extremidade de serviço Application Insights.Ingestion sampling operates at the point where the telemetry from your web server, browsers, and devices reaches the Application Insights service endpoint. Embora ela não reduza o tráfego de telemetria enviado do seu aplicativo, reduz a quantidade processada e mantida (e cobrada) pelo 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.

Use esse tipo de amostragem se seu aplicativo geralmente ultrapassar a cota mensal e se você não tiver a opção de usar os tipos de amostragem baseados em 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.

Defina a taxa de amostragem na página Uso e custos estimados:Set the sampling rate in the Usage and estimated costs page:

Na folha visão geral do aplicativo, clique em configurações, cota, exemplos, selecione uma taxa de amostragem e clique em atualizar.

Assim como outros tipos de amostragem, o algoritmo retém os itens relacionados de telemetria.Like other types of sampling, the algorithm retains related telemetry items. Por exemplo, quando você estiver analisando a telemetria na Pesquisa, poderá localizar a solicitação relacionada a uma exceção específica.For example, when you're inspecting the telemetry in Search, you'll be able to find the request related to a particular exception. As contagens de métrica como a taxa de solicitação e a taxa de exceções são mantidas corretamente.Metric counts such as request rate and exception rate are correctly retained.

Os pontos de dados que são descartados pela amostragem não estão disponíveis em nenhum recurso do Application Insights como Exportação Contínua.Data points that are discarded by sampling are not available in any Application Insights feature such as Continuous Export.

A amostragem de ingestão não funciona enquanto a amostragem adaptável ou de taxa fixa está em operação.Ingestion sampling doesn't operate while adaptive or fixed-rate sampling is in operation. A amostragem adaptável é habilitada por padrão quando o SDK do ASP.NET ou o SDK do ASP.NET Core está sendo usado, ou quando Application Insights está habilitado no serviço Azure app ou usando status monitor.Adaptive sampling is enabled by default when the ASP.NET SDK or the ASP.NET Core SDK is being used, or when Application Insights is enabled in Azure App Service or by using Status Monitor. Quando a telemetria é recebida pelo ponto de extremidade de serviço Application Insights, ela examina a telemetria e, se a taxa de amostragem for relatada para menos de 100% (o que indica que a telemetria está sendo amostrada), a taxa de amostragem de ingestão definida será ignorada.When telemetry is received by the Application Insights service endpoint, it examines the telemetry and if the sampling rate is reported to be less than 100% (which indicates that telemetry is being sampled) then the ingestion sampling rate that you set is ignored.

Aviso

O valor mostrado no bloco do portal indica o valor que você definiu para amostragem de ingestão.The value shown on the portal tile indicates the value that you set for ingestion sampling. Ele não representa a taxa de amostragem real se qualquer tipo de amostragem do SDK (amostragem adaptável ou de taxa fixa) estiver em operação.It doesn't represent the actual sampling rate if any sort of SDK sampling (adaptive or fixed-rate sampling) is in operation.

Quando usar a amostragemWhen to use sampling

Em geral, para a maioria dos aplicativos de pequeno e médio porte, você não precisa de amostragem.In general, for most small and medium size applications you don't need sampling. As informações de diagnóstico mais úteis e as estatísticas mais precisas são obtidas por meio da coleta de dados em todas as atividades de usuário.The most useful diagnostic information and most accurate statistics are obtained by collecting data on all your user activities.

As principais vantagens da amostragem são:The main advantages of sampling are:

  • Application Insights serviço descarta ("limitadores") pontos de dados quando seu aplicativo envia uma taxa muito alta de telemetria em um intervalo de tempo curto.Application Insights service drops ("throttles") data points when your app sends a very high rate of telemetry in a short time interval. A amostragem reduz a probabilidade de que seu aplicativo Veja a limitação.Sampling reduces the likelihood that your application will see throttling occur.
  • Permanecer dentro da cota de pontos de dados para o seu tipo de preço.To keep within the quota of data points for your pricing tier.
  • Para reduzir o tráfego de rede da coleção de telemetria.To reduce network traffic from the collection of telemetry.

Que tipo de amostragem eu devo usar?Which type of sampling should I use?

Use a amostragem de ingestão se:Use ingestion sampling if:

  • Você geralmente usa sua cota mensal de telemetria.You often use your monthly quota of telemetry.
  • Você está recebendo muita telemetria dos navegadores da Web dos seus usuários.You're getting too much telemetry from your users' web browsers.
  • Você estiver usando uma versão do SDK que não oferece suporte à amostragem. Por exemplo, o ASP.NET anteriores à 2.You're using a version of the SDK that doesn't support sampling - for example ASP.NET versions earlier than 2.

Use a amostragem de taxa fixa se:Use fixed-rate sampling if:

  • Você deseja obter a amostragem sincronizada entre o cliente e o servidor para que, quando estiver investigando eventos na pesquisa, você possa navegar entre eventos relacionados no cliente e no servidor, como exibições de página e solicitações 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.
  • Você tiver certeza sobre a porcentagem de amostragem apropriada para seu aplicativo.You are confident of the appropriate sampling percentage for your app. Ela deve ser alta o suficiente para obter métricas precisas, mas abaixo da taxa que excede sua cota de preços e limitações.It should be high enough to get accurate metrics, but below the rate that exceeds your pricing quota and the throttling limits.

Use a amostragem adaptável:Use adaptive sampling:

Se as condições para usar outras formas de amostragem não se aplicarem, é recomendável a amostragem adaptável.If the conditions to use the other forms of sampling do not apply, we recommend adaptive sampling. Essa configuração é habilitada por padrão no SDK do ASP.NET/ASP.NET Core.This setting is enabled by default in the ASP.NET/ASP.NET Core SDK. Ele não reduzirá o tráfego até que uma determinada taxa mínima seja atingida, portanto, os sites de baixo uso provavelmente não serão amostrados.It will not reduce traffic until a certain minimum rate is reached, therefore low-use sites will probably not be sampled at all.

Sabendo se a amostragem está em operaçãoKnowing whether sampling is in operation

Para descobrir a taxa de amostragem real, independentemente de onde ela tiver sido aplicada, use uma consulta do Analytics como esta: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 você observar que RetainedPercentage para qualquer tipo é menor que 100, esse tipo de telemetria está sendo amostrado.If you see that RetainedPercentage for any type is less than 100, then that type of telemetry is being sampled.

Importante

Application Insights não faz amostragem de sessão, métricas (incluindo métricas personalizadas) ou tipos de telemetria do contador de desempenho em qualquer uma das técnicas de amostragem.Application Insights does not sample session, metrics (including custom metrics), or performance counter telemetry types in any of the sampling techniques. Esses tipos são sempre excluídos da amostragem, pois uma redução na precisão pode ser altamente indesejável para esses tipos de telemetria.These types are always excluded from sampling as a reduction in precision can be highly undesirable for these telemetry types.

Como funciona a amostragemHow sampling works

O algoritmo de amostragem decide quais itens de telemetria serão descartados e quais serão mantidos.The sampling algorithm decides which telemetry items to drop, and which ones to keep. Isso é verdadeiro se a amostragem é feita pelo SDK ou no serviço de Application Insights.This is true whether sampling is done by the SDK or in the Application Insights service. A decisão de amostragem baseia-se em várias regras que visam preservar todos os pontos de dados inter-relacionados intactos, mantendo uma experiência de diagnóstico no Application Insights que seja acionável e confiável mesmo com um conjunto reduzido de dados.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. Por exemplo, se seu aplicativo tiver uma solicitação com falha incluída em um exemplo, os itens de telemetria adicionais (como exceção e rastreamentos registrados para essa solicitação) serão mantidos.For example, if your app has a failed request included in a sample, the additional telemetry items (such as exception and traces logged for this request) will be retained. A amostragem mantém ou descarta todas elas juntas.Sampling either keeps or drops them all together. Como resultado, quando você examinar os detalhes da solicitação no Application Insights, é possível ver sempre a solicitação junto com seus itens de telemetria associados.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.

A decisão de amostragem se baseia na ID da operação da solicitação, o que significa que todos os itens de telemetria pertencentes a uma determinada operação são preservados ou removidos.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. Para os itens de telemetria que não têm uma ID de operação definida (como itens de telemetria relatados de threads assíncronos sem nenhum contexto HTTP), a amostragem simplesmente captura uma porcentagem de itens de telemetria de cada tipo.For the telemetry items that do not have an operation ID set (such as telemetry items reported from asynchronous threads with no HTTP context) sampling simply captures a percentage of telemetry items of each type.

Ao apresentar a telemetria de volta para você, o serviço Application Insights ajusta as métricas pelo mesmo percentual de amostragem usado no momento da coleta, para compensar os pontos de dados ausentes.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. Portanto, ao examinar a telemetria no Application Insights, os usuários veem aproximações estatisticamente corretas que estão muito próximas aos números reais.Hence, when looking at the telemetry in Application Insights, the users are seeing statistically correct approximations that are very close to the real numbers.

A precisão da aproximação depende principalmente do percentual de amostragem configurado.The accuracy of the approximation largely depends on the configured sampling percentage. Além disso, a precisão aumenta para os aplicativos que lidam com um grande volume de solicitações geralmente semelhantes de uma grande quantidade de usuários.Also, the accuracy increases for applications that handle a large volume of generally similar requests from lots of users. Por outro lado, para aplicativos que não funcionam com uma carga significativa, a amostragem não é necessária, pois esses aplicativos geralmente podem enviar toda a sua telemetria, ao mesmo tempo que permanecem dentro da cota, sem causar perda de dados da limitação.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.

Perguntas frequentesFrequently asked questions

Qual é o comportamento de amostragem padrão nos SDKs ASP.NET e ASP.NET Core?What is the default sampling behavior in the ASP.NET and ASP.NET Core SDKs?

  • Se você estiver usando uma das versões mais recentes do SDK acima, a amostragem adaptável será habilitada por padrão com cinco itens de telemetria por segundo.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. Há dois AdaptiveSamplingTelemetryProcessor nós adicionados por padrão e um inclui o tipo de Event amostragem, enquanto o outro exclui o Event tipo de amostragem.There are two AdaptiveSamplingTelemetryProcessor nodes added by default, and one includes the Event type in sampling, while the other excludes the Event type from sampling. Essa configuração significa que o SDK tentará limitar os itens de telemetria a cinco itens de telemetria de Event tipos e cinco itens de telemetria de todos os outros tipos combinados, garantindo assim que Events sejam amostrados separadamente de outros tipos de 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. Normalmente, os eventos são usados para telemetria de negócios e provavelmente não devem ser afetados por volumes de telemetria de diagnóstico.Events are typically used for business telemetry, and most likely should not be affected by diagnostic telemetry volumes.

    O seguinte mostra o ApplicationInsights.config arquivo padrão gerado.The following shows the default ApplicationInsights.config file generated. No ASP.NET Core, o mesmo comportamento padrão é habilitado no código.In ASP.NET Core, the same default behavior is enabled in code. Use os exemplos na seção anterior desta página para alterar esse comportamento padrão.Use the examples in the earlier section of this page 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>
    

A telemetria pode ser amostrada mais de uma vez?Can telemetry be sampled more than once?

  • Não.No. SamplingTelemetryProcessors ignorar itens de considerações de amostragem se o item já estiver sendo amostrado.SamplingTelemetryProcessors ignore items from sampling considerations if the item is already sampled. O mesmo também é verdadeiro para a amostragem de ingestão, o que não aplicará amostragem a esses itens já amostrados no próprio SDK.The same is true for ingestion sampling as well, which won't apply sampling to those items already sampled in the SDK itself.

Por que a amostragem não se trata apenas de “coletar X% de cada tipo de telemetria”?Why isn't sampling a simple "collect X percent of each telemetry type"?

  • Embora essa abordagem de amostragem forneça um alto nível de precisão em aproximaçãos de métricas, ela quebraria a capacidade de correlacionar os dados de diagnóstico por usuário, sessão e solicitação, que é essencial para o diagnóstico.While this sampling approach would provide with a high level of precision in metric approximations, it would break the ability to correlate diagnostic data per user, session, and request, which is critical for diagnostics. Portanto, a amostragem funciona melhor com políticas como "coletar todos os itens de telemetria para X% dos usuários do aplicativo" ou "coletar toda a telemetria para X% das solicitações do aplicativo".Therefore, sampling works better with policies like "collect all telemetry items for X percent of app users", or "collect all telemetry for X percent of app requests". Para os itens de telemetria não associados às solicitações (como processamento assíncrono em segundo plano), o fallback é para "coletar X por cento de todos os itens de cada tipo de 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."

O percentual de amostragem pode ser alterado com o tempo?Can the sampling percentage change over time?

  • Sim, a amostragem adaptável altera gradualmente a porcentagem de amostragem com base no volume atualmente observado da telemetria.Yes, adaptive sampling gradually changes the sampling percentage, based on the currently observed volume of the telemetry.

Se eu usar a amostragem de taxa fixa, como saber qual percentual de amostragem funcionará melhor para o meu aplicativo?If I use fixed-rate sampling, how do I know which sampling percentage will work the best for my app?

  • Uma maneira é iniciar com a amostragem adaptável, descobrir qual taxa se adequa (consulte a pergunta anterior) e, em seguida, alternar para a amostragem de taxa fixa usando essa taxa.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.

    Caso contrário, é preciso adivinhar.Otherwise, you have to guess. Analise o seu uso atual da telemetria na em Application Insights, observe qualquer limitação que esteja ocorrendo e estime o volume da telemetria coletada.Analyze your current telemetry usage in Application Insights, observe any throttling that is occurring, and estimate the volume of the collected telemetry. Essas três entradas, junto com seu tipo de preço selecionado, sugere o quanto você talvez queira reduzir o volume da telemetria coletada.These three inputs, together with your selected pricing tier, suggest how much you might want to reduce the volume of the collected telemetry. No entanto, um aumento no número de usuários ou alguma outra mudança no volume de telemetria pode invalidar sua estimativa.However, an increase in the number of your users or some other shift in the volume of telemetry might invalidate your estimate.

O que acontecerá se eu configurar o percentual de amostragem como muito baixo?What happens if I configure the sampling percentage to be too low?

  • Porcentagens de amostragem excessivamente baixas causam uma amostragem muito agressiva e reduzem a precisão das aproximações quando Application Insights tenta compensar a visualização dos dados para a redução do volume de dados.Excessively low sampling percentages cause over-aggressive sampling, and reduce the accuracy of the approximations when Application Insights attempts to compensate the visualization of the data for the data volume reduction. Além disso, sua experiência de diagnóstico pode ser afetada negativamente, pois algumas das solicitações com falha ou lentidão podem ser amostradas.Also your diagnostic experience might be negatively impacted, as some of the infrequently failing or slow requests may be sampled out.

O que acontecerá se eu configurar o percentual de amostragem como muito alto?What happens if I configure the sampling percentage to be too high?

  • Configurar um percentual de amostragem muito alto (não tão agressivo) resulta em uma redução insuficiente no volume da telemetria coletada.Configuring too high a sampling percentage (not aggressive enough) results in an insufficient reduction in the volume of the collected telemetry. Ainda pode ocorrer perda de dados de telemetria relacionada à limitação, e o custo do uso do Application Insights pode ser maior do que o planejado devido a encargos excedentes.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.

Em quais plataformas posso usar a amostragem?On what platforms can I use sampling?

  • A amostragem de ingestão pode ocorrer automaticamente para qualquer telemetria acima de um determinado volume, se o SDK não estiver executando a amostragem.Ingestion sampling can occur automatically for any telemetry above a certain volume, if the SDK is not performing sampling. Essa configuração funcionaria, por exemplo, se você estiver usando uma versão mais antiga do SDK do ASP.NET ou do SDK do Java.This configuration would work, for example, if you are using an older version of the ASP.NET SDK or Java SDK.
  • Se você estiver usando os SDKs atuais do ASP.NET ou do ASP.NET Core (hospedados no Azure ou em seu próprio servidor), obterá amostragem adaptável por padrão, mas você pode alternar para a taxa fixa, conforme descrito acima.If you're using the current ASP.NET or ASP.NET Core SDKs (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. Com a amostragem de taxa fixa, o SDK do navegador sincroniza automaticamente os eventos relacionados ao exemplo.With fixed-rate sampling, the browser SDK automatically synchronizes to sample related events.
  • Se você estiver usando o agente Java atual, poderá configurar ApplicationInsights.json (para o SDK do Java, configurar ApplicationInsights.xml ) para ativar a amostragem de taxa fixa.If you're using the current Java agent, you can configure ApplicationInsights.json (for Java SDK, configure ApplicationInsights.xml) to turn on fixed-rate sampling. A amostragem é desativada por padrão.Sampling is turned off by default. Com a amostragem de taxa fixa, o SDK do navegador e o servidor são sincronizados automaticamente com os eventos relacionados de exemplo.With fixed-rate sampling, the browser SDK and the server automatically synchronize to sample related events.

Há alguns eventos raros que sempre desejo ver. Como posso fazê-los passar pelo módulo de amostragem?There are certain rare events I always want to see. How can I get them past the sampling module?

  • A melhor maneira de conseguir isso é escrever um personalizada telemetryinitializerpersonalizado, que define o SamplingPercentage para 100 no item de telemetria que você deseja reter, conforme mostrado abaixo.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. À medida que inicializadores são garantidos para serem executados antes dos processadores de telemetria (incluindo amostragem), isso garante que todas as técnicas de amostragem ignorem esse item de quaisquer considerações de amostragem.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. Inicializadores de telemetria personalizados estão disponíveis no SDK do ASP.NET, no SDK do ASP.NET Core, no SDK do JavaScript e no SDK do Java.Custom telemetry initializers are available in the ASP.NET SDK, the ASP.NET Core SDK, the JavaScript SDK, and the Java SDK. Por exemplo, você pode configurar um inicializador de telemetria usando o SDK do ASP.NET:For example, you can configure a telemetry initializer using the ASP.NET SDK:

    public class MyTelemetryInitializer : ITelemetryInitializer
    {
        public void Initialize(ITelemetry telemetry)
        {
            if(somecondition)
            {
                ((ISupportSampling)telemetry).SamplingPercentage = 100;
            }
        }
    }
    

Versões mais antigas do SDKOlder SDK versions

A amostragem adaptável está disponível para o SDK do Application Insights para ASP.NET v 2.0.0-Beta3 e posterior, Microsoft. ApplicationInsights. AspNetCore SDK v 2.2.0-beta1 e posterior e está habilitada por padrão.Adaptive sampling is available for the Application Insights SDK for ASP.NET v2.0.0-beta3 and later, Microsoft.ApplicationInsights.AspNetCore SDK v2.2.0-beta1 and later, and is enabled by default.

A amostragem de taxa fixa é um recurso do SDK em versões do ASP.NET do 2.0.0 e do SDK do Java versão 2.0.1 e em diante.Fixed-rate sampling is a feature of the SDK in ASP.NET versions from 2.0.0 and Java SDK version 2.0.1 and onwards.

Antes do v 2.5.0-beta2 do SDK do ASP.NET e v 2.2.0-Beta3 do SDK ASP.NET Core, a decisão de amostragem foi baseada no hash da ID de usuário para aplicativos que definem "user" (ou seja, a maioria dos aplicativos Web típicos).Prior to v2.5.0-beta2 of the ASP.NET SDK, and v2.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). Para os tipos de aplicativos que não definiram os usuários (como serviços Web), a decisão de amostragem foi baseada na ID da operação da solicitação.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. As versões recentes dos SDKs ASP.NET e ASP.NET Core usam a ID da operação para a decisão de amostragem.Recent versions of the ASP.NET and ASP.NET Core SDKs use the operation ID for the sampling decision.

Próximas etapasNext steps