クラスター全体でパフォーマンス監視を利用できるようにする方法を見つけようとしていますが、クラスターのパフォーマンス カウンターにアクセスする方法以外に、検索中に何も見つからないようです。
状況は次のとおりです。これまで、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();
ただし、(MachineName の代わりに) MSMQ クラスターのクライアント アクセス ポイント名を使用して同じことを実行しようとするとSystem.Management.ManagementException: Invalid Class
、パフォーマンス カウンターが使用できないことを示す が表示されます。方法がわからないため、クラスタを介してそれらを使用できるようにするために特別なことは何もしていないため、これは理にかなっています。
したがって、どのような方向性でも大歓迎です。私はこれについて何週間も頭を悩ませてきました。
EDIT : さて、もう少し調べてみました。クラスターに直接アクセスすると、テーブル/クラスが存在しますが、テーブルには行がまったくありません。
NetNameForPerfCountersレジストリ キーは見つかりましたが、アクティブ ノードで実行されている MSMQ インスタンスが 1 つしかなく、関連するすべてのサーバーが Windows Server 2008 (R2 だと思います) であるため、状況に適合していないように見えます。
それらを NetNameForPerfCounters reg キーに入れたいと思っていますが、どこに行くかを教えてくれるリソースが見つかりません。クライアント アクセス ポイントのレジストリに移動しますか (クライアント アクセス ポイントに regedit を接続できるため)。それはクラスターに行きますか?個々のマシンで?クライアント マシンで?(テストするためだけにどこにでも置くことができると思います。)
EDIT2 : NetNameForPerfCountersを試しましたが、うまくいきませんでした。実際に Microsoft のチームに問題を再現してもらったので、プレミア サポート ケースをオープンしました。これはバグとして製品チームに送られるはずです。連絡があり次第、結果を掲載します。