PVE 首页添加温度

PVE 首页添加温度

2023/09/23

pve 首页添加温度

1. 依赖配置

# 安装依赖
apt install lm-sensors

# 检测可用传感器
sensors-detect

# 测试 -j 参数表示 json 输出
sensors -j

2. 修改源码

vi 编辑按键不对解决: nano /etc/vim/vimrc.tinyset compatible 改为 set nocompatible

修改后端

/usr/share/perl5/PVE/API2/Nodes.pm, 修改完成后需要重启 systemctl restart pveproxy

# 搜索此部分
$res->{ksm} = {
    shared => $meminfo->{memshared},
};

# 追加的内容
$res->{sensinfo} = `sensors -j`; 

修改前端

/usr/share/pve-manager/js/pvemanagerlib.js, 修改完成后强制刷新浏览器

  1. 在 cpu 信息下展示:
    # 搜索此部分
    {
        itemId: 'cpus',
        colspan: 2,
        printBar: false,
        title: gettext('CPU(s)'),
        textField: 'cpuinfo',
        renderer: Proxmox.Utils.render_cpu_model,
        value: '',
    },
    
    # 追加的内容, getattr 具体参数根据 `sensors -j` 调整
    {
      itemId: 'sensinfo',
      colspan: 2,
      printBar: false,
      title: gettext('SensorInfo'),
      textField: 'sensinfo',
      renderer: function (value) {
        const getattr = (data, field) => field.split('.').reduce((p, c) => p ? p[c] : null, data);
    
        const unit = '°C';
        const data = JSON.parse(value);
        const cpuPkg = getattr(data, "coretemp-isa-0000.Package id 0.temp1_input")?.toFixed(1);
        const cpus = [
          getattr(data, "coretemp-isa-0000.Core 0.temp2_input"),
          getattr(data, "coretemp-isa-0000.Core 1.temp3_input"),
          getattr(data, "coretemp-isa-0000.Core 2.temp4_input"),
          getattr(data, "coretemp-isa-0000.Core 3.temp5_input"),
        ];
        const disks = [
          getattr(data, "nvme-pci-0400.Composite.temp1_input"),
          getattr(data, "nvme-pci-0400.Sensor 1.temp2_input"),
          getattr(data, "nvme-pci-0400.Sensor 2.temp3_input"),
        ];
    
        return `CPU温度: ${cpuPkg}${unit} (${cpus.map(d => d?.toFixed(1) + unit).join(' | ')})<br/>
                硬盘: &emsp;&emsp;${disks.map(d => d?.toFixed(1) + unit).join(' | ')}`;
      },
      value: '',
    },
Last updated on