don't send any systeminfo to clients

This commit is contained in:
Stanley Dimant
2022-08-05 12:48:26 +02:00
parent 95586549e5
commit 5adcb7421b

View File

@@ -1,7 +1,4 @@
using System; using System;
using System.Diagnostics;
using System.Linq;
using System.Net.NetworkInformation;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using MareSynchronos.API; using MareSynchronos.API;
@@ -30,73 +27,20 @@ public class SystemInfoService : IHostedService, IDisposable
{ {
_logger.LogInformation("System Info Service started"); _logger.LogInformation("System Info Service started");
_timer = new Timer(CalculateCpuUsage, null, TimeSpan.Zero, TimeSpan.FromSeconds(5)); _timer = new Timer(PushSystemInfo, null, TimeSpan.Zero, TimeSpan.FromSeconds(5));
return Task.CompletedTask; return Task.CompletedTask;
} }
private void CalculateCpuUsage(object state) private void PushSystemInfo(object state)
{ {
var startTime = DateTime.UtcNow;
double startCpuUsage = 0;
foreach (var process in Process.GetProcesses())
{
try
{
startCpuUsage += process.TotalProcessorTime.TotalMilliseconds;
}
catch { }
}
var networkOut = NetworkInterface.GetAllNetworkInterfaces().Sum(n => n.GetIPStatistics().BytesSent);
var networkIn = NetworkInterface.GetAllNetworkInterfaces().Sum(n => n.GetIPStatistics().BytesReceived);
var stopWatch = new Stopwatch();
stopWatch.Start();
Thread.Sleep(TimeSpan.FromSeconds(5));
stopWatch.Stop();
var endTime = DateTime.UtcNow;
double endCpuUsage = 0;
long ramUsage = 0;
foreach (var process in Process.GetProcesses())
{
try
{
endCpuUsage += process.TotalProcessorTime.TotalMilliseconds;
ramUsage += process.WorkingSet64;
}
catch { }
}
var endNetworkOut = NetworkInterface.GetAllNetworkInterfaces().Sum(n => n.GetIPStatistics().BytesSent);
var endNetworkIn = NetworkInterface.GetAllNetworkInterfaces().Sum(n => n.GetIPStatistics().BytesReceived);
var totalMsPassed = (endTime - startTime).TotalMilliseconds;
var totalSPassed = (endTime - startTime).TotalSeconds;
var cpuUsedMs = (endCpuUsage - startCpuUsage);
var cpuUsageTotal = cpuUsedMs / (Environment.ProcessorCount * totalMsPassed);
var bytesSent = endNetworkOut - networkOut;
var bytesReceived = endNetworkIn - networkIn;
var usedRAM = Process.GetCurrentProcess().WorkingSet64 + Process.GetProcessesByName("sqlservr").FirstOrDefault()?.WorkingSet64 ?? 0;
var cpuUsage = cpuUsageTotal * 100;
var totalNetworkOut = bytesSent / totalSPassed;
var totalNetworkIn = bytesReceived / totalSPassed;
MareMetrics.NetworkIn.Set(totalNetworkIn);
MareMetrics.NetworkOut.Set(totalNetworkOut);
MareMetrics.CPUUsage.Set(cpuUsage);
MareMetrics.RAMUsage.Set(usedRAM);
SystemInfoDto = new SystemInfoDto() SystemInfoDto = new SystemInfoDto()
{ {
CacheUsage = 0, CacheUsage = 0,
CpuUsage = cpuUsage, CpuUsage = 0,
RAMUsage = 0, RAMUsage = 0,
NetworkIn = totalNetworkIn, NetworkIn = 0,
NetworkOut = totalNetworkOut, NetworkOut = 0,
OnlineUsers = (int)MareMetrics.AuthorizedConnections.Value, OnlineUsers = (int)MareMetrics.AuthorizedConnections.Value,
UploadedFiles = 0 UploadedFiles = 0
}; };