Amostragem no Application Insights

A amostragem é uma funcionalidade do Application Insights. É a forma recomendada de reduzir o tráfego telemétrico, os custos de dados e os custos de armazenamento, preservando ao mesmo tempo uma análise estatisticamente correta dos dados da aplicação. A amostragem também o ajuda a evitar a limitação da telemetria do Application Insights. O filtro de amostragem seleciona itens relacionados, para que possa navegar entre itens quando estiver a realizar investigações de diagnóstico.

Quando as contagens de métricas são apresentadas no portal, são renormalizadas para ter em conta a amostragem. Ao fazê-lo, minimiza qualquer efeito nas estatísticas.

Resumo breve

  • Existem três tipos diferentes de amostragem: amostragem adaptável, amostragem de taxa fixa e amostragem de ingestão.
  • A amostragem adaptável está ativada por predefinição em todas as versões mais recentes do Application Insights ASP.NET e ASP.NET Core Software Development Kits (SDKs). Também é utilizado por Funções do Azure.
  • A amostragem de taxa fixa está disponível em versões recentes dos SDKs do Application Insights para ASP.NET, ASP.NET Core, Java (tanto o agente como o SDK), JavaScript e Python.
  • Em Java, as substituições de amostragem estão disponíveis e são úteis quando precisa de aplicar diferentes taxas de amostragem a dependências, pedidos e verificações de estado de funcionamento selecionadas. Utilize substituições de amostragem para otimizar algumas dependências ruidosas e, por exemplo, todos os erros importantes são mantidos a 100%. Este comportamento é uma forma de amostragem fixa que lhe dá um nível de controlo detalhado sobre a telemetria.
  • A amostragem de ingestão funciona no ponto final de serviço do Application Insights. Só se aplica quando não existe outra amostragem em vigor. Se o SDK provar a telemetria, a amostragem de ingestão será desativada.
  • Para aplicações Web, se registar eventos personalizados e precisar de garantir que um conjunto de eventos é retido ou eliminado em conjunto, os eventos têm de ter o mesmo OperationId valor.
  • Se escrever consultas de Análise, deve ter em conta a amostragem. Em particular, em vez de simplesmente contar registos, deve utilizar 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 ativada ou não.

A tabela seguinte resume os tipos de amostragem disponíveis para cada SDK e tipo de aplicação:

Application Insights SDK Amostragem adaptável suportada Amostragem de taxa fixa suportada Amostragem de ingestão suportada
ASP.NET Sim (ativado por predefinição) Sim Apenas se nenhuma outra amostragem estiver em vigor
ASP.NET Core Sim (ativado por predefinição) Sim Apenas se nenhuma outra amostragem estiver em vigor
Funções do Azure Sim (ativado por predefinição) No Apenas se nenhuma outra amostragem estiver em vigor
Java No Sim Apenas se nenhuma outra amostragem estiver em vigor
JavaScript No Sim Apenas se nenhuma outra amostragem estiver em vigor
Node.JS No Sim Apenas se nenhuma outra amostragem estiver em vigor
Python No Sim Apenas se nenhuma outra amostragem estiver em vigor
Todos os outros No No Sim

Nota

As informações na maior parte desta página aplicam-se às versões atuais dos SDKs do Application Insights. Para obter informações sobre versões mais antigas dos SDKs, consulte a secção abaixo.

Quando utilizar a amostragem

Em geral, para a maioria das aplicações de tamanho pequeno e médio, não precisa de amostragem. As informações de diagnóstico mais úteis e as estatísticas mais precisas são obtidas através da recolha de dados em todas as suas atividades de utilizador.

As principais vantagens da amostragem são:

  • O serviço Application Insights deixa cair pontos de dados ("limitações") quando a sua aplicação envia uma taxa de telemetria muito elevada num curto intervalo de tempo. A amostragem reduz a probabilidade de a aplicação ver a limitação ocorrer.
  • Para manter dentro da quota de pontos de dados para o escalão de preço.
  • Para reduzir o tráfego de rede da coleção de telemetria.

Como funciona a amostragem

O algoritmo de amostragem decide quais os itens de telemetria a remover e quais os que deve manter. Isto é verdade se a amostragem é feita pelo SDK ou no serviço Application Insights. A decisão de amostragem baseia-se em várias regras que visam preservar todos os pontos de dados interligados intactos, mantendo uma experiência de diagnóstico no Application Insights acionável e fiável mesmo com um conjunto de dados reduzido. Por exemplo, se a sua aplicação tiver um pedido falhado incluído num exemplo, os itens de telemetria adicionais (como exceção e rastreios registados para este pedido) serão retidos. A amostragem mantém ou deixa-as juntas. Como resultado, quando analisa os detalhes do pedido no Application Insights, pode sempre ver o pedido juntamente com os itens de telemetria associados.

