2017-02-02 2 views
1

Ich habe versucht, Leistungsindikator eines Clustered MSMQ zu lesen. Ich habe mehrere Post durchgelesen, um einen Weg zu finden, diesen Wert zu lesen, und ich habe eine Lösung gesehen, die besagt, dass man einen RegistryKey namens "NetNameForPerfCounters" erstellen muss, um Zählerwert zu lesen. Dies ist unter HKEY_LOCAL_MACHINE \ SOFTWARE \ MICROSOFT \ MSMQ \ PARAMETER \ NetNameForPerfCounters zu erstellen und als Wert habe ich den Netzwerknamen meines Clusters angegeben. Aber vergebens liest es nichts.Get Leistungsindikator für Clustered MSMQ

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

Diese Rückkehr immer zählen als 0.

Antwort

0

Man sollte meinen, dass die IP-Adresse würde als machineName arbeiten, aber ich bin nicht sicher, ob es funktioniert. Ich finde, dass die Verwendung eines tatsächlichen Computernamens ("." oder "acomputername") funktioniert, aber die Verwendung einer IP-Adresse schlägt fehl.

Ich finde das gleiche in PowerShell; IP fehl:

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

Aber die gleiche Linie mit -computer "machinename" erfolgreich und zeigt meine Warteschlangen.

Für größere Netzwerke, ich denke, das bedeutet, Sie benötigen @"domainname\machinename".

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

+0

Ja Ihr Powershell-Skript sowohl mit „IP“ arbeitet und Netzwerknamen des Clusters, aber ich möchte diese „Performance mit C#“ erreichen – Brijesh

+0

So bekommen die Zähler von Powershell-Werken (ohne besondere Berechtigungen?) , aber selbst wenn Sie Windows-Name des Clusters anstelle von "" verwenden, funktioniert es nicht in C# -Code? –

+0

Ist der C# -Code eine Befehlszeile? Wenn es in WCF oder Asp.Net gehostet wird, dann wird es unter einem IIS-Konto mit fast keinen Berechtigungen ausgeführt, so dass –