使用 ASP.NET 核心库禁用 Application Insights 采样

Disable Application Insights sampling with the ASP.NET Core libraries

我需要保留所有遥测数据,因为我们将其用于分析。

根据this article我可以运行以下Analytics查询来确定抽样率:

requests 
 | where timestamp > ago(1d)
 | summarize 100/avg(itemCount) by bin(timestamp, 1h) 
 | render areachart 

结果表明进行了大量采样,尤其是在白天,每 10 个项目中只有大约 1 个被保留:

让我感到困惑的是 Azure 门户指示采样设置为 100%:

也许这只反映了 Ingestion 采样?自适应采样可能仍在服务器上进行。

如何使用 Application Insights 的 ASP.NET 核心库完全禁用采样?(即 Microsoft.ApplicationInsights.AspNetCore 1.0.2)

目前,这是我能找到的唯一配置,没有任何关于采样的配置:

var appInsightsConfiguration = new ConfigurationBuilder()
    .AddApplicationInsightsSettings(
        developerMode: false,
        instrumentationKey: Configuration["ApplicationInsights:InstrumentationKey"])
    .Build();

services.AddApplicationInsightsTelemetry(appInsightsConfiguration);

您可以使用 ApplicationInsightsServiceOptions class 禁用采样。

用法示例:

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

services.AddApplicationInsightsTelemetry(Configuration, aiOptions);

Application Insights ASP.NET Core Github documentation page 中查看有关抽样的更多详细信息。

希望这对您有所帮助,

阿萨夫