我正在为应用程序创建一些自定义性能计数器。我编写了一个简单的 C# 工具来创建类别和计数器。例如,下面的代码片段基本上就是我正在运行的。然后,我运行一个单独的应用程序,不断刷新计数器的原始值。在运行时,计数器和虚拟实例在 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);
}