Azure Application Insights - 不记录高流量情况下的所有请求

Azure Application Insights - Not recording all requests on high traffic situations

“Azure Application Insights”似乎没有记录高流量环境下的所有请求。

例如,当我们测试部署在“Azure Service Fabric”上的 .Net Core2.1 Web API 应用程序时,在 30 分钟内有 10,000 个请求,能够检索所有的详细信息使用日期时间戳作为筛选器通过 KQL 来自“Azure Application Insights”的请求,没问题。

当我们在 30 分钟内将负载增加到 100,000 个请求时,只有大约 5-10% 的请求被记录在“Azure Application Insights”上。

为什么“Azure Application Insights”在服务于大约 60 requests/second 的高流量环境中未命中 ingest/recording?

需要任何额外配置吗? (或)在一行代码下方获取 Azure Service Fabric 服务提供的请求的详细信息,这还不够吗?请澄清

已使用SDK,

Azure Service Fabric 上用于摄取的代码

  return new WebHostBuilder().UseHttpSys()
                                .ConfigureServices(
                                    services => services
                                        .AddSingleton<StatelessServiceContext>(serviceContext)
                                        .AddSingleton<ServiceFabricAppContext>(new ServiceFabricAppContext(){
                                                NodeName = serviceContext.NodeContext.NodeName,
                                                ServiceHostIP=serviceContext.NodeContext.IPAddressOrFQDN,
                                                ServiceHostPort=FabricRuntime.GetActivationContext().GetEndpoints()[0].Port
                                        } )
                                            .AddSingleton<ITelemetryInitializer>((serviceProvider) => FabricTelemetryInitializerExtension.CreateFabricTelemetryInitializer(serviceContext))) // Azure Service Fabric Telemetry Initializer
                                .UseContentRoot(Directory.GetCurrentDirectory())
                                   .UseApplicationInsights()
                                .UseStartup<Startup>()
                                .UseEnvironment(environment)
                                .UseServiceFabricIntegration(listener, ServiceFabricIntegrationOptions.None)
                                .UseUrls(url)
                                .Build();

带有项目计数的示例查询

未从 Azure 门户启用采样

您可以从代码中禁用自适应采样。请注意,我没有使用已弃用的 .UseApplicationInsights()(已在下方删除),而是在下方使用 .AddApplicationInsightsTelemetry

  return new WebHostBuilder().UseHttpSys()
                                .ConfigureServices(
                                    services => services
                                        .AddSingleton<StatelessServiceContext>(serviceContext)
                                        .AddSingleton<ServiceFabricAppContext>(new ServiceFabricAppContext(){
                                                NodeName = serviceContext.NodeContext.NodeName,
                                                ServiceHostIP=serviceContext.NodeContext.IPAddressOrFQDN,
                                                ServiceHostPort=FabricRuntime.GetActivationContext().GetEndpoints()[0].Port
                                        } )
                                       .AddSingleton<ITelemetryInitializer>((serviceProvider) => FabricTelemetryInitializerExtension.CreateFabricTelemetryInitializer(serviceContext)) // Azure Service Fabric Telemetry Initializer
                                       .AddApplicationInsightsTelemetry(o => 
                                            {
                                                o.EnableAdaptiveSampling = false; // disabling adaptive sampling
                                            }))
                                .UseContentRoot(Directory.GetCurrentDirectory())
                                .UseStartup<Startup>()
                                .UseEnvironment(environment)
                                .UseServiceFabricIntegration(listener, ServiceFabricIntegrationOptions.None)
                                .UseUrls(url)
                                .Build();

注意:我必须添加 nuget Microsoft.ApplicationInsights.AspNetCore

注意:在非常高容量的情况下,禁用采样可能会导致限制和过多的网络流量。所以你可能想看看固定速率采样而不是自适应采样。参考 Sampling in Application Insights.