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.