给 PVE 概要页面做了一个添加硬件监控信息的脚本工具

28 天前
 MiKing233

先上图😁



下面是我最近的心路历程, 写的有点啰嗦:

事情的起因是之前一直依赖的 pve_source ( https://bbs.x86pi.com/thread?topicId=20) 已经好几年没再更新, 忘记从 ProxmoxVE 8.4.x 的哪个版本开始, 包括现在的 9.0, 应该是 pve-manager 改了什么东西, 导致用 pve_source 添加的监控信息变成了左对齐, 强迫症看着实在是受不了, 如图


如果只是用来看温度功耗风扇转速这些那还好, 起码看着怪了点功能至少是正常的, 但是新版本导致 pve_source 完全破坏了存储信息页面, 正常显示页面如下


使用 pve_source 修改后无法正常显示



但是由于这么些年, 早已习惯透过 PVE 管理页面来 review 一些硬件状态, 尤其是集群多节点的场景, 鼠标点点就能看到各个 Server 的状态, 而不需要 ssh 上去敲命令, 这个现状让我沮丧了很长一段时间, 包括后来基于 Debian13 的 PVE9 发布, 测试 pve_source 仍然是不能正常使用的, 但由于 pve_source 是不开源的, 原作者不更新你也没办法, 并且看论坛下面的留言也有不少人反馈新版本无法正常工作了, 但是看了一眼最后更新日期还是在 23 年 12 月, 无奈... 那段时间甚至都有打算 apt-mark hold pve-manager 永远钉在旧版本再也不升级

转机在九月初到来... 那天我和往常一样上班时间摸鱼逛逛 GitHub, 偶然发现一个项目 xiangfeidexiaohuo/pve-diy ( https://github.com/xiangfeidexiaohuo/pve-diy), 看了一下该项目修改自 shidahuilang/pve ( https://github.com/shidahuilang/pve) 并做了一些改进和优化, 最让我兴奋的当然还是开源, 但我实际使用了一下发现功能上相比 pve_source 还是欠缺太多, 并且很多功能甚至不能正常工作, 例如代码中注释掉的风扇转速部分, 删掉注释 PVE 的界面直接崩溃了, 其他的一些功能在我手上几台不同的小主机上测试也都有不同程度的问题, 并且坦白讲代码内部也有大量需要修复的逻辑错误, 不过好在他是开源的, 至少已经写好了一个不算太差的底子, 于是乎接下来的几周工作摸鱼时间, 基本都在一边测一边改

其实最开始我的想法其实也只是想把功能方面改到能正常自用就行, 不过这个脚本给了我一个启发, 它里面使用<strong>来加粗显示</strong>, 不过坦白讲我没感觉到变得有多粗, 于是乎我想看看这个加粗是不是真的生效了便改成了字体用红色渲染, 那会也不知道怎么了突然灵光乍现, 想着能不能用不同的颜色动态的渲染传感器输出的值, 这样温度高低, CPU 频率高低这些不就一眼扫过去看颜色就知道 loading 高低了吗, 说干就干后面的几周基本都在修 BUG 加功能, 到 9 月末基本已经实现了预期的所有功能, 回想这几周还挺兴奋的, 至少扫清了我升级到 PVE9 的障碍, 不过玩 PVE 的圈子我感觉还是太小, 想着 V 站应该会有不少用 PVE 的, 也许有和我一样最近被这个问题困扰的, 索性最后整理了一下决定开源到 Github 上

不过最近一周直到我发这篇帖子之前, 项目才最终上传到 Github 上, 因为过去的一周我发现一个, 社区约定俗成, 但是在安全上存在巨大隐性风险的问题...
由于 PVE 的前端页面是通过 pveproxy.service 这个服务运行的, 运行的用户不是 root 而是 www-data, 但想要前端显示这些监控项目, 例如硬盘的项目, 实际是使用 iostat 和 smartctl 这些命令输出的, wwww-data 没有 root 权限, 于是乎包含 pve_source 在内的这一票添加概览页监控的脚本, 直接简单粗暴的使用 chmod +s /usr/sbin/smartctl 这样的方式, 来让 www-data 用户可以用 root 权限运行这些命令, 但这也代表任何用户, 都可以用 root 来执行这些命令, 我个人感觉这埋下了一个巨大的坑, 如果这些程序包含潜在漏洞, 普通用户则可以借此提权到 root, 除非你保证这台 server 只有 root 一个用户
于是乎过去一周一直在处理这个问题, 不过好在算是想了一个比较完美的方案, 通过向/etc/sudoers.d 中为 www-data 添加特定几个监控用到的特定命令, 再让 www-data 以 sudo 来执行它们来减小风险影响范围, 不至于任何用户都可以 root 去执行这些命令


鉴于本人充其量最多算一个"系统管理员", 并不是专业的程序员, 而且手上也没有各种各样的设备用于测试, 项目刚刚起步, 如果可以请提 issue 帮助我继续完善, 如果这个项目能够帮到你我也倍感荣幸, 请不要吝啬你的 Star🤩

辛苦你看完我的絮絮叨叨😁
1830 次点击
所在节点    NAS
24 条回复
jinlong
27 天前
PVE 7 一路升级到 PVE 9 ,确实没有 sudo 命令。同样报错:
visudo 语法检查的详细错误信息:
--------------------------------------------------
./pve-manager-status.sh: line 176: visudo: command not found
jinlong
27 天前
apt 手动安装 sudo 后命令执行成功,但是 AMD R7 5825U 功耗显示错误,提示:
CPU 电源模式: performance | CPU 功耗: 0.00 W
可能没对 AMD 进行适配,必要时楼主可以优化下。

功能总体来说不错,感谢!
MiKing233
27 天前
@jinlong 那看起来 sudo 没有可能是个历史遗留问题, PVE7 没测试过, 但是我记得很清楚 PVE8 的 Debian12 和 PVE9 的 Debian13 安装好肯定是带 sudo 的. 功耗显示不正确的问题在 Github 提 issue 吧, 把 turbostat 命令完整执行结果贴出来.
aeron
27 天前
@MiKing233 #8 pve8 是没有 sodu 命令的,手动安装 sudo 后,可以安装成功

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1163417

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX