PVE的优化与温度监控(三)—数据界面精简美化

PVE虚拟化平台之开启温度显示方法 阅读详情
AI摘要

文章围绕PVE的优化与温度监控展开,指出恩山大佬展示源码方式不够DIY,不能自主选择监控数据。提出优化需求,即确定所需参数单独归类、按需显示。还介绍了代码操作,如通过mobaxterm拉取地址文件,可根据需求调整温度、关注CPU状态及修改nvme和sata信息。

首先阅读源码,恩山大佬的方式是全部展示,但是有很多数据是我们在快速管理页面根本不需要注意的数据,但是恩山大佬的显示方式不够DIY 并不能够自己任意选择需要监控的数据,就想某种monitor软件一样,可以在电脑的副屏展示很多参数。

如果通过这篇文章来操作优化:PVE的优化与温度监控(一)-优快云博客文章浏览阅读143次。【代码】G37-14 软路由小主机中PVE8.x 的优化与温度监控。https://blog.youkuaiyun.com/KeyBordkiller/article/details/143882846?spm=1001.2014.3001.5501

 那么你应该看到的状态是这样的:

对个人来说过于冗余,不够直观迅速 

修改后

需求:确定需要的参数并单独归类,按需打开显示。

1.代码

地址文件通过mobaxterm直接拉下来:

/usr/share/pve-manager/js/pvemanagerlib.js

1.1根据需求调整需要的温度 

