在利用PVE打造ALL IN ONE主机的时候,经常会担心因为CPU、硬盘温度过高导致性能受到影响。如果能在PVE在web界面上显示温度就能非常利于我们对设备温度的监控。下面就是让PVE显示CPU温度的详细步骤。
准备工作:
1、提前准备WinSCP,用来修改PVE的系统文件。
2、备份PVE中下面两个文件:
/usr/share/perl5/PVE/API2/Nodes.pm /usr/share/pve-manager/js/pvemanagerlib.js
操作步骤:
一、安装插件
1、安装sensors插件
打开PVE界面中的>_Shell ,执行命令: apt-get install lm-sensors
2、选择Y安装sensors
3、传感器探测,命令:sensors-detect
(通常情况下全部按默认选择 Y 即可,直到传感器检测完成,最后按 回车键 即可)
4、测试打印传感器数据
执行sensors
,会打印出主板温度、封装温度、核心温度、风扇转速等,实际取决于可用的传感器,但核心温度基本都有。
后面我们会使用sensors -j
这个命令,输出JSON解析方便。
5、安装hddtemp
执行apt-get install hddtemp
安装,可能需要良好网络环境。
5、测试打印硬盘温度
执行hddtemp /dev/sd?看是否能打印出设备温度。
如果没有的话,可以执行lsblk看看是不是有nvme的设备,更换一下命令后面的设备名试一下,如果不行就需要用smartctl之类的工具获取温度了。
6、允许普通用户运行hddtemp
如果后续无法在web页面上显示硬盘温度,则需要执行此步骤。执行chmod +s /usr/sbin/hddtemp,这将允许所有用户以root身份执行此文件。默认情况下,pveproxy似乎是以www-data
配置页面
1、编辑pm文件
编辑/usr/share/perl5/PVE/API2/Nodes.pm
,搜索pveversion
快速直达此部分。添加如下代码。
...
$res->{thermal_cpu} = `sensors -j`; #JSON格式输出传感器数据
$res->{thermal_hdd} = `hddtemp /dev/sd?`; # 获取硬盘温度
...
编辑
/usr/share/pve-manager/js/pvemanagerlib.js
。第一部分,修改显示框高度。搜索
pveNodeStatus
快速直达此部分。此处建议先加100,然后根据效果以20为单位修改。
... Ext.define('PVE.node.StatusView', { extend: 'Proxmox.panel.StatusView', alias: 'widget.pveNodeStatus', height: 380, // 增加这行的值,原始值300 bodyPadding: '15 5 15 5', ...
第二部分,增加内容块。搜索pveversion快速直达此部分。此处可以直接根据js语法修改
...
{
itemId: 'version',
colspan: 2,
printBar: false,
title: gettext('PVE Manager Version'),
textField: 'pveversion',
value: '',
},
// ======== 从这里开始是添加的内容(缩进和换行不重要) ========
{
itemId: 'thermal-cpu', // 这个值不重要,但别和别的itemId重复了
colspan: 2,
printBar: false,
title: gettext('CPU Temperature'), // 字段显示标题,可自行修改
textField: 'thermal_cpu', // 这里的值和前面的pm文件对应
renderer: function(value) {
value = JSON.parse(value);
const c0 = value['coretemp-isa-0000']['Core 0']['temp2_input'].toFixed(1);
const c1 = value['coretemp-isa-0000']['Core 1']['temp3_input'].toFixed(1);
const c2 = value['coretemp-isa-0000']['Core 2']['temp4_input'].toFixed(1);
const c3 = value['coretemp-isa-0000']['Core 3']['temp5_input'].toFixed(1);
return `CPU核心温度: ${c0}℃ | ${c1}℃ | ${c2}℃ | ${c3}℃`;
}
},
{
itemId: 'thermal-hdd',
colspan: 2,
printBar: false,
title: gettext('HDD Temperature'),
textField: 'thermal_hdd',
renderer: function(value) {
value = value.replaceAll('Â', ''); // 硬盘输出的结果在摄氏度前面确实有这个乱码,替换一下
return value.replaceAll('\n', '<br/>');
}
},
// ======== 添加的内容到这里结束 ========
],
...
3、重启pveproxy服务
执行systemctl restart pveproxy
,浏览器刷新如果不生效,记得清空缓存再刷新。
4、效果
到此就可看到CPU的温度,老猫用的硬盘没有传感器所以无法显示温度。
评论(0)