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_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; } // % public double GPU_Vram_Usage { get; set; } // %
// RAM // RAM
public double RAM_Size { get; set; } // GB public double RAM_Size { get; set; } // Bytes
public double RAM_Load { get; set; } // % public double RAM_Load { get; set; } // %
// Disks // 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 // 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) if (server != null)
{ {
// neues Metric-Objekt erstellen
var NewMetric = new Metric var NewMetric = new Metric
{ {
Timestamp = DateTime.UtcNow, Timestamp = DateTime.UtcNow,
ServerId = dto.ServerId, ServerId = dto.ServerId,
CPU_Load = dto.CPU_Load, CPU_Load = sanitizeLoadInput(dto.CPU_Load),
CPU_Temp = dto.CPU_Temp, CPU_Temp = sanitizeDegreeInput(dto.CPU_Temp),
GPU_Load = dto.GPU_Load, GPU_Load = sanitizeLoadInput(dto.GPU_Load),
GPU_Temp = dto.GPU_Temp, GPU_Temp = sanitizeDegreeInput(dto.GPU_Temp),
GPU_Vram_Size = dto.GPU_Vram_Size, GPU_Vram_Size = sanitizeByteInput(dto.GPU_Vram_Size),
GPU_Vram_Usage = dto.GPU_Vram_Usage, GPU_Vram_Usage = sanitizeLoadInput(dto.GPU_Vram_Usage),
RAM_Load = dto.RAM_Load, RAM_Load = sanitizeByteInput(dto.RAM_Load),
RAM_Size = dto.RAM_Size, RAM_Size = sanitizeByteInput(dto.RAM_Size),
DISK_Size = dto.RAM_Size, DISK_Size = sanitizeByteInput(dto.DISK_Size),
DISK_Usage = dto.DISK_Usage, DISK_Usage = sanitizeByteInput(dto.DISK_Usage),
DISK_Temp = dto.DISK_Temp, DISK_Temp = sanitizeDegreeInput(dto.DISK_Temp),
NET_In = dto.NET_In, NET_In = sanitizeByteInput(dto.NET_In),
NET_Out = dto.NET_Out NET_Out = sanitizeByteInput(dto.NET_Out)
}; };
try try
{ {
// Metric Objekt in Datenbank einfügen
_context.Metrics.Add(NewMetric); _context.Metrics.Add(NewMetric);
await _context.SaveChangesAsync(); await _context.SaveChangesAsync();
@@ -281,4 +283,32 @@ public class MonitoringController : Controller
return Ok(data); 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;
}
} }