[Tuto] Afficher la température CPU dans Proxmox VE 8
Comment avoir une vue sur les températures CPU de l’hôte dans l'interface de Proxmox ? Si la réponse à cette question vous intéresse, vous êtes au bon endroit

Sommaire :
1/ Installation de lm-sensors
2/ Modification de Nodes.pm
3/ Modification de pvemanagerlib.js
4/ Redémarrage de la WebUI
1/ Installation de lm-sensors
On install lm-sensors, qui permet de récupérer la température de la machine :
Code:
apt install lm-sensors
Une fois l'installation finie, on vérifie que cela fonctionne correctement en exécutant la commande
sensors
, le retour doit être quelques choses comme cela :
2/ Modification de Nodes.pm
Nous allons éditer Nodes.pm pour y rajouter notre fonction :
Code:
nano /usr/share/perl5/PVE/API2/Nodes.pm
Rechercher ( touche F6 ) :
my $dinfo
Dans le bloc :
Code:
$res->{pveversion} = PVE::pvecfg::package() . "/" .
PVE::pvecfg::version_text();
my $dinfo = df('/', 1); # output is bytes
Insérer :
$res->{thermalstate} = `sensors -j`;
Le résultat doit être :
Code:
$res->{pveversion} = PVE::pvecfg::package() . "/" .
PVE::pvecfg::version_text();
$res->{thermalstate} = `sensors -j`;
my $dinfo = df('/', 1); # output is bytes
Quitter avec Ctrl+X, enregistrer les modifications.
3/ Modification de pvemanagerlib.js
Nous allons éditer pvemanagerlib.js pour lui donner une place dans l'interface graphique de Proxmox :
Code:
nano /usr/share/pve-manager/js/pvemanagerlib.js
Rechercher ( touche F6 ) :
PVE Manager Version
Code:
{
itemId: 'version',
colspan: 2,
printBar: false,
title: gettext('PVE Manager Version'),
textField: 'pveversion',
value: ''
}
Ajouter :
Code:
{
itemId: 'thermal',
colspan: 2,
printBar: false,
title: gettext('CPU Thermal State'),
textField: 'thermalstate',
renderer: function(value) {
let objValue = JSON.parse(value);
let core0 = objValue["coretemp-isa-0000"]["Core 0"]["temp2_input"];
let core1 = objValue["coretemp-isa-0000"]["Core 1"]["temp3_input"];
let core2 = objValue["coretemp-isa-0000"]["Core 2"]["temp4_input"];
let core3 = objValue["coretemp-isa-0000"]["Core 3"]["temp5_input"];
return `Core 0: ${core0}°C | Core 1: ${core1}°C | Core 2: ${core2}°C | Core 3: ${core3}°C`;
}
}
Cela doit donner :
Code:
{
itemId: 'version',
colspan: 2,
printBar: false,
title: gettext('PVE Manager Version'),
textField: 'pveversion',
value: ''
},
{
itemId: 'thermal',
colspan: 2,
printBar: false,
title: gettext('CPU Thermal State'),
textField: 'thermalstate',
renderer: function(value) {
let objValue = JSON.parse(value);
let core0 = objValue["coretemp-isa-0000"]["Core 0"]["temp2_input"];
let core1 = objValue["coretemp-isa-0000"]["Core 1"]["temp3_input"];
let core2 = objValue["coretemp-isa-0000"]["Core 2"]["temp4_input"];
let core3 = objValue["coretemp-isa-0000"]["Core 3"]["temp5_input"];
return `Core 0: ${core0}°C | Core 1: ${core1}°C | Core 2: ${core2}°C | Core 3: ${core3}°C`;
}
}
Dans le même fichier, quelques lignes au dessus de votre précédente modification :
Vous devez trouver :
Code:
{
xtype: 'box',
colspan: 2,
padding: '0 0 20 0',
},
Remplacer
padding: '0 0 20 0',
par padding: '0 0 10 0',
Quitter avec Ctrl+X, enregistrer les modifications.
4/ Redémarrage de la WebUI
Relancer la WebUI :
systemctl restart pveproxy
Note : Afin de voir la modification, j'ai du aller sur l'interface de proxmox en navigation privé ! Le refresh de la page n'était pas suffisant. Une fois le cache de mon navigateur vidé, alors l'affichage des température était effectif !
Source : Displaying CPU Temperature in Proxmox Summery in Real Time
2023-08-18 - Création
Pièces jointes
Dernière édition: