Você está visualizando a documentação da versão de desenvolvimento, que pode estar incompleta.
Esta página foi traduzida automaticamente. Se você notar um erro, selecione-o e pressione Ctrl+Enter para reportá-lo aos editores.

6 Sensor

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

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

Há apenas um valor de leitura de sensor por arquivo. O esquema comum para nomear os arquivos que contêm leituras de sensores dentro de qualquer um dos diretórios mencionados acima é: <type><number>_<item>, onde

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

As informações sobre 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 programa sensors pode ser usado para mostrar as leituras de todos os chips de sensor. A rotulagem das leituras dos sensores, usada por este programa, pode ser diferente do esquema comum de nomenclatura (<type><number>_<item> ):

  • se houver um arquivo chamado <type><number>_label, então o rótulo dentro deste arquivo será usado em vez do nome <type><number><item>;
  • 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) pela substituição do nome.

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

No programa sensor, os sensores disponíveis são separados pelo tipo de barramento (adaptador ISA, adaptador PCI, adaptador SPI, dispositivo virtual, interface ACPI, adaptador HID).

No Linux 2.4:

(As leituras dos sensores são obtidas do diretório /proc/sys/dev/sensors)

  • device - nome do dispositivo (se <mode> for usado, é uma expressão regular);
  • sensor - nome do sensor (se <mode> for usado, é uma expressão regular);
  • mode - valores possíveis: avg, max, min (se este parâmetro for omitido, device e sensor são tratados literalmente).

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

No Linux 2.6+:

(As leituras dos sensores são obtidas do diretório /sys/class/hwmon)

  • device - nome do dispositivo (não é uma expressão regular). O nome do dispositivo pode ser o nome real do dispositivo (por exemplo, 0000:00:18.3) ou o nome adquirido usando o programa sensors (por exemplo, k8temp-pci-00c3). Cabe ao usuário escolher qual nome usar;
  • sensor - nome do sensor (não é uma expressão regular);
  • mode - valores possíveis: avg, max, min (se este parâmetro for omitido, device e sensor são tratados literalmente).

Exemplo 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

Os rótulos dos sensores, conforme impressos pelo comando sensors, nem sempre podem ser usados diretamente porque a nomeação dos rótulos pode ser diferente para cada fornecedor de chip de sensor. Por exemplo, a saída do sensors pode conter as seguintes linhas:

$ sensors
       in0:         +2.24 V  (min =  +0.00 V, max =  +3.32 V)   
       Vcore:       +1.15 V  (min =  +0.00 V, max =  +2.99 V)   
       +3.3V:       +3.30 V  (min =  +2.97 V, max =  +3.63 V)   
       +12V:       +13.00 V  (min =  +0.00 V, max = +15.94 V)
       M/B Temp:    +30.0°C  (low  = -127.0°C, high = +127.0°C)

Desses, 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 recuperar as leituras do sensor, execute sensors -u. Na saída, o seguinte pode ser observado:

$ sensors -u
       ...
       Vcore:
         in1_input: 1.15
         in1_min: 0.00
         in1_max: 2.99
         in1_alarm: 0.00
       ...    
       +12V:
         in4_input: 13.00
         in4_min: 0.00
         in4_max: 15.94
         in4_alarm: 0.00
       ...

Portanto, Vcore deve ser consultado como in1 e +12V deve ser consultado como in4. De acordo com a especificação, estas são tensões nos pinos do chip e, de modo geral, podem precisar de escala.

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

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