Proxmox에는 따로 Node의 온도 모니터링을 할수있는 기능이 없어서 직접 추가 해보았다.
dependencies 설치
apt-get update && apt-get install lm-sensors -y
wget http://archive.ubuntu.com/ubuntu/pool/universe/h/hddtemp/hddtemp_0.3-beta15-53_amd64.deb
sudo apt install ./hddtemp_0.3-beta15-53_amd64.deb
온도 command의 결과값을 proxmox에서 쓸수있도록 api에서 추가해주기
Edit: /usr/share/perl5/PVE/API2/Nodes.pm
$dinfo 변수를 찾아 그 밑에 코드 추가
$res->{CPUtemperature} = `sensors`;
$res->{GPUtemperature} = `sensors`;
$res->{HDDtemperature} = `hddtemp /dev/sda`;
프론트에서 렌더링 부분에 모니터링하고자 하는것을 추가
Edit: /usr/share/pve-manager/js/pvemanagerlib.js
pveversion을 찾으면 아래와 같은 부분이 나오는데
{
itemId: 'version',
colspan: 2,
printBar: false,
title: gettext('PVE Manager Version'),
textField: 'pveversion',
value: ''
},
이 밑에 다음과 같은 내용을 추가해준다.
{
itemId: 'CPUtemperature',
colspan: 2,
printBar: false,
title: gettext('CPU Temperature'),
textField: 'CPUtemperature',
renderer: function(value){
const dieTemp = Array.from(value.matchAll(/Core \d+:.*?\+([\d\.]+)?/g), m=>m[1]);
return dieTemp.map((element, index) => {
const line = `[Core ${index+1}: ${element}℃]`;
return (index + 1) % 2 == 0 ? line + '<br>' : line;
});
}
},
{
itemId: 'GPUtemperature',
colspan: 2,
printBar: false,
title: gettext('GPU Temperature'),
textField: 'GPUtemperature',
renderer: function(value) {
const temp = value.match(/temp1:.*?\+([\d\.]+)?/);
const gpuTemp = temp !== null && temp.length > 0 ? temp[1] : "Unavailable ";
return `GPU: ${gpuTemp}℃ `;
}
},
그리고 나서 height: 300이라고 되어있는 부분들을 찾아 다음과 같이 수정해준다.
height: 420
모든 수정사항을 저장한후 다음과 같은 명령어를 실행하고 Proxmox에 재접속하여 Node의 Summary탭을 들어가면 변경사항이 반영되어 있을것이다.
systemctl restart pveproxy