Esta é uma tradução da página de documentação original em inglês. Ajude-nos a torná-la melhor.

7 Sensores

Cada sensor do chip recebe seu próprio diretório na árvore 'sysfs' (/sys/devices). Para localizar todos so chips sensores, a forma mais fácil é seguir os links simbólicos de dispositivo de /sys/class/hwmon/hwmon*, onde * é um número real (0,1,2,...).

A leitura dos sensores de dispositivos virtuais está localizada /sys/class/hwmon/hwmon*/, enquanto para dispositivos reais se localiza e /sys/class/hwmon/hwmon*/device. Um arquivo, Um arquivo localizado de hwmon* ou hwmon*/device irá conter o nome do chip, que corresponderá ao nome do driver de kernel utilizado com ele.

Em cada arquivo ocorre a leitura de valor de um sensor. O padrão de nomenclatura dos arquivos em ambas as localizações é: <type><number>_<item>, onde

  • type - para chips sensores é "in" (voltagem), "temp" (temperatura), "fan" (fan), etc.,
  • item - "input" (valor medido), "max" (limite máximo), "min" (limite mínimo), etc.,
  • number - é sempre utilizado para elementos que podem aparecer mais de uma vez (normalmente começam com '1', exceto para voltagens que começam com '0'). Se os arquivos não se referem a um elemento específico então eles terão o nome sem o número.

A informação sobre os sensores disponíveis no host pode ser obtida usando ferramentas de sensor-detect e sensors (pacote lm-sensors: http://lm-sensors.org/). Sensors-detect ajuda a determinar qual são os módulos necessários para os sensores disponíveis. Quando os módulos são carregados o programa sensors pode ser utilizado para ler todos os chips. O padrão de nomenclatura utilizado pode ser diferente do padrão (<type><number>_<item> ):

  • se não tiver um arquivo chamado <type><number>_label, então o rótulo dentro do arquivo será utilizado ao invés de <type><number><item> ;
  • se não existir o arquivo <type><number>_label, então o programa irá procurar dentro de '/etc/sensors.conf' (também pode ser em /etc/sensors3.conf, ou outro) pelo substituto do nome.

Esta nomenclatura permite que o usuário determine qual o tipo de hardware está sendo utilizado. Se não for encontrado o arquivo <type><number>_label ou nenhum rótulo dentro do arquivo de configuração o tipo do hardware poderá ser determinado pelo atributo do nome (hwmon*/device/name). Os nomes atuais dos sensores, que o zabbix_agent aceita, podem ser obtidos através do programa sensors com o parâmetro '-u' (sensors -u).

Com o programa sensor os sensores disponíveis estarão separados pelo tipo "via" (bus) (adaptador ISA, PCI, SPI, dispositivo virtual, interface ACPI, adaptador HID).

No Linux 2.4:

(A leitura dos sensores pode ser obtida a partir do diretório /proc/sys/dev/sensors)

  • device - nome do dispositivo (se o <mode> for utilizado, será uma expressão regular);
  • sensor - nome do sensor (se o <mode> for utilizado, será uma expressão regular);
  • mode - valores possíveis: avg, max, min (se este parâmetro for omitido o dispositivo e o sensor serão tratados de forma textual).

Exemplo de chave: sensor[w83781d-i2c-0-2d,temp1]

Antes do Zabbix 1.8.4, o formato sensor[temp1] era utilizado.

No Linux 2.6+:

(A leitura dos sensores pode ser obtida a partir do diretório /sys/class/hwmon )

  • device - nome do dispositivo (expressão não regular). O nome do dispositivo pode ser o nome atual do dispositivo (ex. 0000:00:18.3) ou o nome obtido usando os programas de sensor (ex.. k8temp-pci-00c3). Cabe ao usuário escolher qual nome utilizar;
  • sensor - nome do sensor (expressão não regular);
  • mode - valores possíveis: avg, max, min (se este parâmetro for omitido o dispositivo e o sensor serão tratados de forma textual).

Exemplos de chave:

sensor[k8temp-pci-00c3,temp, max] ou sensor[0000:00:18.3,temp1]

sensor[smsc47b397-isa-0880,in, avg] ou sensor[smsc47b397.2176,in1]

Obtendo nomes de sensores

As etiquetas dos sensores, conforme impressas pelo comando sensors, nem sempre podem ser usado diretamente porque a nomenclatura dos rótulos pode ser diferente para cada fornecedor do chip sensor. Por exemplo, a saída de sensores pode conter o seguintes linhas:

$ sensores
       in0: +2,24 V (min = +0,00 V, máx = +3,32 V)
       Vcore: +1,15 V (mín. = +0,00 V, máx. = +2,99 V)
       +3,3 V: +3,30 V (mín. = +2,97 V, máx. = +3,63 V)
       +12 V: +13,00 V (mín. = +0,00 V, máx. = +15,94 V)
       M/B Temp: +30,0°C (baixo = -127,0°C, alto = +127,0°C)

Destes, apenas um rótulo pode ser usado diretamente:

$ zabbix_get -s 127.0.0.1 -k sensor[lm85-i2c-0-2e,in0]
       2,240000

Tentar usar outros rótulos (como Vcore ou +12V) não funcionará.

$ zabbix_get -s 127.0.0.1 -k sensor[lm85-i2c-0-2e,Vcore]
       ZBX_NOTSUPPORTED

Para descobrir o nome real do sensor, que pode ser usado pelo Zabbix para recupere as leituras do sensor, execute sensors -u. Na saída, o podem ser observados:

$ sensores -u
       ...
       Vcore:
         entrada1_entrada: 1,15
         in1_min: 0,00
         in1_max: 2,99
         in1_alarme: 0,00
       ...
       +12V:
         entrada4_entrada: 13,00
         em 4_min: 0,00
         in4_max: 15,94
         in4_alarme: 0,00
       ...

Portanto, Vcore deve ser consultado como in1 e +12V deve ser consultado como em4.1

$ zabbix_get -s 127.0.0.1 -k sensor[lm85-i2c-0-2e,in1]
       1,301000

Não apenas tensão (in), mas também corrente (curr), temperatura (temp) e as leituras de velocidade do ventilador (ventilador) podem ser recuperadas pelo Zabbix.


  1. De acordo com especificação estas são voltagens nos pinos do chip e, de um modo geral, podem precisar dimensionamento.↩︎