2017-02-02 30 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中找到了相同的內容;使用IP失敗:

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

但隨着-computer "machinename"同一行成功,顯示了我的隊列。

對於較大的網絡,我認爲這意味着您需要@"domainname\machinename"

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

+0

是你的PowerShell腳本正在與這兩個「IP」集羣和網絡名稱,但我想要實現這個「的PerformanceCounter使用C#」 – Brijesh

+0

所以正從PowerShell的作品計數器(沒有特殊權限?) ,但即使使用羣集的Windows名稱而不是「<羣集IP>」,它在C#代碼中也不起作用? –

+0

C#代碼是一個命令行exe嗎?如果它被託管在WCF或Asp.Net中,那麼它將在幾乎沒有權限的IIS帳戶下運行,因此將失敗 –