硬件监控面板。
| config | ||
| deploy | ||
| docs | ||
| scripts | ||
| static | ||
| tests | ||
| .gitattributes | ||
| .gitignore | ||
| pyproject.toml | ||
| README.md | ||
| server.py | ||
| task_core.py | ||
| task_exec.py | ||
| taskd.py | ||
Hardware Dashboard
这是运行在 192.168.1.37 上的局域网设备监控与维护面板。页面提供 CPU、内存、NVIDIA 显卡、磁盘 SMART、性能历史曲线、硬件问题记录和定时任务管理。支持在网页选择使用 1 张或 2 张显卡,支持夜间关机与 RTC 定时唤醒。后端只使用 Python 标准库;前端使用原生 HTML、CSS 和 JavaScript,不依赖外部 CDN。
当前访问地址是 http://192.168.1.37:8090。定时任务可以执行服务器命令,必须使用独立的管理员账号登录。该账号与 SSH root 密码相互独立。
目录结构
.
├── server.py # 监控网页、实时指标和历史数据 API
├── task_core.py # 定时任务定义、校验和 systemd 管理
├── taskd.py # root 侧任务管理服务
├── task_exec.py # 单个任务的执行器和输出记录
├── static/ # 前端页面、样式和脚本
├── scripts/hwlog # 硬件事件采集与命令行查看工具
├── config/
| └── hardware-watch.example.json
├── deploy/systemd/ # dashboard、taskd 和硬件采集服务文件
├── deploy/journald/ # 原始内核日志持久化配置
├── docs/DEPLOYMENT.zh-CN.md # 服务器部署与技术说明
└── tests/ # 自动化测试
本地检查
项目只需要 Python 3.12 或更新版本,没有第三方 Python 依赖。
python -m unittest discover -s tests -p "test_*.py" -v
python -m py_compile server.py task_core.py taskd.py task_exec.py scripts/hwlog
如需本地启动网页:
python server.py --host 127.0.0.1 --port 8090
服务器上的完整部署方式、文件路径、权限、任务管理和维护命令见 docs/DEPLOYMENT.zh-CN.md。
服务器配置
仓库中不保存真实硬件基准配置和任务管理凭据。部署前复制示例配置:
sudo cp config/hardware-watch.example.json /etc/hardware-watch.json
sudo nano /etc/hardware-watch.json
把 expected_gpu_count 和磁盘名改成当前服务器的实际值。若经常更换显卡,将 expected_gpu_uuids 设为空列表;也可在“计算显卡”卡片选择数量并保存。网页设置通过现有管理员登录验证,保存后同步到硬件采集器,重启后仍有效。定时任务管理服务首次初始化会生成独立管理员密码文件;不要把生成的密码、任务数据库、日志或系统配置哈希提交到仓库。
安全边界
- 状态、曲线和日志无需登录;修改显卡数量需要管理员登录。
- 定时任务能以 root 身份执行命令,新增、编辑、启用和立即执行均需要任务管理员登录。
- 不要把这个服务直接暴露到公网。当前设计只适合可信局域网。
- 远程访问应通过可信 VPN 或带 HTTPS 与额外认证的反向代理,而不是直接端口映射。