Proxmox - Monitorando temperatura de dispositivos

De Wiki Projeto Root
Revisão de 14h53min de 5 de fevereiro de 2025 por Diegocosta (discussão | contribs)
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)
Ir para navegação Ir para pesquisar

Sobre

Olá! Visitante, reunimos aqui, informações sobre a ferramenta de Virtualização Proxmox Virtual Environment, neste tutorial, iremos ver uma maneira opcional (opt-in) e não oficial de exibir as informações de temperaturas obtidas através dos sensores existentes por padrão no hardware. Lembrando que este vídeo tem cunho educativo e apenas deve ser executado os comandos abaixo caso tenha total confiança no processo e faça em homologação.

Vídeo

https://youtu.be/XsXE2BZX4dk

Script de Instalação

Neste link é o github do desenvolvedor que disponibilizou o script para a instalação.

https://github.com/Meliox/PVE-mods


Sensores

Por padrão ao instalar o pacote lm-sensors, o mesmo pode trazer alguns módulos básicos.

apt-get install lm-sensors

Sendo possível fazer uma detecção com o comando

sensors-detect 

Para ativar tanto os sensores detectados como outros, os mesmos devem ser carregados em /etc/modules, como no exemplo

nano /etc/modules
# Generated by sensors-detect on Fri Jan 31 00:40:03 2025
# Chip drivers
drivetemp
coretemp
jc42
Yellowpin.svg Nota: Verifique a existência do modulo drivetemp neste arquivo para que possa ser possível obter as informações de temperaturas dos discos mecânicos (HDD)

Para carregar os módulos faça:

/etc/init.d/kmod start

Script para aplicar no Reboot

Segue o Script desenvolvido pelo Projeto Root para aplicar a cada reboot a modificação, use e modifique ao seu gosto.

nano /bin/ajustes.sh

Cole este conteúdo abaixo e salve o arquivo.

#!/bin/bash

# Definindo os caminhos de origem e destino
SOURCE_NODES="/root/ajustes/Nodes.pm"
DEST_NODES="/usr/share/perl5/PVE/API2/Nodes.pm"

SOURCE_PVEJS="/root/ajustes/pvemanagerlib.js"
DEST_PVEJS="/usr/share/pve-manager/js/pvemanagerlib.js" 

# Copiando e sobrescrevendo o arquivo Nodes.pm
if [ -f "$SOURCE_NODES" ]; then
    echo "Sobrescrevendo $DEST_NODES com o arquivo $SOURCE_NODES"
    cp -f "$SOURCE_NODES" "$DEST_NODES"
else
    echo "Erro: $SOURCE_NODES não encontrado!"
fi

# Copiando e sobrescrevendo o arquivo pvemanagerlib.js
if [ -f "$SOURCE_PVEJS" ]; then
    echo "Sobrescrevendo $DEST_PVEJS com o arquivo $SOURCE_PVEJS"
    cp -f "$SOURCE_PVEJS" "$DEST_PVEJS"
else
    echo "Erro: $SOURCE_PVEJS não encontrado!"
fi

systemctl restart pveproxy.service

echo "Processo de cópia concluído!"
echo "Reiniciado o PVE Proxy."

Após sair e salvar (CTRL+X), ajuste as permissões

chmod +x /bin/ajustes.sh

Para aplicar sempre que o servidor reiniciar coloque no crontab.

crontab -e

Coloque abaixo dos comentários a linha @reboot /bin/ajustes.sh

#...
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command
@reboot /bin/ajustes.sh


Monitorar apenas o CPU

Para ativar os sensores de temperatura do CPU (Core) devem ser carregados em /etc/modules, como no exemplo

nano /etc/modules
coretemp

Sair e Salvar

Yellowpin.svg Nota: Verifique a existência do modulo coretemp neste arquivo para que possa ser possível obter as informações de temperaturas do CPU

Para carregar os módulos faça:

/etc/init.d/kmod start


Edite o arquivo Nodes.pm

nano /usr/share/perl5/PVE/API2/Nodes.pm

Localizar com as teclas ctrl + w my $dinfo = df('/', 1); e coloque acima da linha encontrada:

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

Sair e Salvar


Edite o arquivo pvemanagerlib.js

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


Localizar com as teclas ctrl + w itemId: 'version', e coloque o trecho abaixo abaixo de 'cpus'

 {
           itemId: 'thermal',
           colspan: 2,
           printBar: false,
           title: gettext('CPU TEMP'),
           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} ℃ | Core 1: ${c1} ℃ | Core 2: ${c2} ℃ | Core 3: ${c3} ℃`
           }
        },

Sair e Salvar

Reinicie o serviço pveproxy

systemctl restart pveproxy.service