[修改]优化了了CPU占用率与内存占用显示

This commit is contained in:
makotocc0107
2024-08-30 14:25:27 +08:00
committed by Coding
parent 500c0f9f7d
commit a70f667e9e
2 changed files with 79 additions and 27 deletions

View File

@@ -11,12 +11,14 @@ class PrometheusMemory extends ChartWidget
protected static ?string $heading = '内存占用率';
// 固定显示的数据点数
private const MAX_POINTS = 6;
protected function getData(): array
{
$prometheus = new PrometheusService();
// 查询过去 1 分钟内的每 6 秒一个数据点
// 查询过去 1 分钟内的每 6 秒一个数据点
$memoryUsageRange = $prometheus->queryRange(
'(1 - (avg_over_time(node_memory_MemAvailable_bytes[1m]) / avg_over_time(node_memory_MemTotal_bytes[1m]))) * 100',
now()->subMinutes(1)->timestamp,
@@ -29,9 +31,17 @@ class PrometheusMemory extends ChartWidget
if (!empty($memoryUsageRange['data']['result'][0]['values'])) {
date_default_timezone_set('Asia/Shanghai');
foreach ($memoryUsageRange['data']['result'][0]['values'] as $index => $value) {
$labels[] = date('H:i:s', $value[0]); // 格式化时间戳为小时:分钟:秒
$data[] = round($value[1], 2); // 取出每个时间点的内存使用率,并保留两位小数
// 获取内存使用率数据
$memoryValues = array_column($memoryUsageRange['data']['result'][0]['values'], 1, 0);
// 只保留最新的 MAX_POINTS 个数据点
$timestamps = array_keys($memoryValues);
$timestamps = array_slice($timestamps, -self::MAX_POINTS);
foreach ($timestamps as $timestamp) {
$labels[] = date('H:i:s', $timestamp); // 格式化时间戳为小时:分钟:秒
$data[] = round(floatval($memoryValues[$timestamp]), 2); // 取出每个时间点的内存使用率,并保留两位小数
}
}
@@ -54,4 +64,22 @@ class PrometheusMemory extends ChartWidget
{
return 'line';
}
protected function getOptions(): array
{
return [
'scales' => [
'y' => [
'beginAtZero' => true,
'min' => 0, // 设置 y 轴最小值
'max' => 100, // 设置 y 轴最大值
],
],
];
}
protected function getPollingInterval(): ?string
{
return '6s'; // 每 6 秒更新一次
}
}