O Linux registra tipicamente os dados de temperatura do sistema?

6

As distribuições tradicionais do Linux registram tipicamente os dados de temperatura do sistema, por ex. CPU ou temperatura HDD? Se sim, onde esses registros podem ser encontrados?

    
por sampablokuper 15.03.2016 / 08:03

2 respostas

8

Eu não estou ciente de uma distribuição Linux mainstream que registra esse tipo de informação por padrão. A maioria das distribuições principais do Linux inclui vários pacotes que podem registrar temperaturas, e alguns desses pacotes são configurados para serem registrados por padrão.

Usando o Debian como um exemplo, sensord registrará periodicamente todas as informações que ele conhece (temperaturas do sistema, voltagens, etc.) no log do sistema, mas precisa ser configurado manualmente antes de registrar qualquer coisa útil; hddtemp pode ser configurado para registrar periodicamente as temperaturas do disco rígido. Muitas outras ferramentas podem recuperar esse tipo de informação (usando IPMI, SNMP, etc.), mas na maioria dos casos elas precisam ser configuradas, seja para poder acessar as informações em primeiro lugar, ou para poder interpretá-las, ou ambos.

Este requisito de configuração significa que seria difícil configurar uma distribuição genérica que registre as temperaturas por padrão de uma maneira significativa. (A maioria dos sistemas que eu vi tem pelo menos uma entrada de monitoração inválida que dispararia alarmes se fosse configurada automaticamente!) É claro que é perfeitamente possível configurar uma imagem de instalação para seus próprios sistemas, já que você sabe o que eles são e como eles são configurados ... Depois de configurar as várias ferramentas necessárias para extrair informações de temperatura, seria melhor usar uma ferramenta de monitoramento adequada (como Munin ) para registrar as temperaturas em vez de confiar nos registros do sistema. Dessa forma, você também pode configurar alertas para ser notificado quando as coisas começarem a dar errado.

Expandindo o exemplo sensord , você pode encontrar sua saída no log do sistema, com sensord como o nome do processo; então, procure por sensord em /var/log/syslog (por padrão) ou execute journalctl -u sensord . Você verá logs periódicos como os seguintes (removi a data e o nome do host):

sensord[2489]: Chip: acpitz-virtual-0
sensord[2489]: Adapter: Virtual device
sensord[2489]:   temp1: 27.8 C
sensord[2489]:   temp2: 29.8 C
sensord[2489]: Chip: coretemp-isa-0000
sensord[2489]: Adapter: ISA adapter
sensord[2489]:   Physical id 0: 33.0 C
sensord[2489]:   Core 0: 29.0 C
sensord[2489]:   Core 1: 30.0 C
sensord[2489]:   Core 2: 26.0 C
sensord[2489]:   Core 3: 29.0 C
sensord[2489]: Chip: nct6776-isa-0a30
sensord[2489]: Adapter: ISA adapter
sensord[2489]:   in0: +1.80 V (min = +1.60 V, max = +2.00 V)
sensord[2489]:   in1: +1.86 V (min = +1.55 V, max = +2.02 V)
sensord[2489]:   in2: +3.41 V (min = +2.90 V, max = +3.66 V)
sensord[2489]:   in3: +3.39 V (min = +2.83 V, max = +3.66 V)
sensord[2489]:   in4: +1.50 V (min = +1.12 V, max = +1.72 V)
sensord[2489]:   in5: +1.26 V (min = +1.07 V, max = +1.39 V)
sensord[2489]:   in6: +1.04 V (min = +0.80 V, max = +1.20 V)
sensord[2489]:   in7: +3.31 V (min = +2.90 V, max = +3.66 V)
sensord[2489]:   in8: +3.22 V (min = +2.50 V, max = +3.60 V)
sensord[2489]:   fan1: 1251 RPM (min = 200 RPM)
sensord[2489]:   fan2: 0 RPM (min = 0 RPM)
sensord[2489]:   fan3: 299 RPM (min = 200 RPM)
sensord[2489]:   fan4: 1315 RPM (min = 0 RPM)
sensord[2489]:   fan5: 628 RPM (min = 200 RPM)
sensord[2489]:   SYSTIN: 32.0 C (limit = 80.0 C, hysteresis = 70.0 C)
sensord[2489]:   CPUTIN: 33.0 C (limit = 85.0 C, hysteresis = 80.0 C)
sensord[2489]:   AUXTIN: 24.0 C (limit = 80.0 C, hysteresis = 75.0 C)
sensord[2489]:   PECI Agent 0: 31.0 C (limit = 95.0 C, hysteresis = 92.0 C)
sensord[2489]:   PCH_CHIP_CPU_MAX_TEMP: 57.0 C (limit = 95.0 C, hysteresis = 90.0 C)
sensord[2489]:   PCH_CHIP_TEMP: 0.0 C
sensord[2489]:   PCH_CPU_TEMP: 0.0 C
sensord[2489]:   beep_enable: Sound alarm enabled
sensord[2489]: Chip: jc42-i2c-9-18
sensord[2489]: Adapter: SMBus I801 adapter at 0580
sensord[2489]:   temp1: 32.8 C (min = 0.0 C, max = 60.0 C)
sensord[2489]: Chip: jc42-i2c-9-19
sensord[2489]: Adapter: SMBus I801 adapter at 0580
sensord[2489]:   temp1: 33.5 C (min = 0.0 C, max = 60.0 C)
sensord[2489]: Chip: jc42-i2c-9-1a
sensord[2489]: Adapter: SMBus I801 adapter at 0580
sensord[2489]:   temp1: 34.0 C (min = 0.0 C, max = 60.0 C)
sensord[2489]: Chip: jc42-i2c-9-1b
sensord[2489]: Adapter: SMBus I801 adapter at 0580
sensord[2489]:   temp1: 33.2 C (min = 0.0 C, max = 60.0 C)

