2017-02-02 9 views
1

Я пытался читать счетчик производительности кластерного MSMQ. Я просмотрел несколько сообщений, чтобы узнать способ прочитать это значение, и я видел решение, в котором говорится, что для чтения значения счетчика необходимо создать RegistryKey с именем «NetNameForPerfCounters». Это должно быть создано в 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 работ (без специальных разрешений?) , но даже если вы используете имя окна кластера вместо «», оно не работает в коде C#? –

+0

Является ли код C# командной строки exe? Если он размещен в WCF или Asp.Net, он будет запускаться под учетной записью IIS с почти никакими разрешениями, чтобы сбой был –