[增添]增添了错误捕捉,避免页面报错显示
This commit is contained in:
@@ -13,49 +13,78 @@ class SystemStats extends BaseWidget
|
||||
{
|
||||
$prometheus = new PrometheusService();
|
||||
|
||||
// 获取内存总量
|
||||
$memoryTotalQuery = 'node_memory_MemTotal_bytes';
|
||||
$memoryTotalResult = $prometheus->query($memoryTotalQuery);
|
||||
$memoryTotal = $memoryTotalResult['data']['result'][0]['value'][1] ?? 0;
|
||||
try {
|
||||
// 获取内存总量
|
||||
$memoryTotalQuery = 'node_memory_MemTotal_bytes';
|
||||
$memoryTotalResult = $prometheus->query($memoryTotalQuery);
|
||||
$memoryTotal = $memoryTotalResult['data']['result'][0]['value'][1] ?? 0;
|
||||
} catch (\Exception $e) {
|
||||
error_log('Failed to retrieve memory total: ' . $e->getMessage());
|
||||
$memoryTotal = 0;
|
||||
}
|
||||
|
||||
// 获取已用内存
|
||||
$memoryAvailableQuery = 'node_memory_MemAvailable_bytes';
|
||||
$memoryAvailableResult = $prometheus->query($memoryAvailableQuery);
|
||||
$memoryAvailable = $memoryAvailableResult['data']['result'][0]['value'][1] ?? 0;
|
||||
try {
|
||||
// 获取已用内存
|
||||
$memoryAvailableQuery = 'node_memory_MemAvailable_bytes';
|
||||
$memoryAvailableResult = $prometheus->query($memoryAvailableQuery);
|
||||
$memoryAvailable = $memoryAvailableResult['data']['result'][0]['value'][1] ?? 0;
|
||||
} catch (\Exception $e) {
|
||||
error_log('Failed to retrieve memory available: ' . $e->getMessage());
|
||||
$memoryAvailable = 0;
|
||||
}
|
||||
|
||||
$memoryUsed = $memoryTotal - $memoryAvailable;
|
||||
$memoryDisplay = round($memoryUsed / (1024 * 1024 * 1024), 2) . ' GB / ' . round($memoryTotal / (1024 * 1024 * 1024), 2) . ' GB';
|
||||
|
||||
// 获取硬盘总量
|
||||
$diskTotalQuery = 'node_filesystem_size_bytes{fstype!="rootfs",fstype!="tmpfs",fstype!="squashfs",mountpoint=~"/|/home|/boot"}';
|
||||
$diskTotalResult = $prometheus->query($diskTotalQuery);
|
||||
$diskTotal = array_sum(array_map(function ($item) {
|
||||
return $item['value'][1] ?? 0;
|
||||
}, $diskTotalResult['data']['result']));
|
||||
try {
|
||||
// 获取硬盘总量
|
||||
$diskTotalQuery = 'node_filesystem_size_bytes{fstype!="rootfs",fstype!="tmpfs",fstype!="squashfs",mountpoint=~"/|/home|/boot"}';
|
||||
$diskTotalResult = $prometheus->query($diskTotalQuery);
|
||||
$diskTotal = array_sum(array_map(function ($item) {
|
||||
return $item['value'][1] ?? 0;
|
||||
}, $diskTotalResult['data']['result']));
|
||||
} catch (\Exception $e) {
|
||||
error_log('Failed to retrieve disk total: ' . $e->getMessage());
|
||||
$diskTotal = 0;
|
||||
}
|
||||
|
||||
// 获取已用硬盘
|
||||
$diskFreeQuery = 'node_filesystem_free_bytes{fstype!="rootfs",fstype!="tmpfs",fstype!="squashfs",mountpoint=~"/|/home|/boot"}';
|
||||
$diskFreeResult = $prometheus->query($diskFreeQuery);
|
||||
$diskFree = array_sum(array_map(function ($item) {
|
||||
return $item['value'][1] ?? 0;
|
||||
}, $diskFreeResult['data']['result']));
|
||||
try {
|
||||
// 获取已用硬盘
|
||||
$diskFreeQuery = 'node_filesystem_free_bytes{fstype!="rootfs",fstype!="tmpfs",fstype!="squashfs",mountpoint=~"/|/home|/boot"}';
|
||||
$diskFreeResult = $prometheus->query($diskFreeQuery);
|
||||
$diskFree = array_sum(array_map(function ($item) {
|
||||
return $item['value'][1] ?? 0;
|
||||
}, $diskFreeResult['data']['result']));
|
||||
} catch (\Exception $e) {
|
||||
error_log('Failed to retrieve disk free: ' . $e->getMessage());
|
||||
$diskFree = 0;
|
||||
}
|
||||
|
||||
$diskUsed = $diskTotal - $diskFree;
|
||||
$diskDisplay = round($diskUsed / (1024 * 1024 * 1024), 2) . ' GB / ' . round($diskTotal / (1024 * 1024 * 1024), 2) . ' GB';
|
||||
|
||||
// 获取系统启动时间
|
||||
$uptimeQuery = 'node_boot_time_seconds';
|
||||
$uptimeResult = $prometheus->query($uptimeQuery);
|
||||
$bootTime = $uptimeResult['data']['result'][0]['value'][1] ?? 0;
|
||||
try {
|
||||
// 获取系统启动时间
|
||||
$uptimeQuery = 'node_boot_time_seconds';
|
||||
$uptimeResult = $prometheus->query($uptimeQuery);
|
||||
$bootTime = $uptimeResult['data']['result'][0]['value'][1] ?? 0;
|
||||
} catch (\Exception $e) {
|
||||
error_log('Failed to retrieve boot time: ' . $e->getMessage());
|
||||
$bootTime = 0;
|
||||
}
|
||||
|
||||
$uptime = now()->timestamp - $bootTime;
|
||||
$uptimeDisplay = gmdate('H:i:s', $uptime);
|
||||
|
||||
// 获取CPU核心数量
|
||||
$cpuCoresQuery = 'count(node_cpu_seconds_total{mode="system"})';
|
||||
$cpuCoresResult = $prometheus->query($cpuCoresQuery);
|
||||
$cpuCores = $cpuCoresResult['data']['result'][0]['value'][1] ?? 0;
|
||||
|
||||
|
||||
try {
|
||||
// 获取CPU核心数量
|
||||
$cpuCoresQuery = 'count(node_cpu_seconds_total{mode="system"})';
|
||||
$cpuCoresResult = $prometheus->query($cpuCoresQuery);
|
||||
$cpuCores = $cpuCoresResult['data']['result'][0]['value'][1] ?? 0;
|
||||
} catch (\Exception $e) {
|
||||
error_log('Failed to retrieve CPU cores: ' . $e->getMessage());
|
||||
$cpuCores = 0;
|
||||
}
|
||||
|
||||
return [
|
||||
BaseWidget\Stat::make('内存占用', $memoryDisplay),
|
||||
@@ -65,6 +94,7 @@ class SystemStats extends BaseWidget
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
protected function getPollingInterval(): ?string
|
||||
{
|
||||
return "1s";
|
||||
|
||||
Reference in New Issue
Block a user