C# 如何通过IServiceCollection配置自适应采样
根据,在“配置采样设置”下,我们可以配置自适应采样,还可以从采样中包括或排除某些类型:C# 如何通过IServiceCollection配置自适应采样,c#,asp.net-core,dependency-injection,azure-application-insights,C#,Asp.net Core,Dependency Injection,Azure Application Insights,根据,在“配置采样设置”下,我们可以配置自适应采样,还可以从采样中包括或排除某些类型: public void Configure(IApplicationBuilder app, IHostingEnvironment env, TelemetryConfiguration configuration) { var builder = configuration.DefaultTelemetrySink.TelemetryProcessorChainBuilder; // Fo
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();
// ...
}
但是,如果我们正在通过WebHostBuilder.Configure()
配置应用程序,并传入一个接受iaapplicationbuilder
的委托,有没有办法做同样的事情?在这种情况下,我们无法通过DI获得遥测配置
我需要做与上面类似的事情,但我只有iaapplicationbuilder
界面。从文档来看,似乎我应该使用TelemetryConfiguration.Active.DefaultTelemetrySink.TelemetryProcessorChainBuilder
,但是TelemetryConfiguration.Active
说它在.NET Core上过时了,还说它从ApplicationInsights.config加载实例,而我甚至没有。我正在从代码创建一个完整的AppInsights客户端
我想另一种方法是创建我自己的遥测处理器,它完全按照我想要的方式进行采样,但这似乎有些过头了。基本上,我想更改管道中当前自适应采样遥测处理器的配置。IAApplicationBuilder
界面有一个ApplicationServices
属性,您可以使用该属性解析遥测配置。下面是一个如何使用它的示例:
webHostBuilder.Configure(applicationBuilder =>
{
var telemetryConfiguration = applicationBuilder.ApplicationServices
.GetRequiredService<TelemetryConfiguration>();
// ...
});
webHostBuilder.Configure(applicationBuilder=>
{
var遥测配置=applicationBuilder.ApplicationServices
.GetRequiredService();
// ...
});
此遥测配置
实例已注册为单例,与使用启动时提供的实例相同。配置