0

通过查看我的 Application Insights 成本管理报告,我注意到与性能计数器相关的数据摄取量激增。

成本管理报告

链接到更大的图像

但是,我没有看到同一时期的请求数量激增有任何显着相关性。

请求指标报告

链接到更大的图像

我该怎么做才能了解此问题的根本原因?

附加信息

经过一些调试,我能够深入了解这一点。

使用量在 9 月 7 日和 9 月 8 日飙升,然后在 9 日和 10 日逐渐减少。

我在 9 月 6 日所做的更改是将 Microsoft.ApplicationInsights.AspNetCore 从版本 2.6.1 升级到版本 2.7.1。2.7.1 版已集成 ILogger。

所以,我相信发生的事情是,在部署了升级版的 Microsoft.ApplicationInsights.AspNetCore 之后,对于性能计数器遥测数据,我可能已经将 Logging 详细程度调得太高,几天后当我注意到时更改了它它。

我希望这可以帮助可能遇到此问题的其他人!

4

2 回答 2

1

Application Insights 2.7.1 默认启用了捕获的ILogger,但它只捕获Warning 或以上的日志消息。因此,除非您的应用程序正在生成大量警告或更高级别的 Ilogger 日志,否则这不会导致使用量激增。如果报告的日志过多,可以更改此行为以进一步过滤日志。 https://docs.microsoft.com/en-us/azure/azure-monitor/app/ilogger#control-logging-level 从您分享的第一个屏幕截图中,看起来性能计数器是唯一飙升的类型 - ilogger 集成无法解释这个峰值,因为它只报告日志。

更合乎逻辑的解释是 PerformanceCounter 模块本身,它在 2.7.1 之前的版本中不受支持。您可以使用 startup.cs 中的 ConfigureServices() 方法中的以下片段删除性能计数器集合

使用 Microsoft.ApplicationInsights.DependencyCollector;使用 Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector;

public void ConfigureServices(IServiceCollection services)
{
    services.AddApplicationInsightsTelemetry();

    // The following removes PerformanceCollectorModule to disable perf-counter collection.
    var performanceCounterService = services.FirstOrDefault<ServiceDescriptor>(t => t.ImplementationType == typeof(PerformanceCollectorModule));
    if (performanceCounterService != null)
    {
     services.Remove(performanceCounterService);
    }
}
于 2019-09-16T16:08:50.420 回答
1

现在有一种更简洁的方法来实现禁用 PerformanceCounterModule(以及导致过多/不需要日志记录的其他模块);

services.AddApplicationInsightsTelemetry(options =>
{
    options.EnablePerformanceCounterCollectionModule = false;
    options.InstrumentationKey = configuration["ApplicationInsights:InstrumentationKey"];
});
于 2020-12-31T17:36:33.823 回答