Amostragem no Application Insights
A amostragem é um recurso do Application Insights. É a maneira recomendada de 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. A amostragem também ajuda a evitar que o Application Insights limite sua telemetria. O filtro de amostragem seleciona itens relacionados, para que você possa navegar entre itens quando estiver fazendo investigações de diagnóstico.
Quando as contagens métricas são apresentadas no portal, elas são renormalizadas para levar em conta a amostragem. Isso minimiza qualquer efeito nas estatísticas.
Nota
- Se você adotou nossa Distro OpenTelemetry e está procurando opções de configuração, consulte Ativar amostragem.
Atenção
Recomendamos a Distro OpenTelemetry do Azure Monitor para novos aplicativos ou clientes para potencializar o Azure Monitor Application Insights. A Distro OpenTelemetry do Azure Monitor oferece uma funcionalidade e experiência semelhantes às do SDK do Application Insights. É possível migrar do SDK do Application Insights usando os guias de migração para .NET, Node.js e Python, mas ainda estamos trabalhando para adicionar mais alguns recursos para compatibilidade com versões anteriores.
Breve resumo
- Existem três tipos diferentes de amostragem: amostragem adaptável, amostragem de taxa fixa e amostragem de ingestão.
- A amostragem adaptável é habilitada por padrão em todas as versões mais recentes do Application Insights ASP.NET e ASP.NET Core Software Development Kits (SDKs) e do Azure Functions.
- A amostragem de taxa fixa está disponível em versões recentes dos SDKs do Application Insights para ASP.NET, ASP.NET Core, Java (o agente e o SDK), JavaScript e Python.
- Em Java, as substituições de amostragem estão disponíveis e são úteis quando você precisa aplicar taxas de amostragem diferentes a dependências, solicitações e verificações de integridade selecionadas. Use substituições de amostragem para desligar algumas dependências barulhentas enquanto, por exemplo, todos os erros importantes são mantidos em 100%. Esse comportamento é uma forma de amostragem fixa que lhe dá um nível refinado de controle sobre sua telemetria.
- A amostragem de ingestão funciona no ponto de extremidade do serviço Application Insights. Só se aplica quando não existe outra amostragem em vigor. Se o SDK coletar amostras de sua telemetria, a amostragem de ingestão será desativada.
- Para aplicativos Web, se você registrar eventos personalizados e precisar garantir que um conjunto de eventos seja mantido ou descartado juntos, os eventos deverão ter o mesmo
OperationId
valor. - Se você escrever consultas do Google Analytics, deverá levar em conta a amostragem. Em particular, em vez de simplesmente contar registros, você deve usar
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.
A tabela a seguir resume os tipos de amostragem disponíveis para cada SDK e tipo de aplicativo:
Application Insights SDK | Amostragem adaptativa suportada | Amostragem de taxa fixa suportada | Amostragem de ingestão suportada |
---|---|---|---|
ASP.NET | Sim (ativado por padrão) | Sim | Apenas se não for efetuada qualquer outra amostragem |
ASP.NET Core | Sim (ativado por padrão) | Sim | Apenas se não for efetuada qualquer outra amostragem |
Funções do Azure | Sim (ativado por padrão) | Não | Apenas se não for efetuada qualquer outra amostragem |
Java | Não | Sim | Apenas se não for efetuada qualquer outra amostragem |
JavaScript | Não | Sim | Apenas se não for efetuada qualquer outra amostragem |
Node.JS | Não | Sim | Apenas se não for efetuada qualquer outra amostragem |
Python | Não | Sim | Apenas se não for efetuada qualquer outra amostragem |
Todos os outros | No | No | Sim |
Nota
- O Java Application Agent 3.4.0 e posterior usa amostragem limitada de taxa como padrão ao enviar telemetria para o Application Insights. Para obter mais informações, consulte Amostragem com taxa limitada.
- As informações na maioria desta página se aplicam às versões atuais dos SDKs do Application Insights. Para obter informações sobre versões mais antigas dos SDKs, consulte versões mais antigas do SDK.
Quando utilizar a amostragem
Em geral, para a maioria das aplicações de pequeno e médio porte, você 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 sobre todas as suas atividades de utilizador.
As principais vantagens da amostragem são:
- O serviço Application Insights descarta ("limita") pontos de dados quando seu aplicativo envia uma alta taxa de telemetria em um curto intervalo de tempo. A amostragem reduz a probabilidade de seu aplicativo ver a limitação ocorrer.
- Para se manter dentro da cota de pontos de dados para sua camada de preço.
- Para reduzir o tráfego de rede a partir da coleta de telemetria.
Como funciona a amostragem
O algoritmo de amostragem decide quais itens de telemetria mantém ou descarta, se o SDK ou o serviço Application Insights faz a amostragem. Ele segue regras para manter todos os pontos de dados inter-relacionados intactos, garantindo que o Application Insights forneça uma experiência de diagnóstico acionável e confiável, mesmo com menos dados. Por exemplo, se um exemplo incluir uma solicitação com falha, ele reterá todos os itens de telemetria relacionados, como exceções e rastreamentos. Dessa forma, quando você visualiza os detalhes da solicitação no Application Insights, sempre vê a solicitação e sua telemetria associada.
A decisão de amostragem é baseada no ID da operação da solicitação, o que significa que todos os itens de telemetria pertencentes a uma operação específica são preservados ou descartados. Para os itens de telemetria que não têm um conjunto de ID de operação (como itens de telemetria relatados de threads assíncronos sem contexto HTTP), a amostragem simplesmente captura uma porcentagem de itens de telemetria de cada tipo.
Ao apresentar a telemetria de volta para você, o serviço Application Insights ajusta as métricas pela mesma porcentagem de amostragem que foi usada no momento da coleta, para compensar os pontos de dados ausentes. Assim, ao olhar para a telemetria no Application Insights, os usuários estão vendo aproximações estatisticamente corretas que estão 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 aplicativos que lidam com um grande volume de solicitações semelhantes de muitos usuários. 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 enquanto permanecem dentro da cota, sem causar perda de dados por limitação.
Tipos de amostragem
Existem três métodos de amostragem diferentes:
A amostragem adaptável ajusta automaticamente o volume de telemetria enviado do SDK em seu aplicativo ASP.NET/ASP.NET Core e do Azure Functions. É a amostra padrão quando você usa o ASP.NET ou o ASP.NET Core SDK. Atualmente, a amostragem adaptável só está disponível para ASP.NET/ASP.NET telemetria do lado do servidor Core e para o Azure Functions.
A amostragem de taxa fixa reduz o volume de telemetria enviado do seu servidor ASP.NET ou ASP.NET Core ou Java e dos navegadores dos usuários. Você define a taxa. O cliente e o servidor sincronizam sua amostragem para que, na Pesquisa, você possa navegar entre visualizações de página relacionadas e solicitações.
A amostragem de ingestão acontece no ponto de extremidade do serviço Application Insights. Ele descarta parte da telemetria que chega do seu aplicativo, em uma taxa de amostragem que você definiu. Não reduz o tráfego de telemetria enviado a partir da sua aplicação, mas ajuda-o a manter-se dentro da sua quota mensal. A principal vantagem da amostragem por ingestão é que você pode definir a taxa de amostragem sem reimplantar seu aplicativo. 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.
Importante
Se os métodos de amostragem adaptativos ou de taxa fixa estiverem habilitados para um tipo de telemetria, a amostragem por ingestão será desabilitada para essa telemetria. No entanto, os tipos de telemetria excluídos da amostragem no nível SDK ainda estarão sujeitos à amostragem de ingestão na taxa definida no portal.
Amostragem adaptável
A amostragem adaptável afeta o volume de telemetria enviado do seu aplicativo de servidor Web para o ponto de extremidade do serviço Application Insights.
Gorjeta
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 o Azure Functions.
O volume ajusta-se automaticamente para se manter dentro do limite da MaxTelemetryItemsPerSecond
taxa. Se o aplicativo gerar baixa telemetria, como durante a depuração ou baixo uso, ele não soltará itens enquanto o volume permanecer em MaxTelemetryItemsPerSecond
. À medida que o volume de telemetria aumenta, ele ajusta a taxa de amostragem para atingir o volume alvo. Este ajustamento, recalculado a intervalos regulares, baseia-se na média móvel da taxa de transmissão de saída.
Para atingir o volume alvo, parte da telemetria gerada é descartada. Mas, como outros tipos de amostragem, o algoritmo retém itens de telemetria relacionados. Por exemplo, ao inspecionar a telemetria na Pesquisa, você pode encontrar a solicitação relacionada a uma exceção específica.
As contagens métricas, como taxa de solicitação e taxa de exceção, são ajustadas para compensar a taxa de amostragem, de modo que mostrem valores aproximados no Metric Explorer.
Configurando a amostragem adaptável para aplicativos ASP.NET
Nota
Esta seção se aplica a aplicativos ASP.NET, não a aplicativos ASP.NET Core. Saiba mais sobre como configurar a amostragem adaptável para aplicativos ASP.NET Core mais adiante neste documento.
No ApplicationInsights.config
, você pode ajustar vários parâmetros no AdaptiveSamplingTelemetryProcessor
nó. Os valores apresentados são os valores predefinidos:
<MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>
A taxa alvo de operações lógicas que o algoritmo adaptativo visa coletar em cada host de servidor. Se seu aplicativo Web for executado em muitos hosts, reduza esse valor para 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. Você pode querer encurtar esse intervalo se sua telemetria estiver sujeita a explosões repentinas.
<SamplingPercentageDecreaseTimeout>00:02:00</SamplingPercentageDecreaseTimeout>
Quando o valor da porcentagem de amostragem muda, ele determina a rapidez com que podemos reduzir a porcentagem de amostragem novamente para capturar menos dados.
<SamplingPercentageIncreaseTimeout>00:15:00</SamplingPercentageIncreaseTimeout>
Quando o valor da porcentagem de amostragem muda, ele dita em quanto tempo podemos aumentar a porcentagem de amostragem novamente para capturar mais dados.
<MinSamplingPercentage>0.1</MinSamplingPercentage>
Como a percentagem de amostragem varia, qual é o valor mínimo que podemos definir?
<MaxSamplingPercentage>100.0</MaxSamplingPercentage>
Como a percentagem de amostragem varia, qual é o valor máximo que podemos definir?
<MovingAverageRatio>0.25</MovingAverageRatio>
No cálculo da média móvel, esse valor especifica o peso que deve ser atribuído ao valor mais recente. Use um valor igual ou inferior a 1. Valores menores tornam o algoritmo menos reativo a mudanças repentinas.
<InitialSamplingPercentage>100</InitialSamplingPercentage>
A quantidade de telemetria a ser amostrada quando o aplicativo é iniciado. Não reduza esse valor enquanto estiver depurando.
<ExcludedTypes>type;type</ExcludedTypes>
Uma lista delimitada por ponto-e-vírgula de tipos que você não deseja que sejam sujeitos a amostragem. Os tipos reconhecidos são:
Dependency
,Event
,Exception
, ,Request
PageView
,Trace
. Toda a telemetria dos tipos especificados é transmitida; Os tipos que não são especificados são amostrados.<IncludedTypes>type;type</IncludedTypes>
Uma lista delimitada por ponto-e-vírgula dos tipos que você deseja submeter à amostragem. Os tipos reconhecidos são:
Dependency
,Event
,Exception
, ,Request
PageView
,Trace
. Os tipos especificados são amostrados; toda a telemetria dos outros tipos é sempre transmitida.
Para desativar a amostragem adaptável, remova o AdaptiveSamplingTelemetryProcessor
(s) nó(s) do ApplicationInsights.config
.
Alternativa: Configurar amostragem adaptável no código
Em vez de definir o parâmetro de amostragem no .config
arquivo, você pode definir esses valores programaticamente.
Remova todos os
AdaptiveSamplingTelemetryProcessor
nós do.config
arquivo.Use o seguinte trecho 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();
Você também pode ajustar a taxa de amostragem para cada tipo de telemetria individualmente ou até mesmo excluir certos 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");
Configurando a amostragem adaptável para aplicativos ASP.NET Core
ASP.NET aplicativos principais podem ser configurados em código ou através do appsettings.json
arquivo. Para obter mais informações, consulte Configuração no ASP.NET Core.
A amostragem adaptável é habilitada por padrão para todos os aplicativos ASP.NET Core. Você pode desativar ou personalizar o comportamento de amostragem.
Desativar a amostragem adaptativa
O recurso de amostragem padrão pode ser desativado ao adicionar o serviço Application Insights.
Adicione ApplicationInsightsServiceOptions
após o WebApplication.CreateBuilder()
método no Program.cs
arquivo:
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 desativa a amostragem adaptativa. Siga as etapas a seguir para adicionar amostragem com mais opções de personalização.
Definir configurações de amostragem
Use os seguintes métodos de extensão para personalizar o comportamento de TelemetryProcessorChainBuilder
amostragem.
Importante
Se você usar esse método para configurar a amostragem, certifique-se de definir a aiOptions.EnableAdaptiveSampling
propriedade como false
ao chamar AddApplicationInsightsTelemetry()
. Depois de fazer essa alteração, você precisa seguir as instruções no bloco de código a seguir exatamente para reativar a amostragem adaptável com suas personalizações no lugar. Se não o fizer, pode resultar na ingestão excessiva de dados. Teste sempre após a alteração das configurações de amostragem e defina um limite de dados diário apropriado para ajudar a controlar seus custos.
using Microsoft.ApplicationInsights.AspNetCore.Extensions;
using Microsoft.ApplicationInsights.Extensibility;
var builder = WebApplication.CreateBuilder(args);
builder.Services.Configure<TelemetryConfiguration>(telemetryConfiguration =>
{
var telemetryProcessorChainBuilder = telemetryConfiguration.DefaultTelemetrySink.TelemetryProcessorChainBuilder;
// Using adaptive sampling
telemetryProcessorChainBuilder.UseAdaptiveSampling(maxTelemetryItemsPerSecond: 5);
// Alternately, the following configures adaptive sampling with 5 items per second, and also excludes DependencyTelemetry from being subject to sampling:
// telemetryProcessorChainBuilder.UseAdaptiveSampling(maxTelemetryItemsPerSecond:5, excludedTypes: "Dependency");
telemetryProcessorChainBuilder.Build();
});
builder.Services.AddApplicationInsightsTelemetry(new ApplicationInsightsServiceOptions
{
EnableAdaptiveSampling = false,
});
var app = builder.Build();
Você pode personalizar outras configurações de amostragem usando a classe SamplingPercentageEstimatorSettings :
using Microsoft.ApplicationInsights.WindowsServer.Channel.Implementation;
telemetryProcessorChainBuilder.UseAdaptiveSampling(new SamplingPercentageEstimatorSettings
{
MinSamplingPercentage = 0.01,
MaxSamplingPercentage = 100,
MaxTelemetryItemsPerSecond = 5
}, null, excludedTypes: "Dependency");
Configurando a amostragem adaptável para o Azure Functions
Siga as instruções desta página para configurar a amostragem adaptável para aplicativos em execução no Azure Functions.
Amostragem de taxa fixa
A amostragem de taxa fixa reduz o tráfego enviado do seu servidor e navegadores da Web. Ao contrário da amostragem adaptativa, reduz a telemetria a uma taxa fixa decidida por si. A amostragem de taxa fixa está disponível para aplicativos ASP.NET, ASP.NET Core, Java e Python.
Como outras técnicas, também retém itens relacionados. Ele também sincroniza a amostragem de cliente e servidor para que os itens relacionados sejam mantidos. Por exemplo, quando você olha para uma exibição de página na Pesquisa, pode encontrar suas solicitações de servidor relacionadas.
No Metrics Explorer, taxas como contagens de solicitações e exceções são multiplicadas por um fator para compensar a taxa de amostragem, para que sejam o mais precisas possível.
Configurando a amostragem de taxa fixa para aplicativos ASP.NET
Desativar amostragem adaptável: no
ApplicationInsights.config
, remova ou comente oAdaptiveSamplingTelemetryProcessor
nó.<TelemetryProcessors> <!-- Disabled adaptive sampling: <Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.AdaptiveSamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel"> <MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond> </Add> -->
Habilite o módulo de amostragem de taxa fixa. Adicione este trecho a
ApplicationInsights.config
:Neste exemplo, SamplingPercentage é 20, portanto , 20% de todos os itens são amostrados. Os valores no Metrics Explorer são multiplicados por (100/20) = 5 para compensar.
<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>20</SamplingPercentage> </Add> </TelemetryProcessors>
Como alternativa, em vez de definir o parâmetro de amostragem no
ApplicationInsights.config
arquivo, você 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();
Configurando amostragem de taxa fixa para aplicativos ASP.NET Core
Desativar amostragem adaptável
Alterações podem ser feitas após o
WebApplication.CreateBuilder()
método, usandoApplicationInsightsServiceOptions
:var builder = WebApplication.CreateBuilder(args); var aiOptions = new Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions(); aiOptions.EnableAdaptiveSampling = false; builder.Services.AddApplicationInsightsTelemetry(aiOptions); var app = builder.Build();
Ativar o módulo de amostragem de taxa fixa
Alterações podem ser feitas 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.Build(); }); builder.Services.AddApplicationInsightsTelemetry(new ApplicationInsightsServiceOptions { EnableAdaptiveSampling = false, }); var app = builder.Build();
Configurando substituições de amostragem e amostragem de taxa fixa para aplicativos Java
Por padrão, nenhuma amostragem está ativada na autoinstrumentação e no SDK do Java. Atualmente, a autoinstrumentação Java, substituições de amostragem e amostragem de taxa fixa são suportadas. A amostragem adaptável não é suportada em Java.
Configurando a Autoinstrumentação Java
- Para configurar substituições de amostragem que substituem a taxa de amostragem padrão e aplicam taxas de amostragem diferentes a solicitações e dependências selecionadas, use o guia de substituição de amostragem.
- Para configurar a amostragem de taxa fixa que se aplica a toda a sua telemetria, use 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.
Configurando amostragem de taxa fixa para aplicativos OpenCensus Python
Instrumente seu aplicativo com os exportadores mais recentes do OpenCensus Azure Monitor.
Nota
A amostragem de taxa fixa não está disponível para o exportador de métricas. Isso 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 rastrear.
Amostragem de taxa fixa para rastreio
Você pode especificar um sampler
como parte da sua Tracer
configuração. Se nenhum amostrador explícito for fornecido, o ProbabilitySampler
será usado por padrão. O ProbabilitySampler
usaria uma taxa de 1/10000 por padrão, o que significa que uma em cada 10.000 solicitações é enviada para o Application Insights. Se você quiser especificar uma taxa de amostragem, consulte os detalhes a seguir.
Para especificar a taxa de amostragem, certifique-se de especificar Tracer
um amostrador 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 todas as suas solicitações são enviadas 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 os toros
Você pode configurar a amostragem de taxa fixa para AzureLogHandler
modificando o logging_sampling_rate
argumento opcional. Se não for fornecido nenhum argumento, utiliza-se uma taxa de amostragem de 1,0. Uma taxa de amostragem de 1,0 representa 100%, o que significa que todas as suas solicitações são enviadas como telemetria para o 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 JavaScript
As páginas da Web baseadas em JavaScript podem ser configuradas para usar o 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.
Gorjeta
Em aplicativos ASP.NET com JavaScript incluído, o trecho normalmente entra em _Layout.cshtml
.
Insira uma linha como samplingPercentage: 10,
antes da tecla 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 chaves de instrumentação continuará a funcionar, mas não forneceremos mais atualizações ou suporte para o recurso. Transição para cadeias de conexão para aproveitar os novos recursos.
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.
Coordenação da amostragem do lado do servidor e do lado do cliente
O SDK JavaScript do lado do cliente participa da amostragem de taxa fixa com o SDK do lado do servidor. As páginas instrumentadas enviam apenas telemetria do lado do cliente do mesmo usuário para o qual o SDK do lado do servidor tomou a decisão de incluir na amostragem. Essa lógica foi projetada para manter a integridade das sessões do usuário em aplicativos do lado do cliente e do servidor. Como resultado, a partir 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, pode navegar entre visualizações de página e solicitações relacionadas.
Se a telemetria do cliente e do servidor não mostrar amostras coordenadas:
- Verifique se você habilitou a amostragem no servidor e no cliente.
- Verifique se você define a mesma porcentagem 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 opera no ponto em que a telemetria do seu servidor Web, navegadores e dispositivos atinge o ponto de extremidade do serviço Application Insights. Embora não reduza o tráfego de telemetria enviado do seu aplicativo, ele reduz o valor processado e retido (e cobrado) pelo Application Insights.
Use esse tipo de amostragem se seu aplicativo frequentemente ultrapassar sua cota mensal e você não tiver a opção de usar nenhum dos tipos de amostragem baseados em SDK.
Defina a taxa de amostragem na página Uso e custos estimados:
Como outros tipos de amostragem, o algoritmo retém itens de telemetria relacionados. Por exemplo, ao inspecionar a telemetria na Pesquisa, você pode encontrar a solicitação relacionada a uma exceção específica. As contagens métricas, como taxa de solicitação e taxa de exceção, são mantidas corretamente.
A amostragem descarta determinados pontos de dados, tornando-os indisponíveis em qualquer recurso do Application Insights, como a Exportação Contínua.
A amostragem por ingestão não funciona em conjunto com a amostragem adaptativa ou de taxa fixa. A amostragem adaptável é ativada automaticamente com o SDK do ASP.NET, o SDK do ASP.NET Core, no Serviço de Aplicativo do Azure ou com o Agente do Application Insights. Quando o ponto de extremidade do serviço Application Insights recebe telemetria e deteta uma taxa de amostragem abaixo de 100% (indicando amostragem ativa), ele ignora qualquer taxa de amostragem de ingestão definida.
Aviso
O valor mostrado no bloco do portal indica o valor que você definiu para amostragem de ingestão. Ele não representa a taxa de amostragem real se qualquer tipo de amostragem SDK (amostragem adaptativa ou de taxa fixa) estiver em operação.
Que tipo de amostragem devo utilizar?
Utilizar amostragem por ingestão se:
- Você costuma usar sua cota mensal de telemetria.
- Você está recebendo muita telemetria dos navegadores da Web de seus usuários.
- Você está usando uma versão do SDK que não oferece suporte à amostragem - por exemplo, ASP.NET versões anteriores à 2.0.
Utilizar amostragem de taxa fixa se:
- Você precisa de amostragem sincronizada entre cliente e servidor para navegar entre eventos relacionados. Por exemplo, visualizações de página e solicitações HTTP na Pesquisa durante a investigação de eventos.
- Você está confiante na porcentagem de amostragem apropriada para seu aplicativo. Deve ser alto o suficiente para obter métricas precisas, mas abaixo da taxa que excede sua cota de preços e os limites de limitação.
Use amostragem adaptável:
Se as condições para usar as outras formas de amostragem não se aplicarem, recomendamos a amostragem adaptativa. Essa configuração é habilitada por padrão no SDK do ASP.NET/ASP.NET Core. Ele não reduz o tráfego até que uma determinada taxa mínima seja atingida, portanto, sites de baixo uso provavelmente não são amostrados.
Saber se a amostragem está em funcionamento
Use uma consulta do Google Analytics para encontrar a taxa de amostragem.
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 na precisão pode ser altamente indesejável para estes tipos de telemetria.
Precisão das consultas de registos e taxas de amostragem elevadas
À medida que o aplicativo é ampliado, ele pode processar dezenas, centenas ou milhares de itens de trabalho por segundo. Registrar um evento para cada um deles não é um recurso nem é rentável. O Application Insights usa a amostragem para se adaptar ao crescente volume de telemetria de forma flexível e para controlar o uso e o custo dos recursos.
Aviso
A integridade da exibição de ponta a ponta de uma operação distribuída pode ser afetada se qualquer aplicativo na operação distribuída tiver ativado a amostragem. Diferentes decisões de amostragem são tomadas por cada aplicativo em uma operação distribuída, portanto, a telemetria para um ID de operação pode ser salva por um aplicativo, enquanto outros aplicativos podem decidir não fazer a amostragem da telemetria para esse mesmo ID de operação.
À medida que as taxas de amostragem aumentam, a precisão das consultas baseadas em log diminui e é inflacionada. Isso só afeta a precisão das consultas baseadas em log quando a amostragem está habilitada e as taxas de amostragem estão em um intervalo mais alto (~ 60%). O impacto varia com base nos tipos de telemetria, contagens de telemetria por operação e outros fatores.
Os SDKs usam métricas pré-agregadas para resolver problemas causados pela amostragem. Para obter mais informações sobre essas métricas, consulte Azure Application Insights - Azure Monitor | Documentos Microsoft. Os SDKs identificam propriedades relevantes dos dados registrados e extraem estatísticas antes da amostragem. Para minimizar o uso de recursos e os custos, as métricas são agregadas. Esse processo resulta em alguns itens de telemetria métrica por minuto, em vez de milhares de itens de telemetria de eventos. Por exemplo, essas métricas podem relatar "este aplicativo Web processou 25 solicitações" para a conta MDM, com um itemCount
de 100 no registro de telemetria de solicitação enviada. Essas métricas pré-agregadas fornecem números precisos e são confiáveis mesmo quando a amostragem afeta os resultados da consulta baseada em log. Você pode visualizá-los no painel Métricas do portal do Application Insights.
Perguntas mais frequentes
A amostragem afeta a precisão do alerta?
- Sim. Os alertas só podem ser acionados com base em dados de amostra. A filtragem agressiva pode fazer com que os alertas não sejam disparados como esperado.
Nota
A amostragem não é aplicada a métricas, mas as métricas podem ser derivadas de dados amostrados. Desta forma, a amostragem pode afetar indiretamente a precisão do alerta.
Qual é o comportamento de amostragem padrão nos SDKs ASP.NET e ASP.NET Core?
- Se você estiver usando uma das versões mais recentes do SDK acima, o Adaptive Sampling será habilitado por padrão com cinco itens de telemetria por segundo.
Por padrão, o sistema adiciona dois
AdaptiveSamplingTelemetryProcessor
nós: um inclui oEvent
tipo de amostragem, enquanto o outro o exclui. Essa configuração limita a telemetria a cincoEvent
itens de tipo e cinco itens de todos os outros tipos combinados, garantindo queEvents
sejam amostrados separadamente de outros tipos de telemetria.
Use os exemplos na seção anterior desta página para alterar esse comportamento padrão.
A telemetria pode ser amostrada mais de uma vez?
- N.º Telemetria de amostragemOs processadores ignoram itens de considerações de amostragem se o item já estiver amostrado. O mesmo vale para a amostragem por ingestão também, que não aplica a amostragem aos itens já amostrados no próprio SDK.
Por que a amostragem não é um simples "coletar X por cento de cada tipo de telemetria"?
- Embora essa abordagem de amostragem proporcionasse um alto nível de precisão nas aproximações métricas, ela quebraria a capacidade de correlacionar dados de diagnóstico por usuário, sessão e solicitação, o que é crítico para o diagnóstico. Portanto, a amostragem funciona melhor com políticas como "coletar todos os itens de telemetria para X por cento dos usuários do aplicativo" ou "coletar toda a telemetria para X por cento das solicitações do aplicativo". Para os itens de telemetria não associados às solicitações (como processamento assíncrono em segundo plano), o fallback é "coletar X por cento de todos os itens para cada tipo de telemetria".
A percentagem de amostragem pode variar ao longo do tempo?
- Sim, a amostragem adaptativa altera gradualmente a percentagem de amostragem, com base no volume atualmente observado da telemetria.
Se eu usar a amostragem de taxa fixa, como posso saber qual porcentagem de amostragem funciona melhor para meu aplicativo?
Uma maneira é começar com a amostragem adaptativa, descobrir em que taxa ela se estabelece (veja a pergunta acima) e, em seguida, mudar para amostragem de taxa fixa usando essa taxa.
Caso contrário, você tem que adivinhar. Analise seu uso atual de telemetria no Application Insights, observe qualquer limitação que esteja ocorrendo e estime o volume da telemetria coletada. Essas três entradas, juntamente com o nível de preço selecionado, sugerem o quanto você pode querer reduzir o volume da telemetria coletada. No entanto, um aumento no número de usuários ou alguma outra mudança no volume de telemetria pode invalidar sua estimativa.
O que acontece se eu configurar a porcentagem de amostragem para ser muito baixa?
- Percentuais de amostragem excessivamente baixos causam amostragem excessivamente agressiva e reduzem a precisão das aproximações quando o Application Insights tenta compensar a visualização dos dados pela redução do volume de dados. Além disso, sua experiência de diagnóstico pode ser afetada negativamente, já que algumas das solicitações com falha ou lentidão podem ser amostradas.
O que acontece se eu configurar a porcentagem de amostragem para ser muito alta?
- A configuração de uma percentagem de amostragem demasiado elevada (não suficientemente agressiva) resulta numa redução insuficiente do volume da telemetria recolhida. Você ainda pode experimentar perda de dados de telemetria relacionada à limitação, e o custo de usar o Application Insights pode ser maior do que o planejado devido a cobranças excessivas.
O que acontece se eu definir as configurações IncludedTypes e ExcludedTypes?
- É melhor não definir ambos
ExcludedTypes
eIncludedTypes
em sua configuração para evitar conflitos e garantir configurações claras de coleta de telemetria. - Os tipos de telemetria listados são
ExcludedTypes
excluídos mesmo que também estejam definidos nasIncludedTypes
configurações. ExcludedTypes terá precedência sobre IncludedTypes.
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 executando a amostragem. Essa configuração funcionaria, por exemplo, se você estiver usando uma versão mais antiga do ASP.NET SDK ou Java SDK.
- Se você estiver usando o ASP.NET atual ou os SDKs ASP.NET Core (hospedados no Azure ou em seu próprio servidor), obterá amostragem adaptável por padrão, mas poderá alternar para taxa fixa conforme descrito anteriormente. Com amostragem de taxa fixa, o SDK do navegador sincroniza automaticamente com exemplos de eventos relacionados.
- Se você estiver usando o agente Java atual, poderá configurar
applicationinsights.json
(para Java SDK, configureApplicationInsights.xml
) para ativar a amostragem de taxa fixa. A amostragem está desativada por padrão. Com a amostragem de taxa fixa, o SDK do navegador e o servidor sincronizam automaticamente com exemplos de eventos relacionados.
Há certos eventos raros que eu sempre quero ver. Como posso fazê-los passar pelo módulo de amostragem?
A melhor maneira de sempre ver determinados eventos é escrever um TelemetryInitializer personalizado, que define como
SamplingPercentage
100 no item de telemetria que você deseja manter, conforme mostrado no exemplo a seguir. É garantido que os inicializadores sejam executados antes dos processadores de telemetria (incluindo amostragem), portanto, garante que todas as técnicas de amostragem ignorem esse item de quaisquer considerações de amostragem. Os 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. Por exemplo, você pode configurar um inicializador de telemetria usando o ASP.NET SDK: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á habilitada por padrão.
A amostragem de taxa fixa é um recurso do SDK em ASP.NET versões 2.0.0 e Java SDK versão 2.0.1 e posteriores.
Antes da v2.5.0-beta2 do ASP.NET SDK e da v2.2.0-beta3 do ASP.NET Core SDK, as decisões de amostragem para aplicativos que definiam "usuário" (como a maioria dos aplicativos Web) dependiam do hash do ID do usuário. Para aplicativos que não definem usuários (como serviços Web), ele baseou a decisão no ID de operação da solicitação. As versões recentes dos SDKs ASP.NET e ASP.NET Core agora usam o ID da operação para decisões de amostragem.
Próximos passos
- A filtragem pode fornecer um controle mais rigoroso do que seu SDK envia.
- Leia o artigo da Developer Network Otimize Telemetry with Application Insights.