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.