Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
zk
gpu-dcu-monitor
Commits
360ef340
Commit
360ef340
authored
May 27, 2026
by
zk
Browse files
Rewrite README with deployment guide
parent
13a4fbe5
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
187 additions
and
84 deletions
+187
-84
README.md
README.md
+187
-84
docs/主界面.png
docs/主界面.png
+0
-0
docs/添加服务器界面.png
docs/添加服务器界面.png
+0
-0
No files found.
README.md
View file @
360ef340
# GPU/DCU 资源看板
# GPU/DCU 资源看板
一个
面向测试团队共享使用的 GPU/DCU 服务器占用看板。它通过 SSH 定时在服务器上执行
`hy-smi`
或
`nvidia-smi`
,集中展示每台机器的卡数、型号、显存占用、算力占用、温度、功耗、空闲/占用/离线状态
。
一个
通过 SSH 采集服务器 GPU/DCU 占用情况的 Web 看板。适合集中查看多台服务器的加速卡状态,支持海光 DCU 和 NVIDIA GPU
。
## 推荐使用方式
看板会定时在目标服务器上执行
`hy-smi`
或
`nvidia-smi`
,展示每台服务器的卡数、型号、显存占用、算力占用、温度、功耗、在线状态和分组信息。
最推荐的方式是:
**在一台能免密 SSH 登录所有服务器的电脑或跳板机上部署一次,然后把网页地址共享给大家。**
## 界面预览
这样每个同事不用单独安装,也不用每个人都配置服务器 SSH 密钥。大家只需要访问
:
主界面
:
```
text

http://部署机器IP:3066
```
## 快速启动
Windows 用户可以双击
:
添加服务器
:
```
text

start-windows.bat
```
或者手动启动:
## 功能
```
powershell
npm
start
```
默认地址:
-
添加、编辑、删除服务器。
-
按服务器状态和分组筛选。
-
支持海光 DCU:通过
`hy-smi`
采集占用,通过
`hy-smi --showproductname`
识别型号。
-
支持 NVIDIA GPU:通过
`nvidia-smi`
采集占用和识别型号。
-
自动识别卡数,不需要手动填写 4 卡或 8 卡。
-
同时显示显存占用和算力占用。
-
显存被 vLLM 等服务占用时,即使算力占用为 0,也会判定该卡不可用。
-
主界面用水位色块展示每张卡的显存和算力占用。
-
型号只在新增服务器和手动刷新时重新识别,日常自动刷新只采集占用数据。
```
text
## 环境准备
http://localhost:3066
```
如果要给同网段同事访问,在部署机器的防火墙放行
`3066`
端口后,让大家访问
:
部署机器需要
:
```
text
-
Node.js:建议 18 或更高版本;当前代码兼容 Node.js 12+。
http://你的电脑IP:3066
-
npm:通常随 Node.js 一起安装。
```
-
OpenSSH 客户端:需要能执行
`ssh`
。
-
网络能访问被监控服务器的 SSH 端口,默认
`22`
。
## 使用前提
被监控服务器需要:
-
部署机器需要安装 Node.js 18 或更高版本。
-
海光 DCU 服务器能执行
`hy-smi`
。
-
部署机器需要能通过 SSH 免密登录目标服务器。
-
NVIDIA GPU 服务器能执行
`nvidia-smi`
。
-
海光服务器上需要能执行
`hy-smi`
。
-
部署机器必须能免密 SSH 登录被监控服务器。
-
NVIDIA 服务器上需要能执行
`nvidia-smi`
。
建议
先在部署机器上验证:
添加服务器前,
先在部署机器上验证
免密访问和采集命令,例如
:
```
powershell
```
bash
ssh root@10.0.0.12 hy-smi
ssh root@10.0.0.12 hy-smi
ssh root@10.0.0.13 nvidia-smi
ssh root@10.0.0.13 nvidia-smi
```
```
## 功能
如果这里需要输入密码,网页里添加后也会采集失败。需要先把部署机器的 SSH 公钥加入目标服务器的
`authorized_keys`
。
## Windows 部署
1.
安装 Node.js。
下载并安装 Node.js LTS 版本。安装后在 PowerShell 验证:
```
powershell
node
-v
npm
-v
ssh
-V
```
2.
配置免密 SSH。
如果本机还没有 SSH key:
```
powershell
ssh-keygen
-t
ed25519
```
将
`C:\Users\你的用户名\.ssh\id_ed25519.pub`
的内容追加到每台被监控服务器的
`~/.ssh/authorized_keys`
。
3.
启动服务。
在项目目录执行:
```
powershell
npm
start
```
或双击:
```
text
start-windows.bat
```
4.
打开页面。
```
text
http://localhost:3066
```
如果要让同网段其他机器访问,需要放行 Windows 防火墙的
`3066`
端口,然后访问:
```
text
http://部署机器IP:3066
```
## Linux 部署
-
网页端添加、编辑、删除服务器。
1.
安装 Node.js、npm 和 OpenSSH 客户端。
-
自动识别卡数。
-
自动识别显卡型号:
-
海光:通过
`hy-smi --showproductname`
识别,例如
`BW100`
、
`BW150`
,未来新型号也会按输出自动提取。
-
NVIDIA:通过
`nvidia-smi --query-gpu=name`
识别。
-
同时展示显存占用和算力占用。
-
显存泄漏或 vLLM 服务未释放显存时,即使算力为 0,也会判定该卡不可用。
-
主界面水位色块按占用率从下往上填充。
-
占用颜色分级:绿色、黄绿色、橘色、红色。
-
默认每 10 秒自动采集一次,也可以点“手动刷新”立即刷新。
## 配置说明
RHEL/Kylin/CentOS 类系统:
网页里点击“添加服务器”即可写入配置。真实配置保存在:
```
bash
sudo
dnf
install
-y
nodejs npm openssh-clients
```
Ubuntu/Debian 类系统:
```
bash
sudo
apt update
sudo
apt
install
-y
nodejs npm openssh-client
```
2.
配置免密 SSH。
```
bash
ssh-keygen
-t
ed25519
```
将部署机器的公钥追加到每台被监控服务器的
`~/.ssh/authorized_keys`
。验证:
```
bash
ssh root@10.0.0.12 hy-smi
ssh root@10.0.0.13 nvidia-smi
```
3.
启动服务。
```
bash
cd
gpu-dcu-monitor
npm start
```
4.
后台常驻运行。
可以使用 systemd。创建
`/etc/systemd/system/gpu-dcu-monitor.service`
:
```
ini
[Unit]
Description
=
GPU DCU Server Monitor
After
=
network-online.target
Wants
=
network-online.target
[Service]
Type
=
simple
WorkingDirectory
=
/opt/gpu-dcu-monitor
Environment
=
PORT=3066
Environment
=
POLL_INTERVAL_MS=10000
Environment
=
SSH_TIMEOUT_MS=20000
ExecStart
=
/usr/bin/node /opt/gpu-dcu-monitor/server.js
Restart
=
always
RestartSec
=
3
User
=
root
[Install]
WantedBy
=
multi-user.target
```
启动并设置开机自启:
```
bash
sudo
systemctl daemon-reload
sudo
systemctl
enable
--now
gpu-dcu-monitor
sudo
systemctl status gpu-dcu-monitor
```
## 添加服务器
在页面点击“添加服务器”,填写:
-
名称:看板上显示的服务器名称。
-
Host / IP:服务器 IP 或主机名。
-
SSH 用户:默认
`root`
。
-
端口:默认
`22`
。
-
分组:例如通信组、政府组、金融组、NV 环境等。
-
标签:可选,用于补充公共池、回归、临时等信息。
-
采集命令:海光选择
`hy-smi`
,NVIDIA 选择
`nvidia-smi`
。
保存后会立即采集一次,并自动识别卡数和型号。
## 配置文件
真实服务器配置保存在:
```
text
```
text
data/servers.json
data/servers.json
```
```
该文件已被
`.gitignore`
忽略,避免把真实服务器地址提交到仓库。
示例配置
见
:
示例配置:
```
text
```
text
data/servers.sample.json
data/servers.sample.json
```
```
服务器支持
`group`
分组字段
,适合公共部署时按项目或客户线管理,例如“通信中兴组”“政府联想组”“企业浪潮组”“金融华三组”“深度组”。页面会自动生成分组筛选入口;
`tags`
仍然可以用于补充“8卡”“回归”“临时”等
标签。
服务器
配置
支持
`group`
分组字段
。页面会根据已有服务器自动生成分组筛选入口;
`tags`
用于补充额外
标签。
## 环境变量
## 环境变量
Windows PowerShell 示例:
```
powershell
```
powershell
$
env
:
PORT
=
3066
$
env
:
PORT
=
3066
$
env
:
POLL_INTERVAL_MS
=
10000
$
env
:
POLL_INTERVAL_MS
=
10000
$
env
:
SSH_TIMEOUT_MS
=
8
000
$
env
:
SSH_TIMEOUT_MS
=
20
000
npm
start
npm
start
```
```
Linux 示例:
```
bash
PORT
=
3066
POLL_INTERVAL_MS
=
10000
SSH_TIMEOUT_MS
=
20000 npm start
```
常用配置:
常用配置:
-
`PORT`
:网页端口,默认
`3066`
。
-
`PORT`
:网页端口,默认
`3066`
。
-
`POLL_INTERVAL_MS`
:自动采集间隔,默认
`10000`
毫秒。
-
`POLL_INTERVAL_MS`
:自动采集间隔,默认
`10000`
毫秒。
-
`SSH_TIMEOUT_MS`
:单台服务器 SSH/采集命令超时,默认
`20000`
毫秒。NVIDIA 机器
首次
执行
`nvidia-smi`
较慢时可以继续调大。
-
`SSH_TIMEOUT_MS`
:单台服务器 SSH/采集命令超时,默认
`20000`
毫秒。
部分
NVIDIA 机器执行
`nvidia-smi`
较慢时可以继续调大。
-
`SSH_PATH`
:自定义 SSH 程序路径。Windows 默认使用
`C:\Windows\System32\OpenSSH\ssh.exe`
。
-
`SSH_PATH`
:自定义 SSH 程序路径。Windows 默认使用
`C:\Windows\System32\OpenSSH\ssh.exe`
。
##
上传到 GitHub
##
运维命令
首次上传
:
systemd 部署时常用命令
:
```
powershell
```
bash
git
init
systemctl status gpu-dcu-monitor
git
add
.
systemctl restart gpu-dcu-monitor
git
commit
-m
"Initial GPU DCU monitor"
journalctl
-u
gpu-dcu-monitor
-f
git
branch
-M
main
git
remote
add
origin
https://github.com/
你的用户名
/
你的仓库名
.
git
git
push
-u
origin
main
```
```
后续更新
:
检查端口
:
```
powershell
```
bash
git
add
.
ss
-lntp
|
grep
3066
git
commit
-m
"Update dashboard"
git
push
```
```
## 给同事一键使用
最简单的方式:
1.
在 GitHub 页面点击
`Code`
->
`Download ZIP`
。
2.
解压 ZIP。
3.
双击
`start-windows.bat`
。
4.
打开或分享
`http://localhost:3066`
/
`http://部署机器IP:3066`
。
更推荐的团队方式:
1.
由你在一台固定机器上运行
`start-windows.bat`
。
2.
你在网页里添加所有服务器。
3.
同事只访问
`http://部署机器IP:3066`
。
如果你想做到真正的“无需安装 Node.js,双击一个 exe 就能运行”,后续可以再做 Windows 打包版。常见路线是 Electron、pkg/nexe 或 Inno Setup,但会比当前轻量 Web 版复杂一些。
## 注意事项
## 注意事项
-
不要把
`data/servers.json`
提交到 GitHub,里面可能包含内部服务器 IP
。
-
如果页面能打开但服务器显示离线,优先在部署机器上手动执行
`ssh root@目标IP hy-smi`
或
`ssh root@目标IP nvidia-smi`
。
-
不要把 SSH 私钥提交到 GitHub
。
-
如果 NVIDIA 服务器偶发超时,可以调大
`SSH_TIMEOUT_MS`
。
-
如果
同事访问不了网页,优先检查部署机器防火墙是否放行了
`3066`
端口
。
-
如果
多人共同查看,建议部署在一台固定机器上,由这台机器统一采集
。
docs/主界面.png
0 → 100644
View file @
360ef340
237 KB
docs/添加服务器界面.png
0 → 100644
View file @
360ef340
360 KB
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment