Amostragem no Application Insights
A amostragem é um recurso do Application Insights. É a maneira recomendada para reduzir o tráfego de telemetria e os custos de dados e de armazenamento, preservando uma análise estatística correta de dados do aplicativo. A amostragem também ajuda a evitar que o Application Insights limite a telemetria. O filtro de amostragem seleciona itens relacionados para que você possa navegar entre os itens quando você estiver realizando investigações de diagnóstico.
Quando as contagens de métricas são apresentadas no portal, elas são renormalizadas para levar em consideração a amostragem. Isso minimiza o efeito nas estatísticas.
Breve resumo
- Há três tipos diferentes de amostragem: a amostragem adaptável, a amostragem de taxa fixa e a amostragem de ingestão.
- A amostragem adaptável está habilitada por padrão em todas as versões mais recentes dos Software Development Kits (SDKs) do Application Insights para ASP.NET e ASP.NET Core. Também é usada pelo Azure Functions.
- A amostragem de taxa fixa está disponível nas versões recentes dos SDKs do Application Insights para ASP.NET, ASP.NET Core, Java (tanto o agente quanto o SDK), JavaScript e Python.
- No Java, as substituições de amostragem estão disponíveis e são úteis quando é necessário aplicar taxas de amostragem diferentes a dependências, solicitações e verificações de integridade selecionadas. Use substituições de amostragem para ajustar algumas dependências com ruído, enquanto, por exemplo, todos os erros importantes são mantidos em 100%. Esse comportamento é uma forma de amostragem fixa que fornece um nível de controle fino sobre a telemetria.
- A amostragem de ingestão atua no ponto de extremidade do serviço Application Insights. Ela é aplicada quando nenhuma outra amostragem está em vigor. Se o SDK extrai amostras de telemetria, a amostragem de ingestão está desabilitada.
- 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 valor de
OperationId
. - Se você escrever consultas de Análise, 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 personalizadas e de desempenho, 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:
SDK do Application Insights | Amostragem adaptável com suporte | Amostragem de taxa fixa com suporte | Amostragem de ingestão com suporte |
---|---|---|---|
ASP.NET | Sim (ativado por padrão) | Sim | Apenas se nenhuma outra amostragem estiver em vigor |
ASP.NET Core | Sim (ativado por padrão) | Sim | Apenas se nenhuma outra amostragem estiver em vigor |
Funções do Azure | Sim (ativado por padrão) | Não | Apenas se nenhuma outra amostragem estiver em vigor |
Java | Não | Sim | Apenas se nenhuma outra amostragem estiver em vigor |
JavaScript | Não | Sim | Apenas se nenhuma outra amostragem estiver em vigor |
Node.JS | Não | Sim | Apenas se nenhuma outra amostragem estiver em vigor |
Python | Não | Sim | Apenas se nenhuma outra amostragem estiver em vigor |
Todos os outros | Não | Não | Sim |
Observação
- O Java Application Agent 3.4.0 e posterior usa uma amostragem com limitação de taxa como padrão ao enviar telemetria para o Application Insights. Para obter mais informações, confira Amostragem com limitação de taxa.
- A maioria das informações que constam nesta página se aplica às versões atuais dos SDKs do Application Insights. Para obter informações sobre versões mais antigas dos SDKs, confira versões mais antigas do SDK.
Quando usar a amostragem?
Em geral, para a maioria dos aplicativos 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 por meio da coleta de dados em todas as atividades de usuário.
As principais vantagens da amostragem são:
- O serviço Application Insights remove (“restringe”) pontos de dados quando o aplicativo envia uma taxa alta de telemetria em um curto intervalo de tempo. A amostragem reduz a probabilidade de o aplicativo detectar a limitação.
- Permanecer dentro da cota de pontos de dados para o seu tipo de preço.
- Para reduzir o tráfego de rede da coleção de telemetria.
Como a amostragem funciona?
O algoritmo de amostragem decide quais itens de telemetria remover e manter. Essa afirmação é verdadeira independentemente de a amostragem ser 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 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. Por exemplo, se o seu aplicativo tiver uma solicitação com falha incluída em uma amostra, os itens de telemetria adicionais (como exceções e rastreamentos registrados para essa solicitação) serão retidos. A amostragem remove ou mantém todos juntos. 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.
A decisão de amostragem baseia-se na ID da operação da solicitação, o que significa que todos os itens de telemetria que pertencem a uma determinada operação são preservados ou descartados. Para os itens de telemetria que não têm uma ID de operação definida (como itens telemetria notificados por threads assíncronos sem contexto HTTP), a amostragem simplesmente captura um percentual dos itens de telemetria de cada tipo.
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. Portanto, ao examinar a telemetria no Application Insights, os usuários estarão vendo aproximações estatisticamente corretas próximas dos números reais.
A precisão da aproximação depende principalmente do percentual de amostragem configurado. Além disso, a precisão aumenta para os aplicativos que lidam com um grande volume de solicitações semelhantes de uma grande quantidade de 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 e, ao mesmo tempo, permanecer dentro da cota, sem causar perda de dados devido à limitação.
Tipos de amostragem
Há três módulos de amostragem alternativos:
A amostragem adaptável ajusta automaticamente o volume da telemetria enviada do Azure Functions e do SDK para o aplicativo ASP.NET/ASP.NET Core. Essa é a amostragem padrão quando você usa o SDK do ASP.NET ou do ASP.NET Core. A amostragem adaptável está disponível apenas para a telemetria ASP.NET/ASP.NET Core do lado do servidor e para o Azure Functions.
A amostragem de taxa fixa reduz o volume da telemetria enviada do servidor Java ou ASP.NET ou ASP.NET Core e dos navegadores dos usuários. Você define a taxa. 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.
A amostragem de ingestão atua no ponto de extremidade do serviço Application Insights. Ela descarta parte da telemetria que chega em seu aplicativo, na taxa de amostragem que você definir. Ela não reduz o tráfego de telemetria enviado do seu aplicativo, mas ajuda você a se manter em sua cota mensal. A principal vantagem da amostragem de ingestão é que você pode definir a taxa de amostragem sem reimplantar o aplicativo. A amostragem de ingestão funciona de maneira uniforme 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 adaptável ou de taxa fixa estiverem habilitados para um tipo de telemetria, a amostragem de ingestão será desabilitada para essa telemetria. No entanto, os tipos de telemetria excluídos da amostragem em nível de 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 end-point do serviço Application Insights.
Dica
A amostragem adaptável está habilitada por padrão quando você usa o SDK do ASP.NET ou do ASP.NET Core, e também está habilitada por padrão para o Azure Functions.
O volume é ajustado automaticamente para se manter em uma taxa máxima de tráfego especificada e é controlado pela configuração MaxTelemetryItemsPerSecond
. Se o aplicativo produzir uma quantidade baixa de telemetria, como durante a depuração ou devido ao pouco uso, os itens não serão descartados pelo processador de amostragem, desde que o volume esteja abaixo de MaxTelemetryItemsPerSecond
. À medida que o volume da telemetria aumenta, a taxa de amostragem é ajustada para alcançar o volume de destino. O ajuste é recalculado em intervalos regulares e tem base em uma média móvel da taxa de transmissão de saída.
Para atingir o volume de destino, parte da telemetria gerada é descartada. Assim como os outros tipos de amostragem, o algoritmo retém os itens de telemetria relacionados. Por exemplo, quando estiver inspecionando a telemetria na Pesquisa, você conseguirá localizar a solicitação relacionada a uma exceção específica.
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 aproximados no Gerenciador de Métricas.
Configurar a amostragem adaptável para aplicativos ASP.NET
Observação
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.
Em ApplicationInsights.config
, é possível ajustar diversos parâmetros no nó AdaptiveSamplingTelemetryProcessor
. Os números mostrados são os valores padrão:
<MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>
A taxa de destino das operações lógicas que o algoritmo adaptável visa coletar em cada host de servidor. 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.
<EvaluationInterval>00:00:15</EvaluationInterval>
O intervalo no qual a taxa atual de telemetria é reavaliada. Avaliação é executada como uma média móvel. Talvez você queira reduzir esse intervalo se a sua telemetria estiver sujeita a picos repentinos.
<SamplingPercentageDecreaseTimeout>00:02:00</SamplingPercentageDecreaseTimeout>
Quando o valor da porcentagem de amostragem muda, esse valor determina quanto tempo depois temos permissão para diminuir a porcentagem de amostragem novamente a fim de capturar menos dados?
<SamplingPercentageIncreaseTimeout>00:15:00</SamplingPercentageIncreaseTimeout>
Quando o valor da porcentagem de amostragem muda, esse valor determina quanto tempo depois temos permissão para aumentar a porcentagem de amostragem novamente a fim de capturar mais dados?
<MinSamplingPercentage>0.1</MinSamplingPercentage>
À medida que a porcentagem de amostragem varia, qual é o valor mínimo que podemos definir?
<MaxSamplingPercentage>100.0</MaxSamplingPercentage>
À medida que a porcentagem 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 menor ou igual 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 foi iniciado. Não reduza esse valor enquanto estiver depurando.
<ExcludedTypes>type;type</ExcludedTypes>
Uma lista delimitada por ponto e vírgula dos tipos que você não deseja submeter à amostragem. Os tipos reconhecidos são
Dependency
,Event
,Exception
,PageView
,Request
,Trace
. Todos os dados telemétricos dos tipos especificados serão transmitidos; os tipos não especificados serã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
,PageView
,Request
,Trace
. Os tipos especificados serão amostrados; toda a telemetria de todos os demais tipos será sempre transmitida.
Para desativar a amostragem adaptável, remova os nós AdaptiveSamplingTelemetryProcessor
de ApplicationInsights.config
.
Alternativa: configurar a amostragem adaptável no código
Em vez de definir o parâmetro de amostragem no arquivo .config
, você pode definir esses valores de forma programática.
Remova todos os nós
AdaptiveSamplingTelemetryProcessor
do arquivo.config
.Use o seguinte snippet 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();
Também é possível ajustar a taxa de amostragem para cada tipo de telemetria individualmente, ou mesmo excluir determinados tipos de serem amostrados:
// 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 aplicativos ASP.NET Core
Aplicativos ASP.NET Core podem ser configurados no código ou por meio do arquivo appsettings.json
. Para obter mais informações, consulte Configuração no ASP.NET Core.
A amostragem adaptável está habilitada por padrão para todos os aplicativos ASP.NET Core. É possível desabilitar ou personalizar o comportamento de amostragem.
Desativar a amostragem adaptável
O recurso de amostragem padrão pode ser desabilitado ao adicionar o serviço do Application Insights.
Adicione ApplicationInsightsServiceOptions
após o método WebApplication.CreateBuilder()
no arquivo Program.cs
:
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á desabilitar a amostragem adaptável. Siga as etapas abaixo para adicionar a amostragem com mais opções de personalização.
Definir as configurações de amostragem
Use os métodos de extensão de TelemetryProcessorChainBuilder
conforme mostrado abaixo para personalizar o comportamento de amostragem.
Importante
Se você usar esse método para configurar a amostragem, não deixe de definir a propriedade aiOptions.EnableAdaptiveSampling
como false
ao chamar AddApplicationInsightsTelemetry()
. Depois de fazer essa alteração, você precisará seguir as instruções no bloco de código abaixo exatamente na ordem para reabilitar a amostragem adaptável com suas personalizações em vigor. Não fazer isso pode resultar em excesso de ingestão de dados. Sempre teste as configurações de amostragem pós-alteração 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");
});
builder.Services.AddApplicationInsightsTelemetry(new ApplicationInsightsServiceOptions
{
EnableAdaptiveSampling = false,
});
var app = builder.Build();
Você pode personalizar configurações de amostragem adicionais por meio da classe SamplingPercentageEstimatorSettings:
using Microsoft.ApplicationInsights.WindowsServer.Channel.Implementation;
telemetryProcessorChainBuilder.UseAdaptiveSampling(new SamplingPercentageEstimatorSettings
{
MinSamplingPercentage = 0.01,
MaxSamplingPercentage = 100,
MaxTelemetryItemsPerSecond = 5
}, null, excludedTypes: "Dependency");
Configurar a amostragem adaptável para o Azure Functions
Siga as instruções desta página para configurar a amostragem adaptável para os aplicativos em execução no Azure Functions.
Amostragem de taxa fixa
A amostragem de taxa fixa reduz o tráfego enviado do seu servidor Web e de navegadores da Web. Ao contrário da amostragem adaptável, ela reduz a telemetria a uma taxa fixa decidida por você. A amostragem de taxa fixa está disponível para aplicativos ASP.NET, ASP.NET Core, Java e Python.
Assim como outras técnicas, ela também mantém itens relacionados. Ela também sincroniza a amostragem do cliente e do servidor, para que os itens relacionados sejam retidos. Como exemplo, quando você olha a exibição de página em Buscar, você pode encontrar suas solicitações de servidor relacionadas.
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 o mais exatas possível.
Configurar a amostragem de taxa fixa para aplicativos ASP.NET
Desabilitar a amostragem adaptável: em
ApplicationInsights.config
, remova ou transforme em comentário o nóAdaptiveSamplingTelemetryProcessor
.<TelemetryProcessors> <!-- Disabled adaptive sampling: <Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.AdaptiveSamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel"> <MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond> </Add> -->
Habilitar o módulo de amostragem de taxa fixa. Adicione este snippet a
ApplicationInsights.config
:Nesse exemplo, SamplingPercentage é 20, portanto 20% de todos os itens serão amostrados. Os valores em no Metrics Explorer serã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 arquivo
ApplicationInsights.config
, você pode definir estes valores de forma programática: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();
Configurar a amostragem de taxa fixa para aplicativos ASP.NET Core
Desabilitar amostragem adaptável
As alterações podem ser feitas após o método
WebApplication.CreateBuilder()
, 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();
Habilitar o módulo de amostragem de taxa fixa
As alterações podem ser feitas após o método
WebApplication.CreateBuilder()
: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 aplicativos Java
Por padrão, nenhuma amostragem está habilitada no SDK e na instrumentação automática do Java. Atualmente, há suporte para a instrumentação automática do Java, substituições de amostragem e amostragem de taxa fixa. O Java não dá suporte à amostragem adaptável.
Configurar a instrumentação automática do 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.
Observação
Para o percentual de amostragem, escolha um percentual que esteja próximo a 100/N, em que N é um inteiro. Atualmente, a amostragem não dá suporte a outros valores.
Configurar a amostragem de taxa fixa para aplicativos OpenCensus Python
Instrumente o aplicativo com a versão mais recente dos Exportadores do OpenCensus para o Azure Monitor.
Observação
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 o único tipo de telemetria em que a amostragem NÃO pode ser configurada. O exportador de métricas enviará todos os dados telemétricos que ele monitora.
Amostragem de taxa fixa para rastreamento
Você pode especificar um sampler
como parte da configuração do Tracer
. Se nenhum amostrador for fornecido explicitamente, 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 será enviada ao Application Insights. Se você quiser especificar uma taxa de amostragem, veja abaixo.
Para especificar a taxa de amostragem, verifique se o Tracer
especifica 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 serão enviadas como telemetria para Application Insights.
tracer = Tracer(
exporter=AzureExporter(
instrumentation_key='00000000-0000-0000-0000-000000000000',
),
sampler=ProbabilitySampler(1.0),
)
Amostragem de taxa fixa para logs
Você pode configurar a amostragem de taxa fixa para AzureLogHandler
modificando o argumento opcional logging_sampling_rate
. Se nenhum argumento for fornecido, uma taxa de amostragem de 1,0 será usada. 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.
handler = AzureLogHandler(
instrumentation_key='00000000-0000-0000-0000-000000000000',
logging_sampling_rate=0.5,
)
Configurar 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 estar hospedadas em qualquer servidor.
Ao configurar as páginas da Web baseadas em JavaScript para o Application Insights, modifique o snippet JavaScript que você receber do portal do Application Insights.
Dica
Em aplicativos ASP.NET com JavaScript incluído, o snippet normalmente está 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>
Observação
Em 31 de março de 31, 2025, o suporte à ingestão de chave de instrumentação será encerrado. A ingestão de chave de instrumentação continuará funcionando, mas não forneceremos mais atualizações ou suporte para o recurso. Faça a transição para cadeias de conexão para aproveitar as novas funcionalidades.
Para o percentual de amostragem, escolha um percentual que esteja próximo a 100/N, em que N é um inteiro. Atualmente, a amostragem não dá suporte a outros valores.
Coordenar a amostragem do lado do servidor e do cliente
O SDK do JavaScript do lado do cliente participa da amostragem de taxa fixa com o SDK do lado do servidor. As páginas instrumentadas enviarão apenas a 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 é projetada para manter a integridade das sessões de usuário em aplicativos do lado do cliente e do servidor. Como resultado, você pode encontrar todos os outros itens de telemetria para esse usuário ou sessão de qualquer item de telemetria específico no Application Insights e, na Pesquisa, você pode navegar pelas exibições de página e pelas solicitações relacionadas.
Se a telemetria do lado do cliente e do servidor não mostrar amostras coordenados:
- Verifique se você habilitou a amostragem no servidor e no cliente.
- Verifique se você definiu o mesmo percentual 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 de seu servidor Web, seus navegadores e seus dispositivos atinge o ponto de extremidade do serviço Application Insights. 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.
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.
Defina a taxa de amostragem na página Uso e custos estimados:
Assim como outros tipos de amostragem, o algoritmo retém os itens relacionados de telemetria. Por exemplo, quando estiver inspecionando a telemetria na Pesquisa, você conseguirá localizar a solicitação relacionada a uma exceção específica. As contagens de métrica como a taxa de solicitação e a taxa de exceções são mantidas corretamente.
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.
A amostragem de ingestão não funciona enquanto a amostragem adaptável ou de taxa fixa estiver em operação. A amostragem adaptável é habilitada por padrão quando o SDK do ASP.NET ou o SDK do ASP.NET Core é usado, quando o Application Insights está habilitado no Serviço de Aplicativo do Azure ou ao usar o Application Insights Agent. Quando a telemetria é recebida pelo ponto de extremidade do serviço Application Insights, ele examina a telemetria e, se a taxa de amostragem for inferior a 100% (o que indica que a telemetria está sendo amostrada), a taxa de amostragem de ingestão definida será ignorada.
Aviso
O valor mostrado no bloco do portal indica o valor definido para a amostragem de ingestão. Ele não representa a taxa de amostragem real se qualquer tipo de amostragem de SDK (amostragem adaptável ou de taxa fixa) estiver em operação.
Que tipo de amostragem eu devo usar?
Use a amostragem de ingestão se:
- Você costuma usar sua cota mensal de telemetria.
- Você recebe muita telemetria dos navegadores da Web dos usuários.
- Você estiver usando uma versão do SDK que não oferece suporte à amostragem. Por exemplo, o ASP.NET anteriores à 2.
Use a amostragem de taxa fixa se:
- Você quiser uma amostragem sincronizada entre cliente e servidor, para que quando estiver investigando eventos na Pesquisa, você possa navegar entre os eventos relacionados no cliente e no servidor, por exemplo, exibições de página e solicitações HTTP.
- Você estiver confiante quanto ao percentual de amostragem adequado ao seu aplicativo. 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.
Use a amostragem adaptável:
Se as condições para usar outras formas de amostragem não se aplicarem, recomendamos a amostragem adaptável. Essa configuração está habilitada por padrão no SDK do ASP.NET/ASP.NET Core. Ela 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.
Saber se a amostragem está em operação
Para descobrir a taxa de amostragem real, independentemente de onde ela tiver sido aplicada, use 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 você vir que RetainedPercentage
para qualquer tipo é menor que 100, então esse tipo de telemetria está sendo amostrado.
Importante
O Application Insights não faz a amostragem dos tipos de telemetria de sessão, métrica (incluindo métrica personalizada) ou contador de desempenho em qualquer uma das técnicas de amostragem. 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.
Precisão da consulta de log e altas taxas de amostragem
À medida que o aplicativo é escalado verticalmente, ele pode processar dezenas, centenas ou milhares de itens de trabalho por segundo. Registrar um evento para cada um deles não é economicamente viável nem eficaz para o recurso. O Application Insights usa amostragem para se adaptar ao volume crescente de telemetria de maneira flexível e controlar o uso e o custo dos recursos.
Aviso
A integridade de exibição de ponta a ponta de uma operação distribuída poderá ser afetada se algum aplicativo na operação distribuída tiver ativado a amostragem. Decisões de amostragem diferentes são feitas por cada aplicativo em uma operação distribuída, portanto, a telemetria para uma ID de operação pode ser salva por um aplicativo, enquanto outros aplicativos podem decidir não fazer a amostra da telemetria para a mesma ID de operação.
À medida que as taxas de amostragem aumentam, a precisão das consultas baseadas em log diminui e passa a ser superestimada. 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 (cerca de 60%). O impacto varia com base nos tipos de telemetria, nas contagens de telemetria por operação e em outros fatores.
Para resolver os problemas introduzidos pela amostragem, são usadas métricas pré-agregadas nos SDKs. Detalhes adicionais sobre as métricas baseadas em log e pré-agregadas podem ser consultados em Azure Application Insights - Azure Monitor | Microsoft Docs. As propriedades relevantes dos dados registrados são identificadas e as estatísticas são extraídas antes da amostragem. 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étrica por minuto, em vez de potencialmente por milhares de itens de telemetria de eventos. Essas métricas calculam as 25 solicitações do exemplo e enviam uma métrica à conta MDM relatando que “este aplicativo Web processou 25 solicitações”, mas o registro de telemetria de solicitação enviado terá itemCount
de 100. Essas métricas pré-agregadas relatam números corretos e são confiáveis quando a amostragem afeta os resultados das consultas baseadas em log. Elas podem ser exibidas no painel Métricas do portal do Application Insights.
Perguntas frequentes
A amostragem afeta a precisão do alerta?
- Sim. Os alertas só podem ser disparados com base em dados amostrados. A filtragem agressiva pode fazer com que os alertas não sejam disparados conforme o esperado.
Observação
A amostragem não é aplicada a métricas, mas as métricas podem ser derivadas de dados amostrados. Dessa forma, a amostragem pode afetar indiretamente a precisão do alerta.
Qual é o comportamento de amostragem padrão nos SDKs do ASP.NET e do ASP.NET Core?
- 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.
Há dois nós
AdaptiveSamplingTelemetryProcessor
adicionados por padrão e um deles inclui o tipoEvent
na amostragem, enquanto o outro exclui o tipoEvent
da amostragem. Essa configuração significa que o SDK tentará limitar a cinco itens de telemetria do tipoEvent
e cinco itens de telemetria de todos os outros tipos combinados, garantindo assim queEvents
sejam amostrados separadamente dos outros tipos de telemetria. Os eventos costumam ser usados para telemetria de negócios e não devem ser afetados por volumes de telemetria de diagnóstico.
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ão. SamplingTelemetryProcessors ignora os itens das considerações de amostragem se já estiverem sendo amostrados. Isso também vale para a amostragem de ingestão, que não aplicará amostragem a esses itens já amostrados no próprio SDK.
Por que a amostragem não se trata apenas de “coletar X% de cada tipo de telemetria”?
- Embora essa abordagem de amostragem forneceria um alto nível de precisão em aproximações de métrica, ela interromperia a capacidade de correlacionar dados de diagnóstico por usuário, sessão e solicitação, que são essenciais para o diagnóstico. Portanto, a amostragem funciona melhor com políticas como “coletar todos os itens de telemetria para X% de usuários do aplicativo” ou “coletar toda a telemetria para X% das solicitações do aplicativo”. Para os itens de telemetria não associados às solicitações (como o processamento assíncrono em segundo plano), o fallback é “coletar X% de todos os itens para cada tipo de telemetria”.
O percentual de amostragem pode ser alterado com o tempo?
- Sim, a amostragem adaptável altera gradualmente a porcentagem de amostragem com base no volume atualmente observado da telemetria.
Se eu usar a amostragem de taxa fixa, como saber qual percentual de amostragem funcionará melhor para o meu aplicativo?
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.
Caso contrário, é preciso adivinhar. 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. Essas três entradas, junto com seu tipo de preço selecionado, sugere o quanto você talvez queira 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 o percentual de amostragem com um valor muito baixo?
- Um percentual de amostragem excessivamente baixo causa amostragem superagressiva e reduz 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 experiência de diagnóstico pode ser afetada negativamente, já que algumas das solicitações lentas ou raramente com falhas podem ser amostradas.
O que acontece se eu configurar o percentual de amostragem com um valor muito alto?
- Configurar um percentual de amostragem muito alto (não agressivo o suficiente) resultará em uma redução insuficiente no volume da telemetria coletada. 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.
Em quais plataformas posso usar 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ê estivesse usando uma versão mais antiga do SDK do ASP.NET ou do Java.
- Se você estiver usando o SDK atual do ASP.NET ou do ASP.NET Core (hospedado no Azure ou em seu próprio servidor), terá a amostragem adaptável por padrão, mas poderá alternar para a taxa fixa, conforme descrito acima. Com a amostragem de taxa fixa, o SDK do navegador sincroniza automaticamente os eventos relacionados ao exemplo.
- Se você estiver usando o agente Java atual, poderá configurar
applicationinsights.json
(para o SDK do Java, configureApplicationInsights.xml
) para ativar a amostragem de taxa fixa. A amostragem é desativada por padrão. Com a amostragem de taxa fixa, o SDK do navegador e o servidor sincronizam automaticamente os eventos relacionados à amostra.
Há alguns eventos raros que sempre desejo ver. Como posso fazê-los passar pelo módulo de amostragem?
A melhor maneira de fazer isso é gravar um TelemetryInitializer personalizado, que define
SamplingPercentage
para 100 no item de telemetria que você deseja manter, conforme mostrado abaixo. Como a execução dos inicializadores antes dos processadores de telemetria (incluindo amostragem) é garantida, todas as técnicas de amostragem ignorarão esse item de quaisquer considerações de amostragem. Inicializadores de telemetria personalizados estão disponíveis no SDK do ASP.NET, do ASP.NET Core, do JavaScript e do Java. Por exemplo, você pode configurar um inicializador de telemetria usando o SDK do 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 o ASP.NET v2.0.0-beta3 e posterior e para o SDK Microsoft.ApplicationInsights.AspNetCore v2.2.0-beta1 e posterior, e está habilitada por padrão.
A taxa de amostragem fixa é um recurso do SDK do ASP.NET a partir da versão 2.0.0 e do Java a partir da versão 2.0.1.
Antes de v2.5.0-beta2 do SDK do ASP.NET e v2.2.0-beta3 do SDK do ASP.NET Core, a decisão de amostragem foi baseada no hash da ID do usuário para aplicativos que definem o "usuário" (ou seja, aplicativos web mais comuns). Para os tipos de aplicativos que não definiam usuários (como serviços Web), a decisão de amostragem baseava-se na ID de operação da solicitação. As versões recentes do SDK do ASP.NET e do ASP.NET Core usam a ID da operação para a decisão de amostragem.
Próximas etapas
- filtragem pode fornecer um controle mais restrito do que o SDK envia.
- Leia o artigo da Developer Network: Otimizar a telemetria com o Application insights.