A decisão de amostragem baseia-se no ID de operação do pedido, o que significa que todos os itens de telemetria pertencentes a uma determinada operação são preservados ou removidos. Para os itens de telemetria que não têm um conjunto de ID de operação (como itens de telemetria comunicados a partir de threads assíncronos sem contexto HTTP), a amostragem captura simplesmente uma percentagem de itens de telemetria de cada tipo.

Ao apresentar telemetria novamente, o serviço Application Insights ajusta as métricas pela mesma percentagem de amostragem utilizada no momento da recolha, para compensar os pontos de dados em falta. Assim, ao analisar a telemetria no Application Insights, os utilizadores estão a ver aproximações estatisticamente corretas que estão muito próximas dos números reais.

A precisão da aproximação depende em grande parte da percentagem de amostragem configurada. Além disso, a precisão aumenta para as aplicações que lidam com um grande volume de pedidos geralmente semelhantes de muitos utilizadores. Por outro lado, para aplicações que não funcionam com uma carga significativa, a amostragem não é necessária, uma vez que estas aplicações podem normalmente enviar toda a telemetria enquanto permanecem dentro da quota, sem causar perda de dados devido à limitação.

Tipos de amostragem

Existem três métodos de amostragem diferentes:

  • A amostragem adaptável ajusta automaticamente o volume de telemetria enviado a partir do SDK na sua aplicação ASP.NET/ASP.NET Core e a partir de Funções do Azure. Esta é a amostragem predefinida quando utiliza o SDK ASP.NET ou ASP.NET Core. Atualmente, a amostragem adaptável só está disponível para ASP.NET telemetria do lado do servidor e para Funções do Azure.

  • A amostragem de taxa fixa reduz o volume de telemetria enviada do seu servidor ASP.NET ou ASP.NET Core ou Java e dos browsers dos seus utilizadores. Definiu a taxa. O cliente e o servidor sincronizarão a amostragem para que, em Pesquisa, possa navegar entre as vistas de página e os pedidos relacionados.

  • A amostragem de ingestão ocorre no ponto final de serviço do Application Insights. Elimina parte da telemetria que chega da sua aplicação, a uma taxa de amostragem que definiu. Não reduz o tráfego de telemetria enviado da sua aplicação, mas ajuda-o a manter dentro da quota mensal. A principal vantagem da amostragem de ingestão é que pode definir a taxa de amostragem sem reimplementar a sua aplicação. A amostragem de ingestão funciona uniformemente para todos os servidores e clientes, mas não se aplica quando existem outros tipos de amostragem em funcionamento.

Importante

Se os métodos de amostragem de taxa adaptável ou fixa estiverem ativados para um tipo de telemetria, a amostragem de ingestão será desativada para essa telemetria. No entanto, os tipos de telemetria excluídos da amostragem ao nível do SDK continuarão sujeitos à amostragem de ingestão à taxa definida no portal.

Amostragem adaptável

A amostragem adaptável afeta o volume de telemetria enviada da sua aplicação de servidor Web para o ponto final de serviço do Application Insights.

Dica

A amostragem adaptável é ativada por predefinição quando utiliza o SDK ASP.NET ou o SDK ASP.NET Core e também está ativado por predefinição para Funções do Azure.

O volume é ajustado automaticamente para manter dentro de uma taxa máxima de tráfego especificada e é controlado através da definição MaxTelemetryItemsPerSecond. Se a aplicação produzir uma quantidade baixa de telemetria, como quando depuração ou devido a baixa utilização, os itens não serão removidos pelo processador de amostragem, desde que o volume esteja abaixo MaxTelemetryItemsPerSecondde . À medida que o volume de telemetria aumenta, a taxa de amostragem é ajustada de modo a alcançar o volume de destino. O ajuste é recalculado em intervalos regulares e baseia-se numa média móvel da taxa de transmissão de saída.

Para alcançar o volume de destino, parte da telemetria gerada é eliminada. Mas, tal como outros tipos de amostragem, o algoritmo retém itens de telemetria relacionados. Por exemplo, quando estiver a inspecionar a telemetria na Pesquisa, poderá encontrar o pedido relacionado com uma exceção específica.

As contagens de métricas, como a taxa de pedidos e a taxa de exceção, são ajustadas para compensar a taxa de amostragem, para que mostrem valores aproximados no Explorador de Métricas.

Configurar a amostragem adaptável para aplicações ASP.NET

Nota

Esta secção aplica-se a aplicações ASP.NET e não a aplicações ASP.NET Core. Saiba mais sobre como configurar a amostragem adaptável para ASP.NET Core aplicações mais adiante neste documento.

No ApplicationInsights.config, pode ajustar vários parâmetros no AdaptiveSamplingTelemetryProcessor nó. Os valores apresentados são os valores predefinidos:

  • <MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>

    A taxa de destino das operações lógicas que o algoritmo adaptável pretende recolher em cada anfitrião do servidor. Se a aplicação Web for executada em muitos anfitriões, reduza este valor de modo a permanecer dentro da taxa de tráfego de destino no portal do Application Insights.

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

    O intervalo no qual a taxa atual de telemetria é reavaliada. A avaliação é realizada como uma média móvel. Poderá querer encurtar este intervalo se a telemetria for responsável por picos repentinos.

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

    Quando o valor da percentagem de amostragem é alterado, este valor determina quanto tempo depois é permitido reduzir novamente a percentagem de amostragem para capturar menos dados?

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

    Quando o valor da percentagem de amostragem é alterado, este valor determina quanto tempo depois é permitido aumentar a percentagem de amostragem novamente para capturar mais dados?

  • <MinSamplingPercentage>0.1</MinSamplingPercentage>

    À medida que a percentagem de amostragem varia, qual é o valor mínimo que temos permissão para definir?

  • <MaxSamplingPercentage>100.0</MaxSamplingPercentage>

    À medida que a percentagem de amostragem varia, qual é o valor máximo que temos permissão para definir?

  • <MovingAverageRatio>0.25</MovingAverageRatio>

    No cálculo da média móvel, este valor especifica o peso que deve ser atribuído ao valor mais recente. Utilize um valor igual ou inferior a 1. Os valores mais pequenos tornam o algoritmo menos reativo a alterações súbitas.

  • <InitialSamplingPercentage>100</InitialSamplingPercentage>

    A quantidade de telemetria a amostrar quando a aplicação for iniciada. Não reduza este valor enquanto estiver a depurar.

  • <ExcludedTypes>type;type</ExcludedTypes>

    Uma lista delimitada por ponto e vírgula de tipos que não quer que estejam sujeitos a amostragem. Os tipos reconhecidos são: Dependency, , EventException, PageView, , . TraceRequest Toda a telemetria dos tipos especificados é transmitida; os tipos que não são especificados serão amostrados.

  • <IncludedTypes>type;type</IncludedTypes>

    Uma lista delimitada por ponto e vírgula de tipos que pretende submeter à amostragem. Os tipos reconhecidos são: Dependency, , EventException, PageView, , . TraceRequest Os tipos especificados serão amostrados; toda a telemetria dos outros tipos será sempre transmitida.

Para desativar a amostragem adaptável, remova os AdaptiveSamplingTelemetryProcessor nós de ApplicationInsights.config.

Alternativa: Configurar a amostragem adaptável no código

Em vez de definir o parâmetro de amostragem no .config ficheiro, pode definir programaticamente estes valores.

  1. Remova todos os AdaptiveSamplingTelemetryProcessor nós do .config ficheiro.

  2. Utilize o fragmento seguinte para configurar a amostragem adaptável:

    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 processadores de telemetria.)

Também pode ajustar a taxa de amostragem de cada tipo de telemetria individualmente ou pode mesmo excluir determinados tipos de amostragem:

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

Configurar a amostragem adaptável para aplicações ASP.NET Core

ASP.NET Core aplicações podem ser configuradas em código ou através do appsettings.json ficheiro. Para obter mais informações, veja Configuração no ASP.NET Core.

A amostragem adaptável está ativada por predefinição para todas as aplicações ASP.NET Core. Pode desativar ou personalizar o comportamento de amostragem.

Desativar a amostragem adaptável

A funcionalidade de amostragem predefinida pode ser desativada ao adicionar o serviço Application Insights.

Adicione ApplicationInsightsServiceOptions depois do WebApplication.CreateBuilder() método no Program.cs ficheiro:

