8 Sensor

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

As leituras do sensor estão localizadas em /sys/class/hwmon/hwmon*/ diretório para dispositivos virtuais ou em /sys/class/hwmon/hwmon*/device diretório para dispositivos não virtuais. Um arquivo, chamado nome, localizado dentro hwmon* ou hwmon*/device diretórios contém o nome do chip, que corresponde ao nome do driver do kernel usado pelo sensor lasca.

Existe apenas um valor de leitura do sensor por arquivo. O esquema comum de nomear os arquivos que contêm leituras do sensor dentro de qualquer um dos diretórios mencionados acima é: <tipo><número>_<item>, onde

  • tipo - para chips de sensor é "in" (tensão), "temp" (temperatura), "fan" (ventilador), etc.,
  • item - "input" (valor medido), "max" (limite alto), "min" (limite baixo), etc.,
  • número - sempre usado para elementos que podem estar presentes mais de uma vez (geralmente começa em 1, exceto para tensões que começam em 0). Se os arquivos não se referem a um elemento específico, eles têm um simples nome sem número.

As informações sobre os sensores disponíveis no host podem ser adquiridas usando as ferramentas sensor-detect e sensors (pacote lm-sensors: http://lm-sensors.org/). Sensors-detect ajuda a determinar quais módulos são necessários para os sensores disponíveis. Quando os módulos são carregados, o sensores programa pode ser usado para mostrar as leituras de todos os sensores salgadinhos. A rotulagem das leituras dos sensores, utilizada por este programa, pode ser diferente do esquema de nomenclatura comum (<tipo><número>_<item>):

  • se houver um arquivo chamado <type><number>_label, então o rótulo dentro deste arquivo será usado em vez de <tipo><número><item> nome;
  • se não houver arquivo <type><number>_label, então o programa procura dentro do /etc/sensors.conf (pode ser também /etc/sensors3.conf ou diferente) para a substituição do nome.

Esta rotulagem permite ao usuário determinar que tipo de hardware é usado. Se não há arquivo <type><number>_label nem rótulo dentro no arquivo de configuração o tipo de hardware pode ser determinado pelo atributo name (hwmon*/device/name). Os nomes reais dos sensores, que zabbix_agent aceita, pode ser obtido executando o programa sensors com o parâmetro -u (sensores -u).

No programa sensor os sensores disponíveis são separados pelo barramento tipo (adaptador ISA, adaptador PCI, adaptador SPI, dispositivo virtual, ACPI interface, 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.↩︎