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("");
        }
Exemple #2
0
        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);
            }
        }
Exemple #6
0
        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();
        }
Exemple #7
0
        /// <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);
        }