var builder = WebApplication.CreateBuilder(args);

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

var app = builder.Build();

O código acima irá desativar a amostragem adaptável. Siga os passos abaixo para adicionar amostragem com mais opções de personalização.

Configurar definições de amostragem

Utilize métodos de extensão de, conforme mostrado abaixo, para personalizar o comportamento de TelemetryProcessorChainBuilder amostragem.

Importante

Se utilizar este método para configurar a amostragem, certifique-se de que define a aiOptions.EnableAdaptiveSampling propriedade como ao false chamar AddApplicationInsightsTelemetry(). Depois de efetuar esta alteração, terá de seguir as instruções no bloco de código abaixo exatamente para reativar a amostragem adaptável com as suas personalizações implementadas. Se não o fizer, pode resultar em ingestão excessiva de dados. Teste sempre após alterar as definições de amostragem e defina um limite de dados diário adequado para ajudar a controlar os custos.

using Microsoft.ApplicationInsights.AspNetCore.Extensions;
using Microsoft.ApplicationInsights.Extensibility;

var builder = WebApplication.CreateBuilder(args);

builder.Services.Configure<TelemetryConfiguration>(telemetryConfiguration =>
{
    var builder = telemetryConfiguration.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:
    // configuration.DefaultTelemetrySink.TelemetryProcessorChainBuilder.UseAdaptiveSampling(maxTelemetryItemsPerSecond:5, excludedTypes: "Dependency");

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

});

builder.Services.AddApplicationInsightsTelemetry(new ApplicationInsightsServiceOptions
{
    EnableAdaptiveSampling = false,
});

var app = builder.Build();

Configurar a amostragem adaptável para Funções do Azure

Siga as instruções desta página para configurar a amostragem adaptável para aplicações em execução no Funções do Azure.

Amostragem de taxa fixa

A amostragem de taxa fixa reduz o tráfego enviado a partir do servidor Web e dos browsers. Ao contrário da amostragem adaptável, reduz a telemetria a uma taxa fixa decidida por si. A amostragem de taxa fixa está disponível para aplicações ASP.NET, ASP.NET Core, Java e Python.

Tal como outras técnicas, também retém itens relacionados. Também sincroniza a amostragem do cliente e do servidor para que os itens relacionados sejam retidos. Por exemplo, quando olha para uma vista de página na Pesquisa, pode encontrar os respetivos pedidos de servidor relacionados.

No Explorador de Métricas, as taxas, como as contagens de pedidos e exceções, são multiplicadas por um fator para compensar a taxa de amostragem, para que sejam o mais precisas possível.

Configurar a amostragem de taxa fixa para aplicações ASP.NET

  1. Desativar a amostragem adaptável: no ApplicationInsights.config, remova ou comente o AdaptiveSamplingTelemetryProcessor nó.

    <TelemetryProcessors>
        <!-- Disabled adaptive sampling:
        <Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.AdaptiveSamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel">
            <MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>
        </Add>
        -->
    
  2. Ative o módulo de amostragem de taxa fixa. Adicione este fragmento a 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>
    

    Em alternativa, em vez de definir o parâmetro de amostragem no ApplicationInsights.config ficheiro, pode definir programaticamente estes valores:

    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 processadores de telemetria.)

Configurar a amostragem de taxa fixa para aplicações ASP.NET Core

  1. Desativar a amostragem adaptável

    As alterações podem ser efetuadas após o WebApplication.CreateBuilder() método , com ApplicationInsightsServiceOptions:

    var builder = WebApplication.CreateBuilder(args);
    
    var aiOptions = new Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions();
    aiOptions.EnableAdaptiveSampling = false;
    builder.Services.AddApplicationInsightsTelemetry(aiOptions);
    
    var app = builder.Build();
    
  2. Ativar o módulo de amostragem de taxa fixa

    As alterações podem ser efetuadas após o WebApplication.CreateBuilder() método :

    var builder = WebApplication.CreateBuilder(args);
    
    builder.Services.Configure<TelemetryConfiguration>(telemetryConfiguration =>
    {
        var builder = telemetryConfiguration.DefaultTelemetrySink.TelemetryProcessorChainBuilder;
    
        // Using fixed rate sampling
        double fixedSamplingPercentage = 10;
        builder.UseSampling(fixedSamplingPercentage);
    });
    
    builder.Services.AddApplicationInsightsTelemetry(new ApplicationInsightsServiceOptions
    {
        EnableAdaptiveSampling = false,
    });
    
    var app = builder.Build(); 
    

