Merge pull request 'bug/sanitize-metrics' (#12) from bug/sanitize-metrics into development
All checks were successful
Development Build / build-and-test (push) Successful in 1m4s
Development Build / docker-build-and-push (push) Successful in 6m29s

Reviewed-on: #12
This commit is contained in:
2025-10-01 12:58:15 +02:00
2 changed files with 50 additions and 43 deletions

View File

@@ -1,23 +0,0 @@
# Read the Docs configuration file
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
# Required
version: 2
# Set the OS, Python version, and other tools you might need
build:
os: ubuntu-24.04
tools:
python: "3.13"
# Build documentation in the "docs/" directory with Sphinx
sphinx:
configuration: docs/conf.py
# Optionally, but recommended,
# declare the Python requirements required to build your documentation
# See https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html
# python:
# install:
# - requirements: docs/requirements.txt

View File

@@ -55,26 +55,26 @@ public class MetricDto
public double GPU_Temp { get; set; } // deg C
public double GPU_Vram_Size { get; set; } // GB
public double GPU_Vram_Size { get; set; } // Bytes
public double GPU_Vram_Usage { get; set; } // %
// RAM
public double RAM_Size { get; set; } // GB
public double RAM_Size { get; set; } // Bytes
public double RAM_Load { get; set; } // %
// Disks
public double DISK_Size { get; set; } // GB
public double DISK_Size { get; set; } // Bytes
public double DISK_Usage { get; set; } // %
public double DISK_Usage { get; set; } // Bytes
public double DISK_Temp { get; set; } // deg C
public double DISK_Temp { get; set; } // deg C (if available)
// Network
public double NET_In { get; set; } // Bit
public double NET_In { get; set; } // Bytes/s
public double NET_Out { get; set; } // Bit
public double NET_Out { get; set; } // Bytes/s
}
@@ -173,26 +173,28 @@ public class MonitoringController : Controller
if (server != null)
{
// neues Metric-Objekt erstellen
var NewMetric = new Metric
{
Timestamp = DateTime.UtcNow,
ServerId = dto.ServerId,
CPU_Load = dto.CPU_Load,
CPU_Temp = dto.CPU_Temp,
GPU_Load = dto.GPU_Load,
GPU_Temp = dto.GPU_Temp,
GPU_Vram_Size = dto.GPU_Vram_Size,
GPU_Vram_Usage = dto.GPU_Vram_Usage,
RAM_Load = dto.RAM_Load,
RAM_Size = dto.RAM_Size,
DISK_Size = dto.RAM_Size,
DISK_Usage = dto.DISK_Usage,
DISK_Temp = dto.DISK_Temp,
NET_In = dto.NET_In,
NET_Out = dto.NET_Out
CPU_Load = sanitizeLoadInput(dto.CPU_Load),
CPU_Temp = sanitizeDegreeInput(dto.CPU_Temp),
GPU_Load = sanitizeLoadInput(dto.GPU_Load),
GPU_Temp = sanitizeDegreeInput(dto.GPU_Temp),
GPU_Vram_Size = sanitizeByteInput(dto.GPU_Vram_Size),
GPU_Vram_Usage = sanitizeLoadInput(dto.GPU_Vram_Usage),
RAM_Load = sanitizeByteInput(dto.RAM_Load),
RAM_Size = sanitizeByteInput(dto.RAM_Size),
DISK_Size = sanitizeByteInput(dto.DISK_Size),
DISK_Usage = sanitizeByteInput(dto.DISK_Usage),
DISK_Temp = sanitizeDegreeInput(dto.DISK_Temp),
NET_In = sanitizeByteInput(dto.NET_In),
NET_Out = sanitizeByteInput(dto.NET_Out)
};
try
{
// Metric Objekt in Datenbank einfügen
_context.Metrics.Add(NewMetric);
await _context.SaveChangesAsync();
@@ -281,4 +283,32 @@ public class MonitoringController : Controller
return Ok(data);
}
// Metric Input Byte zu Gigabyte umwandeln
public static double sanitizeByteInput(double metric_input)
{
// *10^-9 um auf Gigabyte zu kommen
double sanitizedMetric = metric_input * Math.Pow(10, -9);
// Auf 2 Nachkommastellen runden
Math.Round(sanitizedMetric, 2);
return sanitizedMetric;
}
// Degree Input auf zwei Nachkommastellen runden
public static double sanitizeDegreeInput(double metric_input)
{
Math.Round(metric_input, 2);
return metric_input;
}
// Load Input auf zwei Nachkommastellen runden
public static double sanitizeLoadInput(double metric_input)
{
Math.Round(metric_input, 2);
return metric_input;
}
}