Proxmox VE(PVE) 添加Web控制台显示CPU和主板温度

2023-05-16

PVE 默认是没有CPU和主板温度显示的,为方便使用,我们自己加上

实际效果

pve添加Web控制台显示CPU和主板温度

版本和软件

  • Virtual Environment 6.1-3
  • putty 或 PVE自带的Shell 或 MobaXterm 等工具

安装硬件温度监控软件 lm-sensors

lm-sensors(Linux-monitoring sensors,Linux监控传感器)是一款linux的硬件监控的软件,可以帮助我们来监控主板,CPU的工作电压,风扇转速、温度等数据。

  1. 安装lm-sensor
apt-get install lm-sensors
  1. 验证lm-sensors的版本
sensors -v

显示

sensors version 3.5.0 with libsensors version 3.5.0
  1. 执行sensors-detect命令,获取可显示的温度

lm-sensors使用之前需要使用sensors-detect命令去配置它。

sensors-detect是一个与硬件传感器交互的脚本,用来探测哪些传感器可用并加载相关的内核模块。

运行下面的命令,然后按照屏幕提示进行操作。

sensors-detect 

确认项目比较多,全部默认yes就行,最后回车,yes
4. 执行sensors命令

使用sensors命令验证lm-sensors是否正常运行,显示出系统运行的温度状态和风扇转速等信息,这个信息就是我们所需要的。

sensors

显示


root@pve:~# sensors
iwlwifi-virtual-0
Adapter: Virtual device
temp1:            N/A

acpitz-acpi-0
Adapter: ACPI interface
temp1:        +27.8°C  (crit = +119.0°C)
temp2:        +29.8°C  (crit = +119.0°C)

coretemp-isa-0000
Adapter: ISA adapter
Package id 0:  +38.0°C  (high = +84.0°C, crit = +100.0°C)
Core 0:        +32.0°C  (high = +84.0°C, crit = +100.0°C)
Core 1:        +33.0°C  (high = +84.0°C, crit = +100.0°C)
Core 2:        +32.0°C  (high = +84.0°C, crit = +100.0°C)
Core 3:        +32.0°C  (high = +84.0°C, crit = +100.0°C)

i350bb-pci-0100
Adapter: PCI adapter
loc1:          +0.0°C  (high =  +0.0°C, crit =  +0.0°C)

我们可以看出

  • acpitz-acpi-0是主板温度
  • coretemp-isa-0000 是 CPU 温度

定制显示温度内容

PVE 的 WebUI 控制台是使用Node.js实现的,所以要修改对应的文件,使得其可以定期执行sensors命令,并将结果输出 Web 页面上。

修改Nodes.pm,获取温度

  1. 打开文件
vi /usr/share/perl5/PVE/API2/Nodes.pm
  1. 增加内容
  • 增加的内容
$res->{temperature} = `sensors`;   # 获取 CPU 和 主板 的温度

  • 增加的位置
    搜索指定内容
/my $dinfo = df('/', 1);

在搜索内容的上面,注意位置进行添加,比如我的在 352 行进行添加

...

        $res->{ksm} = {
            shared => $meminfo->{memshared},
        };

        $res->{swap} = {
            free => $meminfo->{swapfree},
            total => $meminfo->{swaptotal},
            used => $meminfo->{swapused},
        };

        $res->{pveversion} = PVE::pvecfg::package() . "/" .
            PVE::pvecfg::version_text();

        $res->{temperature} = `sensors`;   # 获取 CPU 和 主板 的温度

        my $dinfo = df('/', 1);     # output is bytes

        $res->{rootfs} = {
            total => $dinfo->{blocks},
            avail => $dinfo->{bavail},
            used => $dinfo->{used},
            free => $dinfo->{blocks} - $dinfo->{used},
        };

        return $res;
        
...

修改pvemanagerlib.js,显示温度

  1. 打开文件
vi /usr/share/pve-manager/js/pvemanagerlib.js
  1. 增加内容,添加页面显示内容
  • 增加的内容,内容要根据自己的实际情况修改,注意逗号“ , ”
