public static void DumpSystemInfo() { OperatingSystemInfo osInfo = OperatingSystemInfo.GetOperatingSystemInfo(); Console.WriteLine(""); Console.WriteLine("---------------------------------"); Console.WriteLine($"OS Name: {osInfo.Name}"); Console.WriteLine($"Architecture: {osInfo.Architecture}"); Console.WriteLine($"dotnet RuntimeInformation.FrameworkDescription: {RuntimeInformation.FrameworkDescription}"); Console.WriteLine(""); // CPUs int idx = 0; foreach (CPUInfo cpuInfo in osInfo.Hardware.CPUs) { Console.WriteLine($"CPU {idx}"); Console.WriteLine($" Brand: {cpuInfo.Brand}"); Console.WriteLine($" Name: {cpuInfo.Name}"); Console.WriteLine($" Architecture: {cpuInfo.Architecture}"); Console.WriteLine($" Cores: {cpuInfo.Cores}"); Console.WriteLine($" Frequency: {cpuInfo.Frequency}"); idx++; } RAMInfo ramInfo = osInfo.Hardware.RAM; Console.WriteLine(""); Console.WriteLine($"RAM {ramInfo.Total:#,###} kilobytes"); Console.WriteLine("---------------------------------"); Console.WriteLine(""); }
public static void DumpSystemInfo() { OperatingSystemInfo osInfo = OperatingSystemInfo.GetOperatingSystemInfo(); Console.WriteLine(""); Console.WriteLine("---------------------------------"); Console.WriteLine($"OS Name: {osInfo.Name}"); Console.WriteLine($"Architecture: {osInfo.Architecture}"); Console.WriteLine($".NET Framework: {GetCurrentFrameworkVersionBasedOnWindowsRegistry()} (CLR {osInfo.FrameworkVersion})"); Console.WriteLine(""); // CPUs int idx = 0; foreach (CPUInfo cpuInfo in osInfo.Hardware.CPUs) { Console.WriteLine($"CPU {idx}"); Console.WriteLine($" Brand: {cpuInfo.Brand}"); Console.WriteLine($" Name: {cpuInfo.Name}"); Console.WriteLine($" Architecture: {cpuInfo.Architecture}"); Console.WriteLine($" Cores: {cpuInfo.Cores}"); Console.WriteLine($" Frequency: {cpuInfo.Frequency}"); idx++; } RAMInfo ramInfo = osInfo.Hardware.RAM; Console.WriteLine(""); Console.WriteLine($"RAM {ramInfo.Total:#,###} kilobytes"); Console.WriteLine("---------------------------------"); Console.WriteLine(""); }
private static RAMInfo GetWindowsMetrics() { var output = ""; var info = new ProcessStartInfo(); info.FileName = "wmic"; info.Arguments = "OS get FreePhysicalMemory,TotalVisibleMemorySize /Value"; info.RedirectStandardOutput = true; using (var process = Process.Start(info)) { output = process.StandardOutput.ReadToEnd(); } var lines = output.Trim().Split("\n"); var freeMemoryParts = lines[0].Split("=", StringSplitOptions.RemoveEmptyEntries); var totalMemoryParts = lines[1].Split("=", StringSplitOptions.RemoveEmptyEntries); var metrics = new RAMInfo(); metrics.TotalMb = (int)Math.Round(double.Parse(totalMemoryParts[1]) / 1024, 0); metrics.FreeMb = (int)Math.Round(double.Parse(freeMemoryParts[1]) / 1024, 0); return(metrics); }
private static RAMInfo GetUnixMetrics() { var output = ""; var info = new ProcessStartInfo("free -m"); info.FileName = "/bin/bash"; info.Arguments = "-c \"free -m\""; info.RedirectStandardOutput = true; using (var process = Process.Start(info)) { output = process.StandardOutput.ReadToEnd(); Console.WriteLine(output); } var lines = output.Split("\n"); var memory = lines[1].Split(" ", StringSplitOptions.RemoveEmptyEntries); var metrics = new RAMInfo(); metrics.TotalMb = (int)double.Parse(memory[1]); metrics.FreeMb = (int)double.Parse(memory[3]); return(metrics); }
private static async void SendReportLoop() { while (true) { // собираем данные // диски List <DriveInfo> drives = DriveInfo.GetDrives().Where(d => d.IsReady).ToList(); var totalDiskSpace = drives.Sum(d => d.TotalSize / 1024 / 1024); var freeDiskSpace = drives.Sum(d => d.AvailableFreeSpace / 1024 / 1024); var disksInfo = new DisksInfo { TotalMb = (int)totalDiskSpace, FreeMb = (int)freeDiskSpace }; // ОЗУ var ramInfo = new RAMInfo(); if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX) || RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) { ramInfo = GetUnixMetrics(); } else { ramInfo = GetWindowsMetrics(); } // ЦП var cpuCounter = new PerformanceCounter("Processor", "% Processor Time", "_Total", true); var value = cpuCounter.NextValue(); if (Math.Abs(value) <= 0.00) { value = cpuCounter.NextValue(); } var cpuInfo = new CPUInfo { UsedPercent = (int)value }; // подготавливаем данные var data = new SystemReportDto { DisksInfo = disksInfo, RAMInfo = ramInfo, CPUInfo = cpuInfo }; // отправляем данные на сервер Console.WriteLine($"{DateTime.Now}: отправка данных на сервер."); if (_HubConnection.State != HubConnectionState.Connected) { await _HubConnection.StartAsync(); } await _HubConnection.SendAsync("SendSystemReport", data); Thread.Sleep(_delaySeconds * 1000); } }
private void Form1_Load(object sender, EventArgs e) { osInfo = new OSInfo(); ramInfo = new RAMInfo(); videoInfo = new VideoInfo(); processorInfo = new ProcessorInfo(); processManager = new ProcessManager(); processManager.InitStopStartProcess(); processManager.NotifyStopProcess += DeleteProcess; processManager.NotifyStartNewProcess += StartNewProcess; InitCharts(); RefreshMemory(); InitDataTable(); UpdateChartRAM(); TakeInfoAboutOS(); TakeInfoAboutRAM(); UpdateChartProcessor(); TakeInfoAboutProcessor(); TakeInfoAboutVideoAdapter(); }
/// <summary> /// добавляет в базу новый отчёт, либо обновляет уже имеющийся /// </summary> /// <param name="address">IP - адрес</param> /// <param name="ramInfo">информация об ОЗУ</param> /// <param name="cpuInfo">информация о ЦП</param> /// <param name="disksInfo">информация о дисках</param> public async Task <bool> StoreSystemReport(string address, RAMInfo ramInfo, CPUInfo cpuInfo, DisksInfo disksInfo) { var result = false; if (string.IsNullOrEmpty(address) || ramInfo == null || cpuInfo == null || disksInfo == null) { return(false); } var id = 0; using (NpgsqlConnection conn = GetConnection(_conn)) { using (var cmd = new NpgsqlCommand(GetIdQuery(), conn)) { cmd.Parameters.AddWithValue("p_address", address); try // ищем id { await conn.OpenAsync(); var searchResult = await cmd.ExecuteReaderAsync(); if (searchResult.HasRows) { await searchResult.ReadAsync(); id = (int)searchResult[0]; } await conn.CloseAsync(); } catch (Exception e) { return(false); } cmd.Parameters.AddWithValue("p_total_ram", ramInfo.TotalMb); cmd.Parameters.AddWithValue("p_free_ram", ramInfo.FreeMb); cmd.Parameters.AddWithValue("p_cpu_load", cpuInfo.UsedPercent); cmd.Parameters.AddWithValue("p_free_disks", disksInfo.FreeMb); cmd.Parameters.AddWithValue("p_total_disks", disksInfo.TotalMb); try { if (id > 0) // если уже есть в базе, то обновляем { cmd.Parameters.AddWithValue("p_id", id); cmd.CommandText = GetUpdateSystemReportQuery(); await conn.OpenAsync(); await cmd.ExecuteNonQueryAsync(); await conn.CloseAsync(); } else // иначе добавляем в бд { cmd.CommandText = GetInsertSystemReportQuery(); await conn.OpenAsync(); await cmd.ExecuteNonQueryAsync(); await conn.CloseAsync(); } result = true; } catch (Exception e) { result = false; } } await conn.CloseAsync(); } return(result); }