2017-03-01 3 views
0

Ich führe eine .net-Anwendung in einem Windows-Docker-Container aus. Wenn meine Anwendung versucht, mit diesem Code perf Zähler zu erstellen:Windows Perf-Indikatoren auf Docker-Containern: System.InvalidOperationException: Kategorie existiert nicht

_counter = new PerformanceCounter(categoryName, counterName, InstanceName, true); 
//My categoryname is Processor , CounterName is % Processor Time & instancename is _Total. 

Ich erhalte diese Ausnahme:

Unbehandelte Ausnahme: System.InvalidOperationException: Kategorie gibt es nicht. bei System.Diagnostics.PerformanceCounterLib.CounterExists (String-Maschine, String Kategorie, String-Zähler) bei System.Diagnostics.PerformanceCounter.InitializeImpl() bei System.Diagnostics.PerformanceCounter..ctor (String category, String counter, String instanceName, Boolean readonly)

Dies ist das Basisbild meines Behälter: https://hub.docker.com/r/microsoft/dotnet-framework/

es hat Windows Server Core als Teil davon.

Schätzen Sie jede Hilfe bei der Behebung dieses Problems. Ich bin mir nicht sicher, ob dies nur einige Windows-Einstellungen sind, die ich hier ändern muss, oder ist es wegen des Docker & Windows oder mein Code nicht in der Lage, auf die Kategorien der Leistungsindikatoren zuzugreifen.

Es funktioniert einwandfrei, wenn ich es in meiner lokalen Maschine anstelle eines Containers laufen lasse.

+0

ich einige Dinge herausgefunden: 1. Es bedeutet tatsächlich, dass die Kategorie Prozessor in meinem O aus irgendeinem Grunde nicht vorhanden ist. Als ich versuchte, alle Leistungskategorien nach diesem Code aufzulisten: PerformanceCounterCategory [] categories = PerformanceCounterCategory.GetCategories(); foreach (Kategorie "PerformanceCounterCategory" in den Kategorien) { Console.WriteLine ("Kategoriename: {0}", category.CategoryName); } Es gab keine Kategorie namens Prozessor. Warum fehlt es in Windows Server 2016? – ashok

Antwort

0

Soweit ich weiß, sollten diese funktionieren.

Können Sie versuchen, diese Zähler mit TypePerf abzufragen? Ich sehe sie auf meinem System, wenn ich sie auf dem Windows Server Core Base-Image abfrage. Zerbrechen sie den Container, den Sie gebaut haben?

docker run microsoft/windowsservercore TypePerf "\Processor(*)\% Processor Time"

Ist die CPU-Auslastung zeigen: "(PDH-CSV 4.0)","\\DF4E02B31BBD\Processor(0)\% Processor Time","\\DF4E02B31BBD\Processor(1)\% Processor Time","\\DF4E02B31BB D\Processor(_Total)\% Processor Time" "04/25/2017 09:52:34.412","50.536535","38.170669","44.353602" "04/25/2017 09:52:35.423","19.583557","2.572386","11.077971" "04/25/2017 09:52:36.425","39.207660","50.119106","44.663383" "04/25/2017 09:52:37.453","31.606146","43.765053","37.685600"

Verwandte Themen