Я создаю некоторые пользовательские счетчики производительности для приложения. Я написал простой инструмент C# для создания категорий и счетчиков. Например, нижеприведенный фрагмент кода - это в основном то, что я запускаю. Затем я запускаю отдельное приложение, которое бесконечно обновляет исходное значение счетчика. Пока это работает, счетчик и фиктивный экземпляр отображаются локально в perfmon.Почему perfmon не может видеть экземпляры моего пользовательского счетчика производительности?
Проблема, с которой я сталкиваюсь, заключается в том, что система мониторинга, которую мы используем, не может видеть экземпляры множителя нескольких экземпляров, которые я создал при удаленном просмотре с другого сервера. Когда вы используете perfmon для просмотра счетчиков, я вижу категорию и счетчики, но окно экземпляров выделено серым цветом, и я даже не могу выбрать «Все экземпляры», и я не могу нажать «Добавить». Использование других методов доступа, таких как [typeperf][1]
, вызывает аналогичные проблемы.
Я не уверен, что это проблема с сервером или кодом. Это только воспроизводится в производственной среде, где мне это нужно. На моем рабочем столе и серверах разработки он отлично работает. Я локальный администратор на всех серверах.
CounterCreationDataCollection collection = new CounterCreationDataCollection();
var category_name = "My Application";
var counter_name = "My counter name";
CounterCreationData ccd = new CounterCreationData();
ccd.CounterType = PerformanceCounterType.RateOfCountsPerSecond64;
ccd.CounterName = counter_name;
ccd.CounterHelp = counter_name;
collection.Add(ccd);
PerformanceCounterCategory.Create(category_name, category_name, PerformanceCounterCategoryType.MultiInstance, collection);
Затем в отдельном приложении, я запускаю это для создания фиктивных данных экземпляра:
var pc = new PerformanceCounter(category_name, counter_name, instance_name, false);
while (true) {
pc.RawValue = 0;
Thread.Sleep(1000);
}
Какая версия .Net это? –
Прошло некоторое время, но я уверен, что в то время я использовал .NET 2.0 или 3.5. – spoulson
Получили ли вы ответ? Мне интересно, если вы создали собственный класс Counter Counter, и он не был сериализуемым? –