.NET控制台应用中Adaptive Sampling默认状态咨询
.NET控制台手动配置Application Insights的自适应采样状态及禁用方法
自适应采样默认状态
当你通过手动创建TelemetryConfiguration和TelemetryClient的方式使用Application Insights时,自适应采样默认是关闭的。
ASP.NET Core或Worker Service中默认开启自适应采样,是因为对应的SDK集成包在初始化时会自动向TelemetryConfiguration的处理器链中添加自适应采样处理器。而手动配置的场景下,这个默认的处理器链不会包含采样相关组件,所有遥测数据都会被完整发送到Azure。
如何确保完全禁用采样(记录所有日志)
虽然默认关闭,但为了避免后续依赖变更或版本更新带来的意外采样,建议手动明确配置以强制记录所有遥测:
方法1:移除所有采样处理器
遍历并移除配置中所有的采样处理器工厂,确保没有任何采样逻辑生效:
// 创建默认配置 var telemetryConfig = TelemetryConfiguration.CreateDefault(); // 移除所有采样处理器工厂 telemetryConfig.TelemetryProcessorChainBuilder.ProcessorFactories .RemoveAll(factory => factory is SamplingTelemetryProcessorFactory); // 构建处理器链 telemetryConfig.TelemetryProcessorChainBuilder.Build(); // 创建TelemetryClient并添加自定义初始化器 var telemetryClient = new TelemetryClient(telemetryConfig); telemetryClient.TelemetryInitializers.Add(new CustomTelemetryInitializer());
方法2:强制设置100%采样率
直接配置采样率为100%,确保所有数据都被保留:
var telemetryConfig = TelemetryConfiguration.CreateDefault(); // 配置采样率为100% var samplingSettings = new SamplingPercentageEstimatorSettings { InitialSamplingPercentage = 100 }; telemetryConfig.TelemetryProcessorChainBuilder.UseSampling(samplingSettings); telemetryConfig.TelemetryProcessorChainBuilder.Build(); var telemetryClient = new TelemetryClient(telemetryConfig); telemetryClient.TelemetryInitializers.Add(new CustomTelemetryInitializer());
这两种方法都能确保你的控制台应用发送所有日志到Application Insights,不会有采样丢弃的情况。
内容的提问来源于stack exchange,提问作者Shadow
相关产品推荐
相关产品推荐