,
        {
            itemId: 'temperature',
            colspan: 2,
            printBar: false,
            title: gettext('Temperature'),
            textField: 'temperature',
            renderer: function(value){
                const p0 = value.match(/Package id 0.*?\+([\d\.]+)?/)[1];
                const b0 = value.match(/temp1.*?\+([\d\.]+)?/)[1];
                const b1 = value.match(/temp2.*?\+([\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];

                return `CPU: ${p0}℃ | Core0: ${c0}℃ | Core1: ${c1}℃ | Core2: ${c2}℃ | Core3: ${c3}℃ | Board: ${b0} ℃ ${b1}℃ `
       }

const开头的常量名称和数量是由前文所说的sensors命令的输出结果决定的,对于不同的CPU类型其内容会有所不同,可能主板只有一个temp1,可能没有Package的名称,也可能会有多个Socket。

  • 增加的位置
    搜索指定内容
/itemId: 'version',

在内容的下面,注意位置进行添加,我的在 18719 行开始进行添加

...

        {
            itemId: 'version',
            colspan: 2,
            printBar: false,
            title: gettext('PVE Manager Version'),
            textField: 'pveversion',
            value: ''
        },
        {
            itemId: 'temperature',
            colspan: 2,
            printBar: false,
            title: gettext('Temperature'),
            textField: 'temperature',
            renderer: function(value){
                const p0 = value.match(/Package id 0.*?\+([\d\.]+)?/)[1];
                const b0 = value.match(/temp1.*?\+([\d\.]+)?/)[1];
                const b1 = value.match(/temp2.*?\+([\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];

                return `CPU: ${p0}℃ | Core0: ${c0}℃ | Core1: ${c1}℃ | Core2: ${c2}℃ | Core3: ${c3}℃ | Board: ${b0} ℃ ${b1}℃ `
       }
}
    ],

    updateTitle: function() {
        var me = this;
        var uptime = Proxmox.Utils.render_uptime(me.getRecordValue('uptime'));
        me.setTitle(me.pveSelNode.data.node + ' (' + gettext('Uptime') + ': ' + uptime + ')');
    }

});

...

修改完成,重启Web控制台

systemctl restart pveproxy

注意:

  • 若浏览器显示内容没有发生变化,可以按ctrl+F5强制刷新或者清理缓存后重试。
  • 若 Web 管理页面不能正常显示,如白屏,则可能代码有错误,应修改后重试。
  • 若 温度的显示值为null,请打开开发者工具,在Console中进行查看
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Proxmox VE(PVE) 添加Web控制台显示CPU和主板温度 的相关文章

  • NodeJS CPU 一次飙升至 100%

    我有一个用 NodeJS 编写的 SOCKS5 代理服务器 我正在使用原生net and dgram打开 TCP 和 UDP 套接字的库 它可以正常工作大约 2 天 所有 CPU 的最大利用率约为 30 两天没有重新启动后 一个 CPU 峰
  • 是否可以在VM内使用VMX CPU指令?

    VM guest 内部的进程是否有可能使用 VMX AMD V VT x CPU 指令 然后由外部 VMM 处理而不是直接在 CPU 上处理 Edit 假设外部VM使用VMX本身来管理其虚拟客户机 即它在Ring 1中运行 如果可能的话 是
  • 在脚本标签内工作的角度表达式

    如何在脚本标签内使用角度表达式 我对此很陌生并且需要帮助 这是我的 java 脚本代码的示例
  • 您可以在不是在 Google 协作平台下创建的网站上使用 Google 脚本吗? [复制]

    这个问题在这里已经有答案了 Google 脚本有一种方法可以嵌入到 Google 网站中 但我想知道是否可以在非 Google 托管的网站上使用 Google 脚本 此 google 脚本的目的是作为 Javascript 的简单替代方案
  • 确定网站的唯一访问者

    我正在创建一个 django 网站 使用 Apache2 作为服务器 我需要一种方法来以完整的证据方式确定我的网站 特别是每个页面 的唯一访问者数量 不幸的是 用户会有很大的动机去尝试 玩弄 跟踪系统 所以我正在努力证明这一点 有什么办法可
  • 如何在您的网站中连接两个人

    有一款名为 Verbosity 的游戏 这是一款有目的的游戏 位于此链接上www gwap com 在游戏中 他们随机连接两个玩家互相玩 游戏是玩家1应该向他的搭档 玩家2 描述一个单词 而玩家2应该猜测这个单词 我正在尝试建立一个网站来执
  • 我想将我的 NEXT.js 项目链接到静态网站

    我有一个使用 HTML CSS 开发的网站 它是一个静态网站 但现在我使用 NEXT js 与 Strapi API 集成创建了一个博客项目 我的问题是如何将我的静态网站与我的 Next js 项目链接起来 我尝试使用链接标签 但没有用 i
  • 找出 CPU 时钟频率(每个内核、每个处理器)

    像 CPUz 这样的程序非常擅长提供有关系统的深入信息 总线速度 内存时序等 但是 是否有一种编程方法可以计算每个核心 以及每个处理器 在每个 CPU 具有多个核心的多处理器系统中 频率 而无需处理 CPU 特定信息 我正在尝试开发一个反作
  • Bootstrap - 为反向行模式创建移动自适应

    我想用 Bootstrap 创建一个反向效果 第一行 左边是文字 右边是图像 第二行 左边是图片 右边是文字 第三行 左边是文字 右边是图片 第四行 左边是图片 右边是文字 而且这种情况一直持续下去 它在大型设备上看起来非常漂亮 但当它在设
  • 向下滚动时如何使图像移动?

    这是我想要实现的目标的示例 https www flambette com en https www flambette com en 我尝试过更改图像的 css 属性 但效果不能满足我的需求 我尝试过以下代码 mydocument on
  • 有没有办法以编程方式下载网页的部分内容,而不是整个 HTML 正文?

    我们只需要 nytimes com technology 上的 HTML 文档中的特定元素 该页面包含许多文章 但我们只想要文章的标题 该标题位于 如果我们使用 wget cURL 或任何其他工具或某些包 例如Python 中的请求 htt
  • Drupal 模板/主题资源或建议?

    我有兴趣为我正在开发的 Drupal 网站创建自定义主题 我是 Drupal 的新手 但是我在处理构建主题 CSS PHP HTML 所需的基本概念方面拥有相当多的经验 所以 我的问题是 我从哪里开始 有创建 Drupal 主题的规范指南吗
  • prometheus中每个节点的CPU使用率

    理想情况下 我必须找出每个节点上 Pod 的 CPU 使用率百分比 但我试图找出每个节点的CPU使用率 我已经编写了查询 但它给了我超过 100 可以是 150 200 即使包含多个 cpu 的情况 我取了平均值 您能帮我理解下面的查询有什
  • 如果谷歌的主页如此之小,为什么源代码只有数百行代码? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 代码被缩小了 但重新格式化后只有几百行代码 我想象这样一个最小的页面也有最少的代码 源代码这么长 Google 到底在做什么 我可以看到很多都是
  • 在 Ruby 中创建带有静态页面的博客的最佳方法

    我刚刚访问了静态网站生成 http www ruby toolbox com categories static website generation html on 红宝石工具箱 http www ruby toolbox com 我不知
  • 直接从 Javascript 代码访问 SVG 文件

    我有这个 HTML 代码 它调用我的 javascript 代码 该代码用于仪表 在 javascript 代码中 我尝试访问 SVG 文件 并修改 仪表的 指针以显示所需的值 该代码运行良好 但是 我不想在 HTML 中调用 对象 id
  • 遭受xss攻击后如何恢复站点?

    最近我正在研究XSS攻击以及它们对网站的破坏性有多大 让我惊讶的是 网络 even SO 充满了关于如何防止xss攻击但没有相关资源说明如何在网站受到 xss 攻击后恢复网站 我遇到过一些事情 比如 将备份网站代码上传回服务器 下载整个网站
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • 使用脚本从网站中提取电子邮件地址

    给定一个网站 我想知道以编程方式和 或使用脚本的最佳程序是什么 以纯文本形式提取每个页面上存在的所有电子邮件地址 电子邮件受保护 cdn cgi l email protection从该链接和下面的所有站点 递归或直到某个固定深度 使用 s
  • 获取url,给定的url重定向到

    我从 rss 链接中挖掘数据并获得一堆网址 例如 http feedproxy google com r electricpig 3 qoF8XbocUbE http feedproxy google com r electricpig 3

随机推荐

  • 深度探索C++对象模型

    深度探索C 43 43 对象模型 参考链接 第1章 关于对象 Object Lessons C 43 43 的额外成本三种对象模型简单对象模型表格驱动对象模型C 43 43 对象模型 class和struct关键字的差异三种编程典范一个类的
  • 用单片机控制直流电机

    一 设计方案比较与分析 xff1a 1 电机调速控制模块 xff1a 方案一 xff1a 采用电阻网络或数字电位器调整电动机的分压 xff0c 从而达到调速的目的 但是电阻网络只能实现有级调速 xff0c 而数字电阻的元器件价格比较昂贵 更
  • python-类

    面向对象 在编程语言中 xff0c 我们将变量看成数据 xff0c 它用来存储多种形式的值 xff1b 我们将函数看成操作 xff0c 它用来对数据进行某些处理 所有的代码都由数据和操作构成 xff0c 程序运行的本质就是对数据进行各种操作
  • 求模逆元算法的C/C++实现

    include lt stdio h gt Name Copyright Author 64 dujianjian Date 01 11 12 11 26 Description 递归 三元组gcd a b 61 61 ax 43 by 6
  • python显示当前时间

    1 先导入库 xff1a import datetime 2 获取当前日期和时间 xff1a now time 61 datetime datetime now 3 格式化成我们想要的日期 xff1a strftime xff08 xff0
  • pandas中Series的使用

    文章目录 pandas的应用创建Series对象索引花式索引布尔索引Series对象的常用属性describe 方法 xff1a value count 方法unique 方法数据处理的方法 isnull 和notnull dropna 和
  • 什么是数据挖掘

    文章目录 什么是数据挖掘1 分类问题2 聚类问题3 回归问题 数据挖掘相关的标准库 数据挖掘模型训练分类问题聚类问题回归问题关联问题 模型集成模型评估评估指标混淆矩阵与标准率指标泛化能力评估 什么是数据挖掘 数据挖掘就是寻找数据中隐含的知识
  • Json数据传递参数

    文章目录 Json数据传递参数集合参数 xff1a Json格式POJO参数 xff1a json格式集合参数 xff1a json格式 64 RequestBody与 64 RequestParam的区别时间参数的转换 Json数据传递参
  • MybatisPlus的知识点

    文章目录 MybatisPlus的知识点常用注解分页功能 条件查询方式按条件查询NULL值处理查询投影查询条件的设定字段映射与表名映射id生成策略 xff08 insert xff09 逻辑删除 xff08 Delete Update xf
  • cookie和session

    文章目录 会话跟踪技术Cookie基本使用 Session服务器重启后 xff0c Session中的数据是否还在 会话跟踪技术 会话 xff1a 用户打开浏览器 xff0c 访问web服务器的资源 xff0c 会话建立 xff0c 直到一
  • 【Django】修改端口号与地址

    在启动 Django 项目时 xff0c Django 默认监听的端口号为 8000 xff0c 设置的默认 IP 地址为 127 0 0 1 如果需要修改默认的端口号和 IP 地址 xff0c 可以通过命令行 配置文件 PyCharm 这
  • 【mdk报错】Error: L6218E: Undefined symbol XXXX (referred from main.o)

    一种情况就是没有在用户文件夹中添加文件 xff08 如LED c xff09 第二种错误 xff1a 错误描述为 xff1a OBJ Template axf Error L6218E Undefined symbol main refer
  • Codeforces 1462 C. Unique Number

    Codeforces 1462 C Unique Number 题目链接 xff1a https codeforces com problemset problem 1462 C You are given a positive numbe
  • nohup: failed to run command 'java': No such file or directory

    文章目录 问题现象 xff1a 解决办法 xff1a 问题现象 xff1a 在Ambari平台启动某个服务时 xff0c 会在ambari server节点执行类型nohup java jar XX jar这样的指令 如果把这个指令单独拿出
  • opencv学习笔记(二)-对xml和yaml文件的读写操作

    一 xml和yaml的简单介绍 所谓的xml 就是eXtensible Markup Language 翻译成中文就是 可扩展标识语言 首先XML是一种元标记语言 xff0c 所谓 元标记 就是开发者可以根据自己的需要定义自己的标记 xff
  • 图形化CentOS7.5安装Xrdp服务使通过Windows远程桌面连接

    文章目录 安装启动远程连接 安装 离线的操作系统iso中没有这个包 xff0c 这里使用阿里的yum原下载安装 span class token comment 备份本地源 span span class token function mv
  • centos7 安装FreeSWITCH1.10.7

    好长时间没有安装新的FreeSWITCH了 xff0c 只是知道1 10 4以后spandsp和sofia sip分离出来 xff0c 需要单独编译 xff0c 但上次的实际操作还是很久之前 xff0c 今天又安装了一次 xff0c 索性将
  • Golang实现字符串长度截取,支持正反向

    func main fmt Println SubStr 34 helloword 34 1 1 start xff1a 起始下标 xff0c 负数从尾部开始 xff0c 1为最后一个 length xff1a 截取长度 xff0c 负数表
  • 配置CDN加速域名

    cdn域名加速配置教程 xff0c 切记加速域名与源站域名不能是同一个 第一步 xff1a 打开服务器管理控制台 找到cdn管理 第二部 xff1a 配置源站信息 第三步 xff1a 点击下一步进行审批 第四步 xff1a 审批通过后进行配
  • Proxmox VE(PVE) 添加Web控制台显示CPU和主板温度

    PVE 默认是没有CPU和主板温度显示的 xff0c 为方便使用 xff0c 我们自己加上 实际效果 版本和软件 Virtual Environment 6 1 3putty 或 PVE自带的Shell 或 MobaXterm 等工具 安装