我正在尝试在AppInsights中进行采样,但运气不佳。这是我的复制品:
首先,我设置一个TelemetryClient:
TelemetryConfiguration configuration = TelemetryConfiguration.CreateDefault();
configuration.InstrumentationKey = "f7968b3b-b5ac-4e00-a6d9-f4915e5c5d32";
telemetryClientTest = new TelemetryClient(configuration);
var builder = configuration.DefaultTelemetrySink.TelemetryProcessorChainBuilder;
builder.UseAdaptiveSampling(maxTelemetryItemsPerSecond: 1);
builder.Build();
接下来,我尝试记录一系列事件:
for(var i = 0; i < 500; i++)
{
telemetryClientTest.TrackEvent("SampledThingHappened");
if(i % 100 == 0)
await Task.Delay(1000);
}
每100个,我会延迟一秒钟。我期望的是一些SampledThingHappened
事件块,每个事件的itemCount大约为100左右。相反,我看到所有500个项目,每个项目的itemCount为1。
customEvents
| where name == "SampledThingHappened"
| where itemCount > 1
不返回任何项目。
DefaultTelemetrySink中的所有内容看起来都是正确的,我可以在其中看到具有所有正确设置的AdaptiveSamplingTelemetryProcessor:
答案 0 :(得分:1)
因为,ASP.NET Core应用程序没有ApplicationInsights.config
,所以所有配置都是通过代码完成的。 默认情况下,所有ASP.NET Core应用程序均启用自适应采样。您可以禁用或自定义采样行为。
自定义自适应采样设置:
using Microsoft.ApplicationInsights.Extensibility
public void Configure(IApplicationBuilder app, IHostingEnvironment env, TelemetryConfiguration configuration)
{
var builder = configuration.DefaultTelemetrySink.TelemetryProcessorChainBuilder;
// For older versions of the Application Insights SDK, use the following line instead:
// var builder = configuration.TelemetryProcessorChainBuilder;
// Using adaptive sampling
builder.UseAdaptiveSampling(maxTelemetryItemsPerSecond:5);
// Alternately, the following configures adaptive sampling with 5 items per second, and also excludes DependencyTelemetry from being subject to sampling.
// builder.UseAdaptiveSampling(maxTelemetryItemsPerSecond:5, excludedTypes: "Dependency");
// If you have other telemetry processors:
builder.Use((next) => new AnotherProcessor(next));
builder.Build();
// ...
}
有关ASP.NET应用程序App Insights采样设置,请访问Configuring adaptive sampling for ASP.NET applications。
要验证实际采样率(无论应用于何处),请使用如下所示的Analytics query:
union requests,dependencies,pageViews,browserTimings,exceptions,traces
| where timestamp > ago(1d)
| summarize RetainedPercentage = 100/avg(itemCount) by bin(timestamp, 1h), itemType
如果您发现任何类型的RetainedPercentage
都小于100,则说明该遥测类型正在采样。