Azure WebJobs - 如何禁用应用程序洞察的自适应采样?

Azure WebJobs - How to disable adaptive sampling for application insights?

我遇到了 this MSDN article 为各种类型的应用程序配置 AppInsights 采样。

但是我找不到为 azure webjobs 配置它的方法。

在为 WebJob 配置 appinsights 时,它看起来像这样 (MSDN):

static async Task Main()
{
    var builder = new HostBuilder();
    builder.UseEnvironment(EnvironmentName.Development);
    builder.ConfigureWebJobs(b =>
            {
                b.AddAzureStorageCoreServices();
                b.AddAzureStorage();
            });
    builder.ConfigureLogging((context, b) =>
            {
                b.AddConsole();

                // If the key exists in settings, use it to enable Application Insights.
                string instrumentationKey = context.Configuration["APPINSIGHTS_INSTRUMENTATIONKEY"];
                if (!string.IsNullOrEmpty(instrumentationKey))
                {
                    b.AddApplicationInsightsWebJobs(o => o.InstrumentationKey = instrumentationKey);
                }
            });
    var host = builder.Build();
    using (host)
    {
        await host.RunAsync();
    }
}

相关代码为:

b.AddApplicationInsightsWebJobs(o => o.InstrumentationKey = instrumentationKey);

选项本身如下:

是否可以禁用自适应采样?

非常感谢任何帮助。谢谢!

Is it possible to disable adaptive sampling?

您可以通过进入 ApplicationInsights.config 文件,并删除或注释 AdaptiveSamplingTelemetryProcessor 节点。

<TelemetryProcessors>

<!-- Disable adaptive sampling:
  <Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.AdaptiveSamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel">
    <MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>
  </Add>
-->

最简单的方法是将 SamplingSettings 属性 设置为 null:

.ConfigureLogging((loggingContext, builder) =>
{
    builder.AddConsole();
    builder.AddApplicationInsightsWebJobs(o =>
    {
        o.SamplingSettings = null;
    });
})

这可以防止 AdaptiveSamplingTelemetryProcessor 添加到遥测处理器列表中。

您可以通过查看 TelemetryClient.TelemetryConfiguration.TelemetryProcessors 属性 以查看它是否包含 AdaptiveSamplingTelemetryProcessor 类型的条目来检查自适应采样是否处于活动状态。