通过群集访问性能计数器

时间:2014-11-25 17:30:32

标签: performance msmq windows-clustering

我正在尝试找到如何通过群集进行性能监控,除了如何访问群集的性能计数器之外,我找不到在搜索时找到任何内容。

情况是这样的:到目前为止,我们已经在单个服务器上设置了MSMQ,并且我们已经访问了队列计数(用于健康检查),如下所示:

ManagementScope scope = new ManagementScope(@"\\MachineName\root\CIMv2");
scope.Connect();

ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_PerfFormattedData_msmq_MSMQQueue WHERE Name = 'MachineName\private$\QueueName'");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);

ulong? count = (from ManagementObject queue in searcher.Get()
                select (ulong?)queue.GetPropertyValue("MessagesInQueue")).FirstOrDefault();

但是,当我尝试通过MSMQ群集的客户端访问点名称(代替MachineName)执行相同操作时,我得到System.Management.ManagementException: Invalid Classfrom what I can tell表示性能计数器不可用。这是有道理的,因为我们没有做任何特别的事情来让它们在集群中可用,因为我们不知道如何。

所以,任何方向都会受到高度赞赏。几个星期以来,我一直在为此而奋斗。

编辑:好的,我们已经多了一点,如果我们直接进入群集,表/类就存在了,但表中没有任何行。

找到NetNameForPerfCounters注册表项,但它看起来不适合我们的情况,因为我们在主动节点上只运行一个MSMQ实例,所涉及的所有服务器都是Windows Server 2008(R2我想)。

我愿意让他们放入NetNameForPerfCounters reg键,但我找不到资源告诉我它的去向。它是否进入客户端访问点的注册表(因为您可以将regedit连接到客户端访问点)?它是否会进入集群?在个别机器上?在客户端机器上? (猜猜我们可以把它放在任何地方只是为了测试它。)

EDIT2 :我们尝试了NetNameForPerfCounters,但它无效。我们实际上有一个团队在微软复制我们的问题,所以我们已经开了一个重要的支持案例,它应该作为一个bug去产品团队。当我收到回复时会发布结果。

0 个答案:

没有答案