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
类型的条目来检查自适应采样是否处于活动状态。
我遇到了 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
类型的条目来检查自适应采样是否处于活动状态。