Para conseguir isso, eu tive que determinar quais módulos eram necessários (usando sensors-detect ): por padrão, o sistema só sabia sobre as temperaturas reportadas na ACPI, que na verdade não correspondem a nada (elas nunca variam). coretemp fornece as temperaturas do núcleo da CPU nos processadores Intel, nct6776 é o monitor de hardware da placa-mãe e jc42 é o monitor de temperatura nos DIMMs. Para torná-lo útil para monitoramento automatizado, eu deveria pelo menos desabilitar os valores da ACPI e rotular novamente os ventiladores e corrigir o valor mínimo de fan4 . Existem muitas outras possibilidades de configuração, lm_sensors ' exemplo de arquivo de configuração dá uma ideia.

    
por 15.03.2016 / 09:30
3

Alguns discos rígidos mantêm automaticamente um histórico recente de temperatura. De man smartctl :

scttemp, scttempsts, scttemphist - [ATA only] prints the disk temperature information provided by the SMART Command Transport (SCT) commands. The option ´scttempsts´ prints current temperature and temperature ranges returned by the SCT Status command, ´scttemphist´ prints temperature limits and the temperature history table returned by the SCT Data Table command, and ´scttemp´ prints both. The temperature values are preserved across power cycles. The logging interval can be configured with the ´-l scttempint,N[,p]´ option, see below. The SCT commands were introduced in ATA8-ACS and were also supported by many ATA-7 disks.

Um comando como smartctl -data -l scttemphist /dev/sda lhe dará um histórico de temperatura se a unidade suportar isso. Por exemplo:

Index    Estimated Time   Temperature Celsius
 103    2017-06-27 11:10    31  ************
 ...    ..( 24 skipped).    ..  ************
   0    2017-06-27 15:20    31  ************
   1    2017-06-27 15:30    30  ***********
 ...    ..(  9 skipped).    ..  ***********
  11    2017-06-27 17:10    30  ***********
  12    2017-06-27 17:20    31  ************
  13    2017-06-27 17:30    30  ***********
 ...    ..( 51 skipped).    ..  ***********
  65    2017-06-28 02:10    30  ***********
  66    2017-06-28 02:20    31  ************
  67    2017-06-28 02:30    32  *************
  68    2017-06-28 02:40    31  ************
  69    2017-06-28 02:50    30  ***********
  70    2017-06-28 03:00    31  ************
  71    2017-06-28 03:10    30  ***********
  72    2017-06-28 03:20    30  ***********
  73    2017-06-28 03:30    31  ************
  74    2017-06-28 03:40    30  ***********
  75    2017-06-28 03:50    31  ************
  76    2017-06-28 04:00    31  ************
  77    2017-06-28 04:10    30  ***********
 ...    ..( 22 skipped).    ..  ***********
 100    2017-06-28 08:00    30  ***********
 101    2017-06-28 08:10    31  ************
 102    2017-06-28 08:20    30  ***********

Além disso, você precisará configurar / instalar uma ferramenta (veja a resposta de Stephen Kitt).

    
por 28.06.2017 / 15:40