From 2eef712025361b94c05803103f034de241c86571 Mon Sep 17 00:00:00 2001 From: Niko Ehrenfeuchter <nikolaus.ehrenfeuchter@unibas.ch> Date: Fri, 9 Mar 2018 22:23:30 +0100 Subject: [PATCH] Add a local WMI query method to ATxDiagnostics. --- ATxDiagnostics/ATxDiagnostics.cs | 49 +++++++++++++++++++++++++++- ATxDiagnostics/ATxDiagnostics.csproj | 1 + 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/ATxDiagnostics/ATxDiagnostics.cs b/ATxDiagnostics/ATxDiagnostics.cs index 7f1c725..0d10ae8 100644 --- a/ATxDiagnostics/ATxDiagnostics.cs +++ b/ATxDiagnostics/ATxDiagnostics.cs @@ -1,4 +1,5 @@ using System; +using System.Management; using ATxCommon; using NLog; using NLog.Config; @@ -15,13 +16,59 @@ namespace ATxDiagnostics var logTargetConsole = new ConsoleTarget { Name = "console", Header = "test-header", + Layout = @"${date:format=yyyy-MM-dd HH\:mm\:ss} [${level}] (${logger}) ${message}", }; logConfig.AddTarget(logTargetConsole); var logRuleConsole = new LoggingRule("*", LogLevel.Trace, logTargetConsole); logConfig.LoggingRules.Add(logRuleConsole); LogManager.Configuration = logConfig; - Console.WriteLine(SystemChecks.WmiSummary()); + Log.Debug(Conv.BytesToString(SystemChecks.GetFreeDriveSpace("C:"))); + /* + Log.Debug(SystemChecks.GetCpuUsage()); + Log.Debug(SystemChecks.GetCpuUsage()); + Log.Debug(SystemChecks.GetCpuUsage()); + Log.Debug(SystemChecks.GetCpuUsage()); + Log.Debug(SystemChecks.GetCpuUsage()); + Log.Debug(SystemChecks.GetCpuUsage()); + */ + Log.Debug(QueryCpuLoad()); + } + + private static int QueryCpuLoad() { + Log.Trace("Querying WMI for CPU load..."); + var searcher = new ManagementObjectSearcher( + "root\\CIMV2", + "select Name, PercentProcessorTime from Win32_PerfFormattedData_PerfOS_Processor", + new EnumerationOptions { + Timeout = new TimeSpan(0, 0, 10), + ReturnImmediately = false, + } + ); + Int32 usageInt32 = -1; + + + var managementObjects = searcher.Get(); + Log.Trace("WMI query returned {0} objects.", managementObjects.Count); + foreach (var mo in managementObjects) { + var obj = (ManagementObject)mo; + var usage = obj["PercentProcessorTime"]; + var name = obj["Name"]; + + usageInt32 = Convert.ToInt32(usage); + Log.Trace("CPU usage {1}: {0}", usageInt32, name); + + //if (name.ToString().Equals("_Total")) { + // usageInt32 = Convert.ToInt32(usage); + // Log.Trace("CPU usage: {0}", usageInt32); + //} + + } + + managementObjects.Dispose(); + searcher.Dispose(); + + return usageInt32; } } } diff --git a/ATxDiagnostics/ATxDiagnostics.csproj b/ATxDiagnostics/ATxDiagnostics.csproj index d234b10..f38bdad 100644 --- a/ATxDiagnostics/ATxDiagnostics.csproj +++ b/ATxDiagnostics/ATxDiagnostics.csproj @@ -44,6 +44,7 @@ <ItemGroup> <Reference Include="System" /> <Reference Include="System.Core" /> + <Reference Include="System.Management" /> <Reference Include="System.Xml.Linq" /> <Reference Include="System.Data.DataSetExtensions" /> <Reference Include="Microsoft.CSharp" /> -- GitLab