{
    itemId: 'thermal',
    colspan: 2,
    printBar: false,
    title: gettext('温度'),
    textField: 'thermalstatus',
    renderer: function(value) {
		//cpu
		const p0 = value.match(/Package id 0.*?\+([\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];
		
		//board
        
		//NVMe
        const NVMe_t_composite = value.match(/Composite.*?\+([\d\.]+)?/)[1];
        //const NVMe_t_Sensor1 = value.match(/Sensor 1.*?\+([\d\.]+)?/)[1];
		//const NVMe_t_Sensor2 = value.match(/Sensor 2.*?\+([\d\.]+)?/)[1];
		
		//fan
        const cpu_fan = value.match(/(?<=:\s+)([1-9]\d*)(?=\s+RPM)/)[1];
        return `CPU: ${p0}℃ | NVMe: ${NVMe_t_composite}℃ | 风扇:${cpu_fan} RPM `
    }
},

关联文件及代码:

/usr/share/perl5/PVE/API2/Nodes.pm
$res->{thermalstatus} = `sensors -A`;

 1.2cpu性能只需要cpu的状态即可

	{
		  itemId: 'cpumhz',
		  colspan: 2,
		  printBar: false,
		  title: gettext('CPU状态'),
		  textField: 'cpuFreq',
		  renderer:function(v){
			//return v;
			/*console.log(v);
			let m = v.match(/(?<=^cpu[^\d]+)\d+/img);
			let m2 = m.map( e => ( e / 1000 ).toFixed(1) );
			m2 = m2.join(' | ');*/
			
			let gov = v.match(/(?<=^gov:).+/im)[0].toUpperCase();
			
			/*let min = (v.match(/(?<=^min:).+/im)[0]);
			if ( min !== 'none' ) {
				min=(min/1000000).toFixed(1);
			}
			
			let max = (v.match(/(?<=^max:).+/im)[0])
			if ( max !== 'none' ) {
				max=(max/1000000).toFixed(1);
			}
			
			let watt= v.match(/(?<=^pkgwatt:)[\d.]+$/im);
			watt = watt? " | 功耗: " + (watt[0]/1).toFixed(1) + 'W' : '';*/
			
			//return `${m2} | MAX: ${max}GHz| MIN: ${min}GHz ${watt} | CPU性能: ${gov}`
			return `CPU性能: ${gov}`
		 }
	},

 1.3nvme 和sata信息简单进行修改即可

		{
			  itemId: 'nvme00',
			  colspan: 2,
			  printBar: false,
			  title: gettext('NVMe'),
			  textField: 'nvme0',
			  renderer:function(value){
				//return value;
				try{
					let  v = JSON.parse(value);
					//名字
					let model = v.model_name;
					if (! model) {
						return '找不到硬盘,直通或已被卸载';
					}
					// 温度
					let temp = v.temperature?.current;
					temp = ( temp !== undefined ) ? " | " + temp + '°C' : '' ;
					
					// 通电时间
					let pot = v.power_on_time?.hours;
					let poth = v.power_cycle_count;
					
					pot = ( pot !== undefined ) ? (" | 通电: " + pot + '时' + ( poth ? ',次: '+ poth : '' )) : '';
					
					// 读写
					let log = v.nvme_smart_health_information_log;
					let rw=''
					let health=''
					if (log) {
						let read = log.data_units_read;
						let write = log.data_units_written;
						read = read ? (log.data_units_read / 1956882).toFixed(1) + 'T' : '';
						write = write ? (log.data_units_written / 1956882).toFixed(1) + 'T' : '';
						if (read && write) {
							rw = ' | R/W: ' + read + '/' + write;
						}
						//let pu = log.percentage_used;
						//let me = log.media_errors;
						/*if ( pu !== undefined ) {
							health = ' | 健康: ' + ( 100 - pu ) + '%'
							if ( me !== undefined ) {
								health += ',0E: ' + me
							}
						}*/
					}

					// smart状态
					let smart = v.smart_status?.passed;
					if (smart === undefined ) {
						smart = '';
					} else {
						smart = ' | SMART: ' + (smart ? '正常' : '警告!');
					}
					
					
					let t = model  + temp + health  + smart;
					//console.log(t);
					return t;
				}catch(e){
					return '无法获得有效消息';
				};

			 }
		},
		{
			itemId: 'sd00',
			colspan: 2,
			printBar: false,
			title: gettext('HDD'),
			textField: 'sd0',
			renderer:function(value){
			  //return value;
			  try{
				  let  v = JSON.parse(value);
				  console.log(v)
				  if (v.standy === true) {
					  return '休眠中'
				  }
				  
				  //名字
				  let model = v.model_name;
				  if (! model) {
					  return '找不到硬盘,直通或已被卸载';
				  }
				  // 温度
				  let temp = v.temperature?.current;
				  temp = ( temp !== undefined ) ? " | 温度: " + temp + '°C' : '' ;
				  
				  // 通电时间
				  let pot = v.power_on_time?.hours;
				  let poth = v.power_cycle_count;
				  
				  pot = ( pot !== undefined ) ? (" | 通电: " + pot + '时' + ( poth ? ',次: '+ poth : '' )) : '';
				  
				  // smart状态
				  let smart = v.smart_status?.passed;
				  if (smart === undefined ) {
					  smart = '';
				  } else {
					  smart = ' | SMART: ' + (smart ? '正常' : '警告!');
				  }
				  
				  
				  //let t = model + temp  + pot + smart;
				  let t = model + temp  + smart;
				  //console.log(t);
				  return t;
			  }catch(e){
				  return '无法获得有效消息';
			  };
		   }
	  },		{
			  itemId: 'nvme00',
			  colspan: 2,
			  printBar: false,
			  title: gettext('NVMe'),
			  textField: 'nvme0',
			  renderer:function(value){
				//return value;
				try{
					let  v = JSON.parse(value);
					//名字
					let model = v.model_name;
					if (! model) {
						return '找不到硬盘,直通或已被卸载';
					}
					// 温度
					let temp = v.temperature?.current;
					temp = ( temp !== undefined ) ? " | " + temp + '°C' : '' ;
					
					// 通电时间
					let pot = v.power_on_time?.hours;
					let poth = v.power_cycle_count;
					
					pot = ( pot !== undefined ) ? (" | 通电: " + pot + '时' + ( poth ? ',次: '+ poth : '' )) : '';
					
					// 读写
					let log = v.nvme_smart_health_information_log;
					let rw=''
					let health=''
					if (log) {
						let read = log.data_units_read;
						let write = log.data_units_written;
						read = read ? (log.data_units_read / 1956882).toFixed(1) + 'T' : '';
						write = write ? (log.data_units_written / 1956882).toFixed(1) + 'T' : '';
						if (read && write) {
							rw = ' | R/W: ' + read + '/' + write;
						}
						//let pu = log.percentage_used;
						//let me = log.media_errors;
						/*if ( pu !== undefined ) {
							health = ' | 健康: ' + ( 100 - pu ) + '%'
							if ( me !== undefined ) {
								health += ',0E: ' + me
							}
						}*/
					}

					// smart状态
					let smart = v.smart_status?.passed;
					if (smart === undefined ) {
						smart = '';
					} else {
						smart = ' | SMART: ' + (smart ? '正常' : '警告!');
					}
					
					
					let t = model  + temp + health  + smart;
					//console.log(t);
					return t;
				}catch(e){
					return '无法获得有效消息';
				};

			 }
		},
		{
			itemId: 'sd00',
			colspan: 2,
			printBar: false,
			title: gettext('HDD'),
			textField: 'sd0',
			renderer:function(value){
			  //return value;
			  try{
				  let  v = JSON.parse(value);
				  console.log(v)
				  if (v.standy === true) {
					  return '休眠中'
				  }
				  
				  //名字
				  let model = v.model_name;
				  if (! model) {
					  return '找不到硬盘,直通或已被卸载';
				  }
				  // 温度
				  let temp = v.temperature?.current;
				  temp = ( temp !== undefined ) ? " | 温度: " + temp + '°C' : '' ;
				  
				  // 通电时间
				  let pot = v.power_on_time?.hours;
				  let poth = v.power_cycle_count;
				  
				  pot = ( pot !== undefined ) ? (" | 通电: " + pot + '时' + ( poth ? ',次: '+ poth : '' )) : '';
				  
				  // smart状态
				  let smart = v.smart_status?.passed;
				  if (smart === undefined ) {
					  smart = '';
				  } else {
					  smart = ' | SMART: ' + (smart ? '正常' : '警告!');
				  }
				  
				  
				  //let t = model + temp  + pot + smart;
				  let t = model + temp  + smart;
				  //console.log(t);
				  return t;
			  }catch(e){
				  return '无法获得有效消息';
			  };
		   }
	  },

:

告别单调!手把手教你用Xftp美化PVE 8.3.5管理界面(Logo/标题一键改) 本文详细介绍了如何使用Xftp工具对PVE 8.3.5管理界面进行个性化页面修改,包括替换LOGO和修改导航栏标题等操作。通过图形化界面操作,无需复杂命令,即可快速实现界面美化,提升管理体验。适合希望定制PVE界面的用户参考。 阅读详情

相关推荐

PVEDiscordDark:Proxmox Web UI的类似于Discord的深色主题

Proxmox Web UI的黑暗主题, 灵感来自Discord的配色方案。 一切都是黑暗的,包括图表,上下文菜单以及两者之间的所有内容! 眼睛不需要油炸。 现在,主题运行其自己JavaScript代码,该代码为某些组件(和图表)的颜色打补丁。 这种方法比以前使用的方法更好,更安全。 安装 通过CLI实用程序完成安装。 在为Web UI服务的PVE节点上运行以下命令: ~# wget https://raw.githubusercontent.com/Weilbyte/PVEDiscordDark/master/PVEDiscordDark.sh ~# bash PVEDiscordDark.sh install 或者这个单线 bash <(curl -s https://raw.githubusercontent.com/Weilbyte/PVEDiscordDark/maste

Proxmox ve(PVE) 显示CPU和硬盘温度、UPS信息

PVE显示CPU温度,PVE显示硬盘温度,PVE显示UPS信息

取个名字太难了a的博客 3万+

国产Flash替代方案:手把手教你用XSCT烧写ZYNQ7045的BOOT.BIN(附完整命令解析)

本文详细介绍了国产Flash替代方案在ZYNQ7045上的应用,通过XSCT工具链实现BOOT.BIN的精准烧写。内容涵盖国产Flash兼容性检查、PetaLinux环境搭建、XSCT烧写全流程及故障排查,帮助开发者高效完成国产化替代,提升硬件开发效率。

weixin_33670786的博客 427

PVE7.4显示CPU和硬盘温度

PVE显示CPU温度和硬盘温度 先来个最终效果图 安装PVE系统 这个不用讲了,网上大把教程,傻瓜式安装 修改配置文件 首先备份需要修改的文件 cp /usr/share/perl5/PVE/API2/Nodes.pm /usr/share/perl5/PVE/API2/Nodes.pm.bak cp /usr/share/pve-manager/js/pvemanagerlib.js /usr/share/pve-manager/js/pvemanagerlib.js.bak 修改Nodes.pm文件

u013693304的博客 2万+

ScanNet数据集下载全攻略:从申请到解析的保姆级教程(含常见问题解决)

本文提供了ScanNet数据集从申请授权到下载、解析的完整实战指南。针对这个大规模室内RGB-D数据集,详细介绍了官方申请流程、优化下载策略、数据验证方法,并重点解决了深度图解析等常见问题,帮助三维视觉研究者高效获取和使用这一宝贵资源。

5f4d3s2a1q的博客 618

从Overleaf上导出Latex论文发布到arxiv详细教程(常见问题与解决)

如果是做cv的论文请选择“Computer Vision and Pattern Recognition”,选择“Artificial Intelligence”可能会被on hold,貌似这个指的是传统的人工智能?我用公司邮箱注册发布一篇论文,一个多月还是“on hold”状态,换成edu邮箱第二天就被发布了。3、有可能是subject class选错了,编辑会帮你手动选择,然后发一封邮件告知你解除……报错缺失bbl等文件,这是因为从Menu中下载的话,是没有bbl文件的。论文被on hold。

沉迷单车的追风少年 3585

PVE的优化与温度监控(二)—无法识别移动硬盘S.M.A.R.T信息的思考并解决

解决pve界面中磁盘选项卡下可移动磁盘,有smart 功能却显示为unknown的状态,涉及一定的pve后端perl源码

KeyBordkiller的博客 2988

飞牛NAS新增虚拟机功能,如果使用虚拟机网卡直通安装ikuai软路由(如何解决OVS网桥绑定失败以及打开ovs后无法访问飞牛nas等问题)

飞牛NAS新增虚拟机功能,如果使用虚拟机网卡直通安装ikuai软路由

XiaoqiangClub的博客 1万+

PVE Tools终极指南:5分钟完成Proxmox VE复杂配置的完整教程

Proxmox VE是一款功能强大的开源虚拟化平台,但对于许多新手用户来说,复杂的命令行配置常常让人望而却步。今天我要介绍一个革命性的工具——PVE Tools,它能将原本需要数小时的配置工作简化为几分钟的图形化操作。这个一站式管理工具脚本让Proxmox VE的管理变得前所未有的简单高效。 ## 🚀 为什么你需要PVE Tools? 如果你曾经为配置Proxmox VE的各种功能而头疼,那

gitblog_00249的博客 220

Python库CloudScraper详细使用(绕过 Cloudflare 的反机器人页面的 Python 模块)

CloudScraper是一个专门用于绕过Cloudflare反机器人保护的Python库,它基于requests库构建,能够处理Cloudflare的5秒盾、WAF和人机验证等防护机制。

数据知道的博客 1万+

【Qt】解决 FTH: (11284): *** Fault tolerant heap shim applied to current process. (亲测有效)

计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers。容错堆垫片应用到当前的过程。这通常是由于以前的崩溃。win + r,输入regedit。

Fanjufei的博客 830

PVE Tools:Proxmox VE一站式管理工具,5分钟完成复杂配置

PVE Tools是一款专为Proxmox VE虚拟化平台设计的全能管理工具脚本,通过图形化界面简化了Proxmox VE的各种复杂配置任务。这个开源工具集让系统管理员和技术爱好者能够快速完成邮件配置、Samba/NFS共享、硬件直通、嵌套虚拟化等高级功能,将原本需要数小时的命令行操作简化为几分钟的图形化配置。 ## 项目概述与价值主张 你是否曾经因为配置Proxmox VE的各种功能而感到头

gitblog_00505的博客 271

AI Agent Harness实时监控大屏搭建实战

本文将以目前主流的AI Agent管控框架Harness为基础,结合React、ECharts、WebSocket技术,手把手带你搭建一套完整的实时监控大屏,覆盖全局概览、状态分布、工具调用统计、异常告警、实时日志等核心功能,不需要复杂的底层开发,复制代码就能快速跑通。本文我们从需求出发,先梳理了AI Agent的核心监控指标,然后搭建了监控大屏的静态布局,逐个实现了各个图表,对接了Harness的实时数据源,最后加了交互和告警功能,完整走了一遍监控大屏从设计到落地的全流程。

大数据洞察的博客 174

Proxmox VE终极管理神器:5分钟搞定复杂配置的完整指南

你是否还在为Proxmox VE的复杂配置而头疼?从邮件服务器设置到硬件直通,从存储共享到性能优化,每一个功能都需要记忆复杂的命令、编辑多个配置文件。现在,这一切都将成为过去!PVE Tools——这个专为Proxmox VE设计的全能管理工具脚本,将彻底改变你的虚拟化管理体验。通过图形化界面,它把原本需要数小时甚至数天的命令行操作简化为几分钟的点击配置,让即使是虚拟化新手也能轻松驾驭专业级功能。

gitblog_00026的博客 187

【2026最新版】Open3D(C++)点云处理算法汇总(C++长期更新版)

C++版本Open3D进行点云处理的一些算法使用案例。博客长期更新,最近一次更新时间为:2026年4月11日。

点云侠的博客 1万+

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

如何快速掌握Proxmox VE:新手必备的终极配置指南

还在为Proxmox VE复杂的配置而头疼吗?每次搭建虚拟化环境都要面对繁琐的命令行操作、各种配置文件修改,是不是感觉学习曲线太陡峭?别担心,今天我要向你介绍一个能让Proxmox VE配置变得简单高效的神器——pvetools脚本工具集。 pvetools是一款专为Proxmox VE设计的自动化配置工具,它通过图形化界面将原本需要几十条命令的复杂操作简化为"一键完成"。无论你是刚接触Prox

gitblog_00893的博客 195

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Proxmox VE配置太复杂?这个神器脚本让你3分钟搞定所有难题!

还在为Proxmox VE的复杂配置而头疼吗?你是不是也曾被邮件告警、Samba共享、硬件直通这些专业设置搞得焦头烂额?今天我要分享一个让我工作效率提升10倍的神器——pvetools脚本工具集,它能让你用最简单的方式搞定所有PVE配置难题! ## 痛点分析:为什么PVE配置让人望而却步? 作为一名PVE新手,你一定遇到过这些问题: 1. **邮件告警配置**:需要手动编辑多个配置文件,SM

gitblog_01198的博客 165

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

3分钟搞定Proxmox VE!pvetools终极工具集让虚拟化管理简单如画

Proxmox VE虚拟化管理神器pvetools,一键自动化配置让运维效率飙升!作为专为Proxmox VE设计的开源脚本工具集,pvetools将复杂的邮件配置、Samba共享、NFS挂载、ZFS管理、嵌套虚拟化、Docker部署和硬件直通等高级操作简化为可视化菜单操作,即使是Linux新手也能轻松驾驭企业级虚拟化平台。 ## 🎯 为什么你需要pvetools? ### 告别复杂命令,拥

gitblog_00849的博客 243

PVE全新安装后个人优化步骤

PVE Debian

Walking__Dead的博客 1万+

Proxmox ve(PVE) 显示CPU温度、NVME硬盘温度、主板温度(三种方式)

安装Influxdb监控PVE主机温度

站在知识源头搞技术 5162

PVE(8.3.5)的入门探索(五)——pve个性化页面修改

本文介绍了如何通过修改文件内容来美化PVE(Proxmox Virtual Environment)的Web页面,以缓解长时间使用后的视觉疲劳。

2401_87817752的博客 2109

PVE7.2 显示CPU温度和频率

PVE7.2 显示CPU温度和频率 给自己留着保存用,仅供参考

ldt0621的博客 1万+

打造炫酷的Proxmox VE 监控界面

打造炫酷的Proxmox VE 监控界面 今天终于把Proxmox VE(简称PVE)从6.1版本升级到PVE 6.4版本,在Web管理后台对比PVE 6.4与 PVE 6.1,看新增哪些功能?在数据中心的菜单项里,多了一个度量服务器(Metric Server),中文显示“公制服务器”,翻译得怪怪的。 挡不住好奇,点进去看看,原来是添加远程数据统计服务器InfluxDB或者Graphite。 既然可以添加InfluxDB,那么在此基础上,整合Grafana,岂不是可以打造一个很炫酷的PV

linux硬派运维 6954

【亲测免费】 探索Proxmox虚拟环境的温度监控新境界 —— pve-mods项目深度解析

探索Proxmox虚拟环境的温度监控新境界 —— pve-mods项目深度解析 在数据中心管理和运维的领域里,细节决定成败。今天,我们来探索一款为Proxmox Virtual Environment(简称PVE)量身定做的开源增强工具——pve-mods,它将为您的服务器管理带来革命性的可视化温度监控体验。 项目介绍 pve-mods,是一个创新项目,其核心目标在于整合lm-sensors的强大...

gitblog_00079的博客 1758

新手小白用PVE安装部署自己的家庭网络服务器1--PVE的安装和优化设置

NAS是什么?看上去是不是很高端?但其实大可不用感觉有多复杂。在我看来,对于大多数新手来说,没有大容量和重要文件资料存储的情况下,NAS就是一台可以7*24小时专为自己服务的家庭服务器。它可以有很多功能,可以是你的家庭“科学”网关、可以是你的下载器、文件共享服务器等等。一台机器,实现多种不同系统的功能。本人也是一个新手玩家,做这个文章一方面记录一下自己部署家庭服务器的过程,一方面也希望可以通过一个新手的角度,帮助到更多刚入坑或者想入坑的朋友。

莫若天穹的博客 1万+

PVE8最新安装使用指南、优化Proxmox VE 8.1

Proxmox ve(PVE)安装、优化教程

Dd_w606的博客 1万+
上一篇: PVE的优化与温度监控(二)—可移动硬盘盒无法显示信息的解决方案(一)
下一篇: PVE的优化与温度监控(二)—无法识别移动硬盘S.M.A.R.T信息的思考并解决
KeyboardKillers
博客等级 码龄9年 8419粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值