【问题标题】:How to configure Application Insights sampling on Net Core HostBuilder?如何在 Net Core HostBuilder 上配置 Application Insights 采样?
【发布时间】:2020-02-19 06:51:32
【问题描述】:

我正在使用 ApplicationInsights.WorkerService nuget 包构建 .Net Core 后台服务。关于采样配置的文档说要参考这个: https://docs.microsoft.com/en-us/azure/azure-monitor/app/sampling#configure-sampling-settings

它显示了这一点:

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();

  // ...
}

现在在 HostBuilder 上,我看不到任何可以为我提供 TelemetryConfiguration 的扩展方法,nuget 的源代码也没有它: https://github.com/microsoft/ApplicationInsights-aspnetcore/blob/develop/NETCORE/src/Microsoft.ApplicationInsights.WorkerService/ApplicationInsightsExtensions.cs

那么如何在 HostBuilder 上获取 TelemetryConfiguration 或 TelemetryProcessorChainBuilder?目前它看起来像这样:

Host.CreateDefaultBuilder(args)
                .ConfigureServices((hostContext, services) =>
                {
                    services.AddHostedService<Worker>();
                    services.AddApplicationInsightsTelemetryWorkerService();
                });

【问题讨论】:

    标签: azure .net-core azure-application-insights


    【解决方案1】:

    你应该像下面这样使用它:

    Host.CreateDefaultBuilder(args)
                    .ConfigureServices((hostContext, services) =>
                    {
                        services.AddHostedService<Worker>();
    
                        services.Configure<TelemetryConfiguration>((config)=>
                        {
                            var builder = config.DefaultTelemetrySink.TelemetryProcessorChainBuilder;
    
                            builder.UseAdaptiveSampling(maxTelemetryItemsPerSecond: 5);
                            builder.Build();
                        }                    
                        );
    
                       // Your other code
                    });
    

    【讨论】:

    • 我希望某处有可用的工作样本。我浪费了很多时间试图让它与 App Insights 配置的特性一起工作:(
    • 获取异常:应用程序启动异常 System.Exception:无法为“Omro”类型的“Configure”方法的参数“telemetryConfiguration”解析“Microsoft.ApplicationInsights.Extensibility.TelemetryConfiguration”类型的服务。 Sms.Infrastructure.MediasatAdapter.Api.Startup'。 ---> System.InvalidOperationException: 没有注册类型“Microsoft.ApplicationInsights.Extensibility.TelemetryConfiguration”的服务。
    • @AdrianNasui,您能否在application insights github 中提出这个问题。我不再在团队中工作,对此感到抱歉。
    猜你喜欢
    • 2019-12-21
    • 1970-01-01
    • 1970-01-01
    • 2018-11-16
    • 1970-01-01
    • 2019-06-11
    • 2019-07-05
    • 1970-01-01
    • 2019-03-11
    相关资源
    最近更新 更多