feat: 横版col-extra — 负载/SWAP/磁盘/温度/流量/进程 6项指标
SystemInfoCollector 新增: - swap: SWAP用量 (psutil + /proc/meminfo fallback) - disk: 磁盘用量 - temperature: CPU温度 (psutil + /sys/class/thermal fallback) Sentinel col-extra 显示: 负载 | SWAP | 磁盘 | 温度 | 累计流量 | 进程RSS Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -59,7 +59,10 @@
|
||||
#sentinel-grid.layout-row .node-card { display:grid;grid-template-columns:160px 1fr 1fr;gap:12px 16px;align-items:start }
|
||||
#sentinel-grid.layout-row .col-left { min-width:0 }
|
||||
#sentinel-grid.layout-row .col-right-stack { display:flex;flex-direction:column;gap:12px;min-width:0 }
|
||||
#sentinel-grid.layout-row .col-extra { display:flex;flex-direction:column;gap:8px;padding:0 8px }
|
||||
#sentinel-grid.layout-row .col-extra { display:flex;flex-direction:column;gap:6px;padding:0 8px }
|
||||
#sentinel-grid.layout-row .extra-row { font-size:.8rem;padding:3px 0;border-bottom:1px solid var(--md-sys-color-surface-container-lowest) }
|
||||
#sentinel-grid.layout-row .extra-row .elabel { font-size:.65rem;color:var(--text-dim);text-transform:uppercase;margin-right:4px }
|
||||
#sentinel-grid.layout-row .extra-row .eval { font-weight:500 }
|
||||
#sentinel-grid.layout-row .mtr-data .rlabel { font-size:.7rem;color:var(--text-dim);text-transform:uppercase;margin-right:6px }
|
||||
#sentinel-grid.layout-row .mtr-data .rval { font-weight:600 }
|
||||
#sentinel-grid.layout-row .mtr { display:flex;align-items:center;height:48px;padding:0 8px;margin-bottom:6px;position:relative }
|
||||
@@ -264,6 +267,21 @@
|
||||
}
|
||||
} catch(e) {}
|
||||
}
|
||||
// 更新额外指标
|
||||
var loadEl = card.querySelector('.load-val');
|
||||
var swapEl = card.querySelector('.swap-val');
|
||||
var diskEl = card.querySelector('.disk-val');
|
||||
var tempEl = card.querySelector('.temp-val');
|
||||
var trafEl = card.querySelector('.traf-val');
|
||||
var procEl = card.querySelector('.proc-val');
|
||||
var sysData = n.system || {};
|
||||
if (loadEl && sysData.cpu) loadEl.textContent = (sysData.cpu.load_avg||[0,0,0]).map(function(v){return v.toFixed(1);}).join(' / ');
|
||||
if (swapEl && sysData.swap) swapEl.textContent = (sysData.swap.percent||0).toFixed(1)+'% ('+(sysData.swap.used_gb||0).toFixed(1)+'G)';
|
||||
if (diskEl && sysData.disk) diskEl.textContent = (sysData.disk.percent||0).toFixed(1)+'% ('+(sysData.disk.used_gb||0).toFixed(1)+'/'+(sysData.disk.total_gb||0).toFixed(1)+'G)';
|
||||
if (tempEl && sysData.temperature) tempEl.textContent = (sysData.temperature.current||0) > 0 ? (sysData.temperature.current).toFixed(1)+'°C' : '—';
|
||||
if (trafEl && sysData.network) trafEl.textContent = '↓'+(sysData.network.rx_mb||0).toFixed(0)+'M ↑'+(sysData.network.tx_mb||0).toFixed(0)+'M';
|
||||
if (procEl && sysData.process) procEl.textContent = (sysData.process.memory_mb||0).toFixed(0)+'MB';
|
||||
|
||||
var infoR = card.querySelector('.col-info');
|
||||
if (infoR) infoR.textContent = (n.last_seen ? new Date(n.last_seen*1000).toLocaleTimeString() : '—');
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user