码农行者 码农行者
首页
  • Python

    • 语言特性
    • Django相关
    • Tornado
    • Celery
  • Golang

    • golang学习笔记
    • 对比python学习go
    • 模块学习
  • JavaScript

    • Javascript
  • 数据结构预算法笔记
  • ATS
  • Mongodb
  • Git
云原生
运维
垃圾佬的快乐
  • 数据库
  • 机器学习
  • 杂谈
  • 面试
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

DeanWu

软件工程师
首页
  • Python

    • 语言特性
    • Django相关
    • Tornado
    • Celery
  • Golang

    • golang学习笔记
    • 对比python学习go
    • 模块学习
  • JavaScript

    • Javascript
  • 数据结构预算法笔记
  • ATS
  • Mongodb
  • Git
云原生
运维
垃圾佬的快乐
  • 数据库
  • 机器学习
  • 杂谈
  • 面试
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • pve 传感器温度显示改造

    • 其他参考
    • 硬件
    • pve
    DeanWu
    2023-06-16
    目录

    pve 传感器温度显示改造

    pve web 端后端是依赖 node.js,前端基于 extjs 渲染,修改主要设计两个文件,文件位置如下:

    • /usr/share/perl5/PVE/API2/Nodes.pm 后端数据生成;

    • /usr/share/pve-manager/js/pvemanagerlib.js 前端展示渲染;

    主要思路为,利用相关查询命令把数据查询出来,再在前端格式化渲染。

    cpu 温度使用 sensors 命令,需要单独安装;apt-get install lm-sensors,命令如下:sensors -j。

    硬盘温度使用 hddtemp 命令,需要单独安装:apt-get install hddtemp,命令如下:hddtemp /dev/sd?

    nvme 使用 smartctl 命令,命令如下: smartctl /dev/nvme0 -a -j

    也可添加其他信息。

    详细需改如下,7.x 版本应该都适用。

    Nodes.pm 修改如下:

    ...
        $res->{ksm} = {
    
    	    shared => $meminfo->{memshared},
    
    	};
    
    	$res->{sensinfo} = `sensors -j`; // <-- 添加该条 cpu 温度
        $res->{cpuhz} = `lscpu |grep MHz`; // <-- 添加该条 cpu 主频
    
    	$res->{swap} = {
    	    free => $meminfo->{swapfree},
    	    total => $meminfo->{swaptotal},
    	    used => $meminfo->{swapused},
    	};
    
    	$res->{pveversion} = PVE::pvecfg::package() . "/" .
    	    PVE::pvecfg::version_text();
    ...
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19

    pvemanagerlib.js ,可搜 PVE.node.StatusView 定位,修改如下:

    	{
    	    itemId: 'cpus',
    	    colspan: 2,
    	    printBar: false,
    	    title: gettext('CPU(s)'),
    	    textField: 'cpuinfo',
    	    renderer: Proxmox.Utils.render_cpu_model,
    	    value: '',
    	},
        {   // 新增cpu 温度渲染
            itemId: 'sensinfo',
            colspan: 2,
            printBar: false,
            title: gettext('CPU核心温度'),  
            textField: 'sensinfo',
            renderer:function(value){
    		        value = JSON.parse(value.replaceAll('Â', ''));
            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);
    	    // const f1 = value['it8786-isa-0a40']['fan1']['fan1_input'].toFixed(1);  // 主板温度
    		        return `CPU核心温度: ${c0}℃ | ${c1}℃ | ${c2}℃ | ${c3}℃`;  
                    
            }
    	},
    	{   // 新增 硬盘温度渲染
            itemId: 'hddtempinfo',
            colspan: 2,
            printBar: false,
            title: gettext('硬盘温度'),
            textField: 'hddtempinfo',
            renderer: function(value) {
                value = value.replaceAll('Â', '',);
                return value.replaceAll('\n', '<br>');
            }
        },
    	{
    	    itemId: 'kversion',
    	    colspan: 2,
    	    title: gettext('Kernel Version'),
    	    printBar: false,
    	    textField: 'kversion',
    	    value: '',
    	},      
    ...
    
    
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47

    修改前端页面高度:

    Ext.define('PVE.node.StatusView', {
        extend: 'Proxmox.panel.StatusView',
        alias: 'widget.pveNodeStatus',
    
        height: 400,  // <-- 修改改高度 
        bodyPadding: '15 5 15 5',
    
        layout: {
    	type: 'table',
    	columns: 2,
    	tableAttrs: {
    	    style: {
    		width: '100%',
    	    },
    	},
        },
        ...
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17

    # 其他参考

    • 一键处理脚本 https://www.right.com.cn/forum/thread-6754687-1-1.html
    • pve 一键脚本工具 https://github.com/ivanhao/pvetools
    #pve
    上次更新: 2023/07/03, 21:23:35
    最近更新
    01
    chromebox/chromebook 刷bios步骤
    03-01
    02
    redis 集群介绍
    11-28
    03
    go语法题二
    10-09
    更多文章>
    Theme by Vdoing | Copyright © 2015-2024 DeanWu | 遵循CC 4.0 BY-SA版权协议
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式