Proxmox [Tuto] Afficher la température CPU dans Proxmox VE 7

EVO

Administreur
Membre du personnel
25 Novembre 2019
8 269
1 583
278
/var/run/docker.sock
[Tuto] Afficher la température CPU dans Proxmox VE 7

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 :)


DQhSDKG.png

Le résultat de la modification, surligné en rouge

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 :
71hLihQ.png





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`;

Le résultat doit être :
Code:
        $res->{pveversion} = PVE::pvecfg::package() . "/" .
            PVE::pvecfg::version_text();

        $res->{thermalstate} = `sensors`;

        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 ) : xtype: 'box',

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',

Toujours dans le même fichier :

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){
                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 `Core 0: ${c0} °C | Core 1: ${c1} °C | Core 2: ${c2} °C | Core 3: ${c3} °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){
                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 `Core 0: ${c0} °C | Core 1: ${c1} °C | Core 2: ${c2} °C | Core 3: ${c3} °C`
            }
        }

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 !



Merci @webmail pour la découverte
Source : Displaying CPU Temperature in Proxmox Summery in Real Time


2022-08-22 - Changement de modification du padding au niveau de l'édition de pvemanagerlib.js pour ne pas déformer l'affichage sur les écrans large.
 
Dernière édition:
@EVOTk
Le tuto ne fonctionne pas avec proxmox8.
J'ai tout modifié comme indiqué, mais après la commande systemctl restart pveproxy, j'ai un écran noir à la place de l'écran de login.
J'ai essayé de changer de navigateur, vider le cache, même souci.
 
  • Triste
Réactions: EVO
je ne suis pas dev', mais peut etre est il possible que le nombre de lignes dépendent aussi du nombre de coeurs .? dans le code il y à 4 coeurs,
le mien en a 6, donc peut etre que cela viens de la entre autres...
 
Pour Proxmox 8, rendez-vous ici :

 
  • J'aime
Réactions: MilesTEG
ça fonctionne parfaitement bien en 8.1.4

1706911744459.png

Et pour le nombre de coeur, il faut juste ajouter quelques lignes en prenant exemple sur celle du dessus.
 
  • J'aime
Réactions: EVO