15

我试图找到如何在集群上进行性能监控,但在搜索时似乎找不到任何东西,除了如何访问集群的性能计数器

情况是这样的:到目前为止,我们已经在单个服务器上设置了 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 Class,据我所知,这表明性能计数器不可用。这是有道理的,因为我们没有做任何特别的事情来使它们在集群上可用,因为我们不知道如何。

因此,任何方向都将不胜感激。几个星期以来,我一直在为此头疼。

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

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

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

EDIT2:我们尝试了 NetNameForPerfCounters,但它不起作用。我们实际上已经在 Microsoft 有一个团队复制了我们的问题,所以我们已经打开了一个首要的支持案例,它应该作为一个 bug 提交给产品团队。当我收到回复时将发布结果。

4

0 回答 0