Configurar substituições de amostragem e amostragem de taxa fixa para aplicações Java

Por predefinição, não está ativada nenhuma amostragem no SDK e na instrumentação automática de Java. Atualmente, a instrumentação automática java, as substituições de amostragem e a amostragem de taxa fixa são suportadas. A amostragem adaptável não é suportada em Java.

Configurar a instrumentação automática de Java

  • Para configurar substituições de amostragem que substituem a taxa de amostragem predefinida e aplicam diferentes taxas de amostragem a pedidos e dependências selecionados, utilize o guia de substituição de amostragem.
  • Para configurar a amostragem de taxa fixa que se aplica a toda a telemetria, utilize o guia de amostragem de taxa fixa.

Nota

Para a percentagem de amostragem, escolha uma percentagem próxima de 100/N em que N é um número inteiro. Atualmente, a amostragem não suporta outros valores.

Configurar a amostragem de taxa fixa para aplicações Python do OpenCensus

Instrumente a sua aplicação com os mais recentes exportadores do Azure Monitor do OpenCensus.

Nota

A amostragem de taxa fixa não está disponível para o exportador de métricas. Isto significa que as métricas personalizadas são os únicos tipos de telemetria em que a amostragem NÃO pode ser configurada. O exportador de métricas enviará toda a telemetria que controla.

Amostragem de taxa fixa para rastreio

Pode especificar um sampler como parte da configuração do Tracer. Se não for fornecido nenhum sampler explícito, o ProbabilitySampler será utilizado por predefinição. O ProbabilitySampler utilizaria uma taxa de 1/10000 por predefinição, o que significa que um em cada 10.000 pedidos será enviado para o Application Insights. Se quiser especificar uma taxa de amostragem, veja abaixo.

Para especificar a taxa de amostragem, certifique-se de que Tracer especifica um sampler com uma taxa de amostragem entre 0,0 e 1,0 inclusive. Uma taxa de amostragem de 1,0 representa 100%, o que significa que todos os seus pedidos serão enviados como telemetria para o Application Insights.

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

Amostragem de taxa fixa para registos

Pode configurar a amostragem de taxa fixa para AzureLogHandler ao modificar o logging_sampling_rate argumento opcional. Se não for fornecido nenhum argumento, será utilizada uma taxa de amostragem de 1,0. Uma taxa de amostragem de 1,0 representa 100%, o que significa que todos os seus pedidos serão enviados como telemetria para o Application Insights.

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

Configurar a amostragem de taxa fixa para páginas Web com JavaScript

As páginas Web baseadas em JavaScript podem ser configuradas para utilizar o Application Insights. A telemetria é enviada a partir da aplicação cliente em execução no browser do utilizador e as páginas podem ser alojadas a partir de qualquer servidor.

Quando configurar as suas páginas Web baseadas em JavaScript para o Application Insights, modifique o fragmento JavaScript que obtém a partir do portal do Application Insights.

Dica

No ASP.NET aplicações com JavaScript incluído, o fragmento normalmente é apresentado em _Layout.cshtml.

Insira uma linha como samplingPercentage: 10, antes da chave de instrumentação:

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

Nota

A 31 de março de 2025, o suporte da ingestão de chaves de instrumentação terminará. A ingestão de chave de instrumentação continuará a funcionar, mas deixaremos de fornecer atualizações ou suporte para a funcionalidade. Transição para cadeias de ligação para tirar partido de novas capacidades.

Para a percentagem de amostragem, escolha uma percentagem próxima de 100/N em que N é um número inteiro. Atualmente, a amostragem não suporta outros valores.

Coordenar a amostragem do lado do servidor e do lado do cliente

O SDK JavaScript do lado do cliente participa na amostragem de taxa fixa com o SDK do lado do servidor. As páginas instrumentadas só irão enviar telemetria do lado do cliente do mesmo utilizador para o qual o SDK do lado do servidor tomou a decisão de incluir na amostragem. Esta lógica foi concebida para manter a integridade das sessões de utilizador em aplicações do lado do cliente e do servidor. Como resultado, a partir de qualquer item de telemetria específico no Application Insights, pode encontrar todos os outros itens de telemetria para este utilizador ou sessão e, em Pesquisa, pode navegar entre as vistas de página e os pedidos relacionados.

