|
本帖最后由 myvirus 于 2022-12-28 22:16 编辑
今早看PVE CPU占用一直持续70%,点半天才发现是win10在升级。。想着以后发生类似情况,还是要一个个找是那台vm导致的,嫌麻烦,就动了自己定制的想法
看了下pve代码,后端是perl5,前端是extjs7,都不太会,试了半天,目前实现了下图的样子,勉强算能满足个人需求
perl5部分比较简单,主要改的还是/usr/share/perl5/PVE/API2/Nodes.pm文件的/nodes/{node}/status请求,搜索"pvecfg::version_text()",在后面插入压缩包中Nodes.pm的内容
主要在res中增加了cpure CPU信息、thermalstate 温度数据、diskinfo 磁盘数据、gpuinfo 显卡信息、vmstatus 虚拟机数据、lxc_vmstatus lxc数据
代码里最乱那段是通过 lsblk 拿到所有块设备,然后遍历用 smartctl 拿硬盘信息,其中删掉了很多我个人不太需要的字段,要不然res太大
我不太清楚有没有更简单的方法,hddtemp拿不到nvme的数据,其他方法求大神告知。。
代码中用了个cpu_mhz.sh,可以执行下面的命令生成....其实也可以直接lscpu --json拿数据然后丢到前端去解析会更方便,懒得改了,照抄了别人的
- cat << EOF > /usr/bin/cpu_mhz.sh
- c=\`lscpu|grep MHz|sed 's/CPU\ /CPU-/g'|sed 's/\ MHz/-MHz/g'|sed 's/\ //g'|sed 's/^/"/g'|sed 's/$/"\,/g'|sed 's/\:/"\:"/g'|awk 'BEGIN{ORS=""}{print \$0}'|sed 's/\,\$//g'\`
- r="{"\$c"}"
- echo \$r
- EOF
复制代码
代码中的vmstatus不包含虚拟机配置信息,,
如果需要的话,注释或删掉代码中的:
- push @$vmstatus, PVE::API2Tools::extract_vm_stats($vmid, $idlist->{$vmid}, $rrd);
复制代码 修改为:
- $vm = PVE::API2Tools::extract_vm_stats($vmid, $idlist->{$vmid}, $rrd);
- $vm->{config} = PVE::QemuConfig->load_config($vmid)
复制代码
虚拟机配置的话可以用来分析是不是做了直通,直通了什么设备,挂载了几块盘,处理器类别等等...我没这个需求,就没要
对了,还需要修改/usr/bin/pveproxy,将头部的#!/usr/bin/perl -T中的-T参数删掉
哦,还需要装几个包,然后授权,否则perl的执行用户没权限调用。
- apt update && apt install -y lm-sensors nvme-cli hddtemp smartmontools && chmod +s /usr/bin/lspci && chmod +s /usr/sbin/nvme && chmod +s /usr/sbin/hddtemp && chmod +s /usr/sbin/smartctl
复制代码
改完了记得要重启perl服务: systemctl restart proxy
然后就是前端部分
主要修改/usr/share/pve-manager/js/pvemanagerlib.js文件
第一处,PVE.node.StatusView组件,搜索Ext.define('PVE.node.StatusView 将整个组件代码修改为压缩包中的StatusView.pm文件内容
主要修改是根据我的监控屏尺寸修改了下布局,增加了cpu频率、温度,删掉了初始化组件时的存储库状态判断。
CPU温度、主频变动时会改成红色显示。这个可以按需改成比上次数值小的话用一种颜色,大的话用另一种颜色,方便区分。
第二处,PVE.node.Summary组件,搜索Ext.define('PVE.node.Summary 将整个组件代码修改为压缩包中的Summary.pm文件内容
增加了虚拟机信息、硬盘信息两个GridPanel....用GridPanel是看中他有排序,可以按温度、CPU利用率降序来监控虚拟机信息,不需要的话可以自己组个table用
有字数限制只能传文件了....
归档.zip
(6.51 KB, 下载次数: 6)
如果你的PVE是7.0-11的话可以按我的代码改改看
改前端的话不用重启perl服务,刷新游览器就行
注意: 代码是根据我自己的硬件环境和需求定制的,代码不能通用!!!!
end
|
|