增加PVE显示温度功能,我的CPU是10核心,所以全都显示出来了,还有最后一项主板温度也加上去了
修改方法如下
1. 安装lm-sensors
lm-sensors(Linux-monitoring sensors,Linux监控传感器)是是一款免费的Linux开源软件工具,提供监控温度,电压,湿度和风扇的工具和驱动程序。它也可以检测机箱入侵。
安装lm-sensor的方法很简单,在PVE的shell下运行命令即可完成,具体命令如下:
1 |
apt-get install lm-sensors |
安装完成后,可以运行命令“sensors-detect”来探测哪些传感器可用并加载相关的内核模块。通常全部默认yes即可,最后提示时候按回车完成!
之后执行命令“sensors”即可显示出系统运行的温度状态和风扇转速等信息:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
coretemp-isa-0000 Adapter: ISA adapter Package id 0: +43.0°C (high = +76.0°C, crit = +86.0°C) Core 0: +35.0°C (high = +76.0°C, crit = +86.0°C) Core 1: +34.0°C (high = +76.0°C, crit = +86.0°C) Core 2: +42.0°C (high = +76.0°C, crit = +86.0°C) Core 3: +38.0°C (high = +76.0°C, crit = +86.0°C) Core 4: +43.0°C (high = +76.0°C, crit = +86.0°C) Core 8: +37.0°C (high = +76.0°C, crit = +86.0°C) Core 9: +36.0°C (high = +76.0°C, crit = +86.0°C) Core 10: +34.0°C (high = +76.0°C, crit = +86.0°C) Core 11: +37.0°C (high = +76.0°C, crit = +86.0°C) Core 12: +35.0°C (high = +76.0°C, crit = +86.0°C) adt7473-i2c-3-2e Adapter: nvkm-0000:06:00.0-bus-0002 in1: +3.00 V (min = +0.00 V, max = +2.99 V) +3.3V: +3.35 V (min = +0.00 V, max = +4.39 V) fan1: 3089 RPM (min = 0 RPM) fan2: 0 RPM (min = 0 RPM) fan3: 0 RPM (min = 0 RPM) temp1: +45.5°C (low = +70.0°C, high = +110.0°C) ALARM (crit = +115.0°C, hyst = +113.0°C) Board Temp: +41.5°C (low = -63.0°C, high = +191.0°C) (crit = +100.0°C, hyst = +96.0°C) temp3: +45.8°C (low = -63.0°C, high = +191.0°C) (crit = +115.0°C, hyst = +111.0°C) nouveau-pci-0600 Adapter: PCI adapter GPU core: +1.00 V (min = +1.00 V, max = +1.10 V) fan1: 0 RPM temp1: +57.0°C (high = +95.0°C, hyst = +3.0°C) (crit = +100.0°C, hyst = +2.0°C) (emerg = +135.0°C, hyst = +5.0°C) |
上面的结果显示了当前的温度状态,其中,CPU的温度和主板温度是我们需要关注的内容。在后文中将根据这个输出结果来进行配置来显示温度状态。
2. 编辑修改文件
PVE使用Node.js来实现基于WebUI的管理,修改此文件的目的就是让其能定期执行sensors命令,并将结果输出Web页面上。具体的修改方法如下:
2.1. Nodes.pm
编辑文件”/usr/share/perl5/PVE/API2/Nodes.pm”,添加如下内容:
1 |
$res->{thermalstate} = `sensors`; |
2.2.pvemanagerlib.js
编辑文件”/usr/share/pve-manager/js/pvemanagerlib.js”,这里需要修改3处地方:
第1处:修改页面的显示范围,以完整显示新添加的CPU温度状态。修改内容如下:
第2处:修改页面的显示范围,修改内容如下:
第3处:修改页面的显示内容,即相关的温度状态。添加内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
}, { itemId: 'thermal', colspan: 2, printBar: false, title: gettext('Thermal State'), textField: 'thermalstate', renderer:function(value){ const p0 = value.match(/Package id 0.*?\+([\d\.]+)?/)[1]; const b0 = value.match(/Board Temp.*?\+([\d\.]+)?/)[1]; const c0 = value.match(/Core 0.*?\+([\d\.]+)?/)[1]; const c1 = value.match(/Core 1.*?\+([\d\.]+)?/)[1]; const c2 = value.match(/Core 2.*?\+([\d\.]+)?/)[1]; const c3 = value.match(/Core 3.*?\+([\d\.]+)?/)[1]; const c4 = value.match(/Core 4.*?\+([\d\.]+)?/)[1]; const c8 = value.match(/Core 8.*?\+([\d\.]+)?/)[1]; const c9 = value.match(/Core 9.*?\+([\d\.]+)?/)[1]; const c10 = value.match(/Core 10.*?\+([\d\.]+)?/)[1]; const c11 = value.match(/Core 11.*?\+([\d\.]+)?/)[1]; const c12 = value.match(/Core 12.*?\+([\d\.]+)?/)[1]; return `Package: ${p0} | Core: ${c0} | ${c1} | ${c2} | ${c3} | ${c4} | ${c8} | ${c9} | ${c10} | ${c11} | ${c12} | Board: ${b0} ` } |
注意:“const”开头的常量名称和数量是由前文所说的“sensors”命令的输出结果决定的,对于不同的CPU类型其内容会有所不同,在本文中是我自己的名称来设定的。对于其他类型的CPU,可能没有Package的名称,或者会有(多个Socket)。
3. 重启PVE的Web管理服务
修改完成后,重新启动PVE的Web管理服务使修改生效,其命令如下:
1 |
systemctl restart pveproxy |
至此,PVE主机就可以显示出系统的CPU温度状态了。如下图所示:
注意:若浏览器显示内容没有发生变化,可以按ctrl+F5强制刷新或者清理缓存后重试。若Web管理页面不能正常显示则可能代码有错误,应修改后重试。
本方法在Proxmox VE 5.3-8下验证通过。
参考资料:http://everun.top/helpcenter/others/pve-tips-2.html
- 本站教程,未注明转载均为原创内容,仅做为学习参考使用,切勿用于非法及商业用途!造成的后果作者不承担任何责任!
- 如果转载请注明出处!oD^Blog
- 本文如果需要更新,或者失效请联系微信 : oldiy2018 【微信不解答任何问题,不接收任何红包!】
- 如果支持作者,请点击下方赞赏,支持一杯饮料!
- 如果有问题可以点击【加入电报群】和我一起沟通或者下方留言讨论!
微信赞赏支付宝赞赏
求分享你的这两个文件,我用的是5.3-12版本,已经改乱了。。。崩溃。。。
建议你重新做一下那些图,最好是在VIM的时候把行号带上
CPU核心数不同,无法分享