Se a telemetria do cliente e do lado do servidor não mostrarem exemplos coordenados:

  • Verifique se ativou a amostragem no servidor e no cliente.
  • Verifique se definiu a mesma percentagem de amostragem no cliente e no servidor.
  • Certifique-se de que a versão do SDK é 2.0 ou superior.

Amostragem de ingestão

A amostragem de ingestão funciona no ponto em que a telemetria do servidor Web, browsers e dispositivos atinge o ponto final de serviço do Application Insights. Embora não reduza o tráfego telemétrico enviado da sua aplicação, reduz a quantidade processada e retida (e cobrada) pelo Application Insights.

Utilize este tipo de amostragem se a sua aplicação ultrapassar frequentemente a quota mensal e não tiver a opção de utilizar nenhum dos tipos de amostragem baseados em SDK.

Defina a taxa de amostragem na página Utilização e custos estimados:

No painel Descrição Geral da aplicação, clique em Definições, Quota, Exemplos, selecione uma taxa de amostragem e clique em Atualizar.

À semelhança de outros tipos de amostragem, o algoritmo retém itens de telemetria relacionados. Por exemplo, quando estiver a inspecionar a telemetria na Pesquisa, poderá encontrar o pedido relacionado com uma exceção específica. As contagens de métricas, como a taxa de pedidos e a taxa de exceções, são mantidas corretamente.

Os pontos de dados que são eliminados por amostragem não estão disponíveis em nenhuma funcionalidade do Application Insights, como Exportação Contínua.

A amostragem de ingestão não funciona enquanto a amostragem adaptável ou de taxa fixa estiver em funcionamento. A amostragem adaptável é ativada por predefinição quando o SDK de ASP.NET ou o SDK de ASP.NET Core está a ser utilizado ou quando o Application Insights está ativado no Serviço de Aplicações do Azure ou através do Agente do Application Insights. Quando a telemetria é recebida pelo ponto final de serviço do Application Insights, examina a telemetria e, se a taxa de amostragem for reportada como inferior a 100% (o que indica que a telemetria está a ser amostrada), a taxa de amostragem de ingestão que definiu é ignorada.

Aviso

O valor apresentado no mosaico do portal indica o valor que definiu para a amostragem de ingestão. Não representa a taxa de amostragem real se algum tipo de amostragem de SDK (amostragem adaptável ou de taxa fixa) estiver em funcionamento.

Que tipo de amostragem devo utilizar?

Utilize a amostragem de ingestão se:

  • Utiliza frequentemente a quota mensal de telemetria.
  • Está a receber demasiada telemetria dos browsers dos seus utilizadores.
  • Está a utilizar uma versão do SDK que não suporta a amostragem, por exemplo, ASP.NET versões anteriores a 2.

Utilize a amostragem de taxa fixa se:

  • Quer uma amostragem sincronizada entre o cliente e o servidor para que, quando estiver a investigar eventos na Pesquisa, possa navegar entre eventos relacionados no cliente e no servidor, como vistas de página e pedidos HTTP.
  • Está confiante na percentagem de amostragem adequada para a sua aplicação. Deve ser alto o suficiente para obter métricas precisas, mas abaixo da taxa que excede a quota de preços e os limites de limitação.

Utilizar amostragem adaptável:

Se as condições para utilizar as outras formas de amostragem não se aplicarem, recomendamos a amostragem adaptável. Esta definição está ativada por predefinição no SDK de ASP.NET/ASP.NET Core. Não reduzirá o tráfego até que seja atingida uma determinada taxa mínima, pelo que os sites de baixa utilização provavelmente não serão amostrados.

Saber se a amostragem está em funcionamento

Para detetar a taxa de amostragem real independentemente do local onde foi aplicada, utilize uma consulta do Analytics como esta:

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

Se vir que RetainedPercentage para qualquer tipo é inferior a 100, esse tipo de telemetria estará em amostragem.

Importante

O Application Insights não realiza a amostragem da sessão, das métricas (incluindo métricas personalizadas) ou dos tipos de telemetria do contador de desempenho em nenhuma das técnicas de amostragem. Estes tipos são sempre excluídos da amostragem, uma vez que uma redução da precisão pode ser altamente indesejável para estes tipos de telemetria.

Precisão da consulta de registo e taxas de exemplo elevadas

À medida que a aplicação aumenta verticalmente, pode estar a processar dezenas, centenas ou milhares de itens de trabalho por segundo. Registar um evento para cada um deles não é recurso nem rentável. O Application Insights utiliza a amostragem para se adaptar ao volume de telemetria crescente de forma flexível e para controlar a utilização e o custo dos recursos.

Aviso

A integridade da vista ponto a ponto de uma operação distribuída pode ser afetada se alguma aplicação na operação distribuída tiver ativado a amostragem. As diferentes decisões de amostragem são tomadas por cada aplicação numa operação distribuída, pelo que a telemetria de um ID da Operação pode ser guardada por uma aplicação, enquanto outras aplicações podem decidir não amostrar a telemetria para esse mesmo ID de Operação.

À medida que as taxas de amostragem aumentam a precisão das consultas baseadas em registos diminuem e são normalmente inflacionadas. Isto só afeta a precisão das consultas baseadas em registos quando a amostragem é ativada e as taxas de exemplo estão num intervalo mais elevado (~ 60%). O impacto varia consoante os tipos de telemetria, as contagens de telemetria por operação, bem como outros fatores.

Para resolver os problemas introduzidos pelas métricas pré-agregadas de amostragem, são utilizados nos SDKs. Podem ser referenciados detalhes adicionais sobre estas métricas, baseadas em registos e pré-agregadas, no Aplicação Azure Insights – Azure Monitor | Microsoft Docs. As propriedades relevantes dos dados registados são identificadas e as estatísticas extraídas antes da amostragem ocorrer. Para evitar problemas de recursos e custos, as métricas são agregadas. Os dados agregados resultantes são representados por apenas alguns itens de telemetria de métricas por minuto, em vez de potencialmente milhares de itens de telemetria de eventos. Estas métricas calculam os 25 pedidos do exemplo e enviam uma métrica para a conta MDM que comunica "esta aplicação Web processou 25 pedidos", mas o registo de telemetria do pedido enviado terá um itemCount de 100. Estas métricas pré-agregadas comunicam os números corretos e podem ser confiadas quando a amostragem afeta os resultados das consultas baseadas em registos. Podem ser visualizadas no painel Métricas do portal do Application Insights.

Perguntas mais frequentes

A amostragem afeta a precisão dos alertas?

  • Sim. Os alertas só podem ser acionados após dados de exemplo. A filtragem agressiva pode resultar em alertas que não são acionados conforme esperado.

Nota

A amostragem não é aplicada às Métricas, mas as Métricas podem derivar de dados de exemplo. Desta forma, a amostragem pode afetar indiretamente a precisão dos alertas.

Qual é o comportamento de amostragem predefinido nos SDKs de ASP.NET e ASP.NET Core?

  • Se estiver a utilizar uma das versões mais recentes do SDK acima, a Amostragem Adaptável é ativada por predefinição com cinco itens de telemetria por segundo. Por predefinição, existem dois AdaptiveSamplingTelemetryProcessor nós adicionados e um inclui o Event tipo de amostragem, enquanto o outro exclui o Event tipo da amostragem. Esta 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 são amostrados separadamente de outros tipos de telemetria. Normalmente, os eventos são utilizados para telemetria empresarial e, muito provavelmente, não devem ser afetados por volumes de telemetria de diagnóstico.

    O seguinte mostra o ficheiro predefinido ApplicationInsights.config gerado. No ASP.NET Core, o mesmo comportamento predefinido está ativado no código. Utilize os exemplos na secção anterior desta página para alterar este comportamento predefinido.

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

  • N.º SampleTelemetryProcessors ignoram os itens das considerações de amostragem se o item já estiver amostrado. O mesmo acontece também com a amostragem de ingestão, que não aplicará a amostragem a esses itens já amostrados no próprio SDK.

Por que motivo a amostragem de um simples "recolher X por cento de cada tipo de telemetria"?

  • Embora esta abordagem de amostragem forneça um elevado nível de precisão nas aproximações de métricas, quebraria a capacidade de correlacionar dados de diagnóstico por utilizador, sessão e pedido, o que é fundamental para os diagnósticos. Por conseguinte, a amostragem funciona melhor com políticas como "recolher todos os itens de telemetria para X por cento dos utilizadores da aplicação" ou "recolher toda a telemetria para X% dos pedidos de aplicações". Para os itens de telemetria não associados aos pedidos (como o processamento assíncrono em segundo plano), a contingência é "recolher X por cento de todos os itens para cada tipo de telemetria".

A percentagem de amostragem pode mudar ao longo do tempo?

  • Sim, a amostragem adaptável altera gradualmente a percentagem de amostragem, com base no volume atualmente observado da telemetria.

Se utilizar a amostragem de taxa fixa, como posso saber que percentagem de amostragem funcionará melhor para a minha aplicação?

  • Uma forma é começar com a amostragem adaptável, descobrir em que taxa se instala (veja a pergunta acima) e, em seguida, mudar para a amostragem de taxa fixa com essa taxa.

    Caso contrário, tem que adivinhar. Analise a utilização atual da telemetria no Application Insights, observe qualquer limitação que esteja a ocorrer e calcule o volume da telemetria recolhida. Estas três entradas, juntamente com o escalão de preço selecionado, sugerem quanto poderá querer reduzir o volume da telemetria recolhida. No entanto, um aumento do número de utilizadores ou outra mudança no volume de telemetria poderá invalidar a estimativa.

O que acontece se configurar a percentagem de amostragem para ser demasiado baixa?

  • Percentagens de amostragem excessivamente baixas causam amostragem excessivamente agressiva e reduzem a precisão das aproximações quando o Application Insights tenta compensar a visualização dos dados para a redução do volume de dados. Além disso, a sua experiência de diagnóstico pode ser negativamente afetada, uma vez que alguns dos pedidos infrequentemente falhados ou lentos podem ser amostrados.

O que acontece se configurar a percentagem de amostragem para ser demasiado elevada?

  • Configurar uma percentagem de amostragem demasiado elevada (não suficientemente agressiva) resulta numa redução insuficiente do volume da telemetria recolhida. Pode continuar a ter perda de dados de telemetria relacionada com a limitação e o custo da utilização do Application Insights poderá ser superior ao planeado devido a custos de utilização excedida.

Em que plataformas posso utilizar a amostragem?

  • A amostragem de ingestão pode ocorrer automaticamente para qualquer telemetria acima de um determinado volume, se o SDK não estiver a efetuar a amostragem. Esta configuração funcionaria, por exemplo, se estiver a utilizar uma versão mais antiga do SDK ASP.NET ou do SDK Java.
  • Se estiver a utilizar os SDKs atuais ASP.NET ou ASP.NET Core (alojados no Azure ou no seu próprio servidor), obtém a amostragem adaptável por predefinição, mas pode mudar para taxa fixa, conforme descrito acima. Com a amostragem de taxa fixa, o SDK do browser sincroniza automaticamente com eventos relacionados com exemplos.
  • Se estiver a utilizar o agente Java atual, pode configurar applicationinsights.json (para o SDK Java, configurar ) para ativar ApplicationInsights.xmla amostragem de taxa fixa. A amostragem está desativada por predefinição. Com a amostragem de taxa fixa, o SDK do browser e o servidor sincronizam automaticamente com eventos relacionados com exemplos.

Há certos eventos raros que sempre quero ver. Como posso fazê-los passar pelo módulo de amostragem?

  • A melhor forma de o conseguir é escrever um TelemetryInitializer personalizado, que define o SamplingPercentage como 100 no item de telemetria que pretende manter, conforme mostrado abaixo. Como é garantido que os inicializadores são executados antes dos processadores de telemetria (incluindo a amostragem), isto garante que todas as técnicas de amostragem irão ignorar este item de quaisquer considerações de amostragem. Os inicializadores de telemetria personalizados estão disponíveis no SDK de ASP.NET, no SDK ASP.NET Core, no SDK JavaScript e no SDK Java. Por exemplo, pode configurar um inicializador de telemetria com o SDK ASP.NET:

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

Versões mais antigas do SDK

A amostragem adaptável está disponível para o SDK do Application Insights para ASP.NET v2.0.0-beta3 e posterior, Microsoft.ApplicationInsights.AspNetCore SDK v2.2.0-beta1 e posterior e está ativado por predefinição.

A amostragem de taxa fixa é uma funcionalidade do SDK no ASP.NET versões da versão 2.0.0 e do SDK Java 2.0.1 e posterior.

Antes da v2.5.0-beta2 do SDK ASP.NET e da v2.2.0-beta3 do SDK ASP.NET Core, a decisão de amostragem baseava-se no hash do ID de utilizador para aplicações que definem o “utilizador” (isto é, aplicações Web mais típicas). Para os tipos de aplicações que não definiram utilizadores (como serviços Web), a decisão de amostragem baseou-se no ID da operação do pedido. As versões recentes dos SDKs de ASP.NET e ASP.NET Core utilizam o ID da operação para a decisão de amostragem.

Passos seguintes