changed server load stats

This commit is contained in:
Janis Steiner
2024-10-14 13:12:21 +01:00
parent c7a644a8e4
commit 017c34e2d5
3 changed files with 119 additions and 39 deletions

View File

@@ -0,0 +1,92 @@
<?php
// Initialize the session and check if the user is authenticated
session_start();
include "../config/config.php";
// Perform authentication and role checks
if (!isset($_SESSION["loggedin"]) || $_SESSION["loggedin"] !== true || $_SESSION["role"][9] !== "1") {
echo "Unauthorized access!";
exit;
}
// Sanitize session variables
$username = htmlspecialchars($_SESSION["username"]);
$id = intval($_SESSION["id"]);
$color = htmlspecialchars($_SESSION["color"]);
// Server statistics retrieval
// Get server load
$load = sys_getloadavg();
$load_percentage = round(($load[0] / 4) * 100); // Assuming a 4-core processor
// Get CPU usage
$cpu_usage = shell_exec("top -bn1 | grep 'Cpu(s)' | sed 's/.*, *\\([0-9.]*\\)%* id.*/\\1/' | awk '{print 100 - $1}'");
$cpu_usage = round($cpu_usage, 2);
// Get RAM usage
$ram_usage = shell_exec("free | grep Mem | awk '{print $3/$2 * 100.0}'");
$ram_usage = round($ram_usage, 2);
// Get Disk usage
$disk_usage = shell_exec("df -h / | grep / | awk '{print $5}'");
// Get server uptime
$uptime = shell_exec("uptime -p");
// Output stats with Bootstrap styling
echo "
<div class='col-md-6 mb-4'>
<div class='card'>
<div class='card-body'>
<p class='stat-label'>CPU Usage: {$cpu_usage}%</p>
<div class='progress'>
<div class='progress-bar bg-danger' role='progressbar' style='width: {$cpu_usage}%' aria-valuenow='{$cpu_usage}' aria-valuemin='0' aria-valuemax='100'>{$cpu_usage}%</div>
</div>
</div>
</div>
</div>
<div class='col-md-6 mb-4'>
<div class='card'>
<div class='card-body'>
<p class='stat-label'>RAM Usage: {$ram_usage}%</p>
<div class='progress'>
<div class='progress-bar bg-warning' role='progressbar' style='width: {$ram_usage}%' aria-valuenow='{$ram_usage}' aria-valuemin='0' aria-valuemax='100'>{$ram_usage}%</div>
</div>
</div>
</div>
</div>
<div class='col-md-6 mb-4'>
<div class='card'>
<div class='card-body'>
<p class='stat-label'>Server Load (1 min avg): {$load[0]}</p>
<div class='progress'>
<div class='progress-bar bg-info' role='progressbar' style='width: {$load_percentage}%' aria-valuenow='{$load_percentage}' aria-valuemin='0' aria-valuemax='100'>{$load_percentage}%</div>
</div>
</div>
</div>
</div>
<div class='col-md-6 mb-4'>
<div class='card'>
<div class='card-body'>
<p class='stat-label'>Disk Usage: {$disk_usage}</p>
<div class='progress'>
<div class='progress-bar bg-success' role='progressbar' style='width: {$disk_usage}' aria-valuenow='{$disk_usage}' aria-valuemin='0' aria-valuemax='100'>{$disk_usage}</div>
</div>
</div>
</div>
</div>
<div class='col-md-12 mb-4'>
<div class='card'>
<div class='card-body'>
<p class='stat-label'>Server Uptime: {$uptime}</p>
</div>
</div>
</div>
";
?>

View File

@@ -75,6 +75,9 @@ async function delete_input(input,action,id,row){
<a class="nav-link" href="debug.php?show=filament_settings" id="filament_settings_tab">Filamenteinstellungen</a> <a class="nav-link" href="debug.php?show=filament_settings" id="filament_settings_tab">Filamenteinstellungen</a>
</li> </li>
<li class="nav-item">
<a class="nav-link" href="debug.php?show=srv_stats" id="srv_stats_tab">Serverstatistiken</a>
</li>
</ul> </ul>
<div id="printer_settings" style="display:none"> <div id="printer_settings" style="display:none">
<h1>Druckerfreigabe erzwingen (falls beim freigeben Fehlermeldungen angezeigt werden)</h1> <h1>Druckerfreigabe erzwingen (falls beim freigeben Fehlermeldungen angezeigt werden)</h1>
@@ -295,9 +298,32 @@ async function delete_input(input,action,id,row){
} }
echo("</tbody></table></div></div></div>"); echo("</tbody></table></div></div></div>");
echo("</div>"); echo("</div>");
?> ?>
</div> </div>
<div id="srv_stats" style="display:none">
<div class="container my-5">
<h1 class="text-center mb-4">Server Stats</h1>
<div id="stats" class="row text-center">
<!-- Stats will be dynamically loaded here via AJAX -->
</div>
</div>
<script>
function refreshStats() {
$.ajax({
url: "/api/server_stats.php", // Load from server_stats.php, which includes auth and stats
method: "GET",
success: function (data) {
$("#stats").html(data);
}
});
}
refreshStats();
setInterval(refreshStats, 1000);
</script>
</div>
<?php <?php
test_queue($link); test_queue($link);
?> ?>

View File

@@ -1,38 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Server Stats</title>
</head>
<body>
<div id="stats"></div>
<script>
function refreshStats() {
location.reload();
}
// Refresh stats every 1 second
setInterval(refreshStats, 1000);
</script>
<?php
// Get server load
$load = sys_getloadavg();
// Get CPU usage
$cpu_usage = shell_exec("top -bn1 | grep 'Cpu(s)' | sed 's/.*, *\\([0-9.]*\\)%* id.*/\\1/' | awk '{print 100 - $1\"%\"}'");
// Get RAM usage
$ram_usage = shell_exec("free | grep Mem | awk '{print $3/$2 * 100.0\"%\"}'");
// Display results
echo "Server Load: " . implode(", ", $load) . "<br>";
echo "CPU Usage: " . $cpu_usage . "<br>";
echo "RAM Usage: " . $ram_usage . "<br>";
?>
</body>
</html>