lm-sensors como definir / computar corretamente apenas os valores min / max read only?

2

Eu tenho um computador (muito antigo) (com uma placa-mãe ASUS A8N-SLI DELUXE e um processador AMD Opteron (tm) 180) que monitorei com munin, e o Vcore Voltage como lido por lm-sensors está sempre em um estado Critical porque o volt de entrada está sempre abaixo do limite mínimo. Eu nunca me incomodei muito por anos, mas hoje eu tentei corrigir esse erro. No entanto, depois de várias horas de solução de problemas, não consegui resolver o problema porque não posso alterar os limites mínimo / máximo que são somente leitura.

Aqui estão minhas descobertas até agora:

O estado crítico vem porque o valor da tensão Vcore de entrada está fora dos valores mínimo / máximo.

Um sensors -u informa o seguinte:

...
atk0110-acpi-0
Adapter: ACPI interface
Vcore Voltage:
  in0_input: 1.104
  in0_min: 1.450
  in0_max: 1.750
...

Como você pode ver, o in0_min é 1.45V , mas o in0_input é menor que o min 1.104V .

Depois de ler a documentação do arquivo de configuração do lm-sensors ( link ) eu descobri que posso corrija os valores min / max com alguma configuração apropriada. Então eu criei um arquivo /etc/sensors.d/atk0110.conf com o seguinte conteúdo:

chip "atk0110-*"

   label in0 "Vcore Voltage"

   set in0_min 1.05

Em seguida, executei sensors -s (leia a seção Set Statement na página man para mais informações) para que as configurações entrem em vigor e a lança! Eu recebi o seguinte erro:

Error: File /etc/sensors.d/atk0110.conf, line 5: Failed to set value
atk0110-acpi-0: At least one "set" statement failed

Depois de algumas pesquisas, descobri que esse erro ocorre porque esses valores são codificados no BIOS e não podem ser alterados. Eles são expostos através do sistema de arquivos sysfs ao kernel quando o módulo asus_atk0110 é carregado e os valores são lidos a partir do caminho /sys/bus/acpi/drivers/ATK0110/ATK0110:00/hwmon/hwmon1/ . Em particular, para in0_min , o valor é lido desse arquivo: /sys/bus/acpi/drivers/ATK0110/ATK0110:00/hwmon/hwmon1/in0_min .

Minha segunda tentativa foi tentar testar a instrução compute no arquivo conf de sensores, mas logo descobri que não posso apenas calcular o min / max. Quando alguém usa a instrução compute no arquivo sensors.conf, todas as sub-características de uma entrada são afetadas pela computação. Na página man do sensors.conf:

A compute statement describes how a feature's raw value should be translated to a real-world value, and how a real-world value should be translated back to a raw value again. This is most useful for voltage sensors, because in general sensor chips have a limited range and voltages outside this range must be divided (using resistors) before they can be monitored...
...
...
A compute statement applies to all sub-features of the target feature for which it makes sense.
...

Isso significa que, no meu caso, todos os três valores, in0_input , in0_min , in0_max serão afetados. Então, se eu usar algo assim na configuração:

chip "atk0110-*"

   label in0 "Vcore Voltage"

   compute in0 @-0.4,@

o que acabo lendo é isto:

atk0110-acpi-0
Adapter: ACPI interface
Vcore Voltage:
  in0_input: 0.992
  in0_min: 1.050
  in0_max: 1.350

Como você pode ver, todos os valores diminuíram em 0,4 volts, então, novamente, o valor de entrada é menor que min e o status Critical permanece.

Existe alguma maneira de ajustar SOMENTE os valores mínimo / máximo em sensores de lm se esses valores forem somente leitura?

Outra opção seria tentar corrigir o problema do lado munin, se possível, mas a origem do problema, neste caso, é lm-sensors, então acredito que é aí que o problema deve ser resolvido.

    
por Vangelis Tasoulas 28.03.2017 / 15:11

3 respostas

2

Esta resposta resolve o problema no lado Munin, alterando os limites de aviso / críticos que Munin usa. Então, embora meu problema esteja resolvido, não vou marcar a resposta como a solução. Idealmente, o problema deveria ser resolvido em torno dos sensores de lm.

Vá para o nó que usa o sensors_volt plugin e execute o comando munin-run sensors_volt config . O comando retornará uma lista de chave / valor que é reconhecida pelo munin:

# munin-run sensors_volt config
graph_title Voltages
graph_vlabel Volt
graph_args --base 1000 --logarithmic
graph_category sensors
volt1.label Vcore Voltage
volt1.warning 1.51:1.69
volt1.critical 1.45:1.75
volt2.label  +3.3 Voltage
volt2.warning 3.12:3.48
volt2.critical 3.00:3.60
volt3.label  +5.0 Voltage
volt3.warning 4.70:5.30
volt3.critical 4.50:5.50
volt4.label +12.0 Voltage
volt4.warning 11.60:12.80
volt4.critical 11.20:13.20

Essas chaves / valores podem ser alterados no munin.conf no seu nó mestre.

No meu caso, quero alterar os valores volt1.warning e volt1.critical , portanto, na seção em que o host está definido, adicionei as seguintes linhas:

[host.localdomain]
    address 1.2.3.4
    use_node_name yes
    sensors_volt.volt1.warning 1.05:1.40
    sensors_volt.volt1.critical 1.00:1.45

Agora, os valores de aviso mínimo / máximo foram definidos para 1,05V / 1,40V e os valores críticos para 1V / 1,45V.

    
por 29.03.2017 / 14:18
0

No caso de você não desestabilizar ou sub-soltar o seu sistema, você pode considerar ignorar o Vcore:

chip "atk0110-*"
 ignore in0
    
por 16.02.2018 / 23:43
-1

Você tem que ser root para fazer o comando set, então você precisa usar sudo sensors -s e então deve mudar os limites. Quando você executar os sensores novamente, os limites devem estar agora como você os definiu.

    
por 14.08.2017 / 17:14