Почему я вижу большой всплеск приема данных из данных счетчиков производительности?

Просматривая свои отчеты по управлению затратами для Application Insights, я заметил большой всплеск приема данных, связанных со счетчиками производительности.

Отчетность по управлению затратами

Ссылка на увеличенное изображение

Однако я не вижу какой-либо существенной корреляции в количестве всплесков запросов за тот же период.

Отчет о показателях запроса

Ссылка на увеличенное изображение

Что я могу сделать, чтобы понять основную причину этой проблемы?

Дополнительная информация

После некоторой отладки я смог разобраться в этом.

Использование резко возросло 7 и 8 сентября, а затем снизилось 9 и 10 сентября.

Изменение, которое я сделал 6 сентября, заключалось в обновлении Microsoft.ApplicationInsights.AspNetCore с версии 2.6.1 до версии 2.7.1. Версия 2.7.1 имеет встроенную интеграцию с ILogger.

Итак, я считаю, что произошло то, что после развертывания обновленной версии Microsoft.ApplicationInsights.AspNetCore у меня, возможно, была слишком высокая степень подробности ведения журнала для данных телеметрии счетчика производительности, и я впоследствии изменил ее через пару дней, когда заметил Это.

Надеюсь, это поможет кому-то еще, кто может столкнуться с этой проблемой!


person Darren Neimke    schedule 11.09.2019    source источник


Ответы (2)


Теперь существует более чистый способ отключения PerformanceCounterModule (и других модулей, которые вызывают чрезмерное / ненужное ведение журнала);

services.AddApplicationInsightsTelemetry(options =>
{
    options.EnablePerformanceCounterCollectionModule = false;
    options.InstrumentationKey = configuration["ApplicationInsights:InstrumentationKey"];
});
person alv    schedule 31.12.2020

В Application Insights 2.7.1 включен захват ILogger по умолчанию, но он фиксирует только предупреждения или вышеперечисленные сообщения журнала. Поэтому, если ваше приложение не создает много журналов предупреждений или журналов Ilogger более высокого уровня, это не должно привести к значительному всплеску использования. Это поведение можно изменить, чтобы дополнительно отфильтровать журналы, если сообщается слишком много журналов. https://docs.microsoft.com/en-us/azure/azure-monitor/app/ilogger#control-logging-level Из 1-го скриншота, которым вы поделились, похоже, что счетчик производительности - единственный тип, который увеличился - интеграция ilogger не может объяснить этот всплеск , поскольку он сообщает только журналы.

Более логичным объяснением является сам модуль PerformanceCounter, который НЕ поддерживался в версиях ранее, чем 2.7.1. Вы можете удалить коллекцию счетчиков производительности с помощью следующего фрагмента метода ConfigureServices () в startup.cs

using 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);
    }
}
person cijothomas    schedule 16.09.2019
comment
Спасибо, @cijothomas, то, что вы сказали, имеет смысл. Наверняка с этой проблемой столкнутся все, кто обновится до 2.7.1? Есть ли параметр конфигурации, который можно использовать для управления модулем счетчика производительности? - person Darren Neimke; 18.09.2019
comment
В моем ответе выше показано, как удалить модуль performancecountermodule. - person cijothomas; 18.09.2019
comment
Я не знаю, как вы видите огромный скачок объема данных от счетчика производительности, если у вас нет достаточно большого количества серверов. Поскольку счетчики производительности отправляют счетчики только раз в минуту, а это обычно очень маленький общий объем. Но счетчики производительности генерируются из каждого экземпляра, поэтому, если количество экземпляров велико, все они могут выдавать счетчики каждую минуту. - person cijothomas; 18.09.2019
comment
Спасибо за помощь @cijothomas. В моем случае данные счетчика производительности поступают из одной службы Azure AppService небольшого объема. Кажется странным. Я мог бы упомянуть об этом на GitHub как о проблеме. - person Darren Neimke; 21.09.2019