2017-02-02 10 views
1

クラスタ化されたMSMQのパフォーマンスカウンタを読み取ろうとしました。私はこの値を読み取る方法を見つけるためにいくつかの記事を見てきました。そして、カウンタ値を読み取るためには、 "NetNameForPerfCounters"という名前のRegistryKeyを作成する必要があるというソリューションを見てきました。これはHKEY_LOCAL_MACHINE \ SOFTWARE \ MICROSOFT \ MSMQ \ PARAMETER \ NetNameForPerfCountersの下に作成され、値として私のクラスタのネットワーク名が指定されています。しかし、無駄なことは何も読んでいない。クラスタ化されたMSMQのパフォーマンスカウンタを取得

var category = new PerformanceCounterCategory("MSMQ Queue", "<Clustered IP>") 
Console.WriteLine(category.GetInstanceNames().Count().ToString()); 

これは常に0

答えて

0

として、カウントを返すあなたは、IPアドレスがmachineNameとして働くだろうと思うだろうが、私はそれがないわかりません。実際のマシン名("."、または"acomputername")を使用しても動作しますが、IPアドレスを使用すると失敗します。

PowerShellでも同じことが分かります。

Get-Counter -Counter (Get-Counter -ListSet "MSMQ Queue" -Computer 127.0.0.1).PathsWithInstances 

しかし-computer "machinename"と同じ行には成功し、私のキューを示していますIPを使用することはできません。

大規模なネットワークの場合、これは@"domainname\machinename"が必要だと思います。

https://msdn.microsoft.com/en-us/powershell/reference/5.1/microsoft.powershell.diagnostics/get-counter

+0

はい、あなたのPowerShellスクリプトは、クラスタの両方の「IP」&ネットワーク名と協力していますが、私は、「C#のでPerformanceCounter」これを達成したい – Brijesh

+0

だから、(特別な権限を?)PowerShellの作品からカウンターを取得しかし、 ""の代わりにクラスタのWindows名を使用しても、C#コードでは機能しません。 –

+0

C#コードはコマンドラインのexeですか?それがWCFまたはAsp.Netでホストされている場合、IISアカウントの下で実行されるため、アクセス権がほとんどなくなり、失敗する可能性があります。 –

関連する問題