7 Sensor

Cada xip de sensor té el seu propi directori a l'arbre sysfs /sys/devices. Per trobar tots els xips del sensor, és més fàcil seguir els enllaços simbòlics del dispositiu des de /sys/class/hwmon/hwmon*, on * és un nombre real (0,1,2,...).

Les lectures del sensor es troben al directori /sys/class/hwmon/hwmon*/ per a dispositius virtuals o al directori /sys/class/hwmon/hwmon*/device per a dispositius no virtuals. Un fitxer, anomenat nom, situat dins dels directoris hwmon* o hwmon*/device conté el nom del xip, que correspon al nom del controlador del nucli emprat pel xip del sensor.

Només hi ha un valor de lectura del sensor per fitxer. L'esquema comú per anomenar els fitxers que contenen lectures del sensor dins de qualsevol dels directoris esmentats anteriorment és: <tipus><nombre>_<item>, on

  • tipus - per als xips de sensor és "in" (tensió), "temp" (temperatura), "ventilador" (ventilador), etc.,
  • element - "entrada" (valor mesurat), "màx" (llindar alt), "mínim" (llindar baix), etc.,
  • nombre - sempre s'empra per als elements que poden ser presents més d'una vegada (generalment comença des de l'1, excepte les tensions que comencen des de 0). Si els fitxers no fan referència a un element específic, tenen un nom senzill sense nombre.

La informació sobre els sensors disponibles a l'equip es pot obtindre mitjançant les eines sensor-detect i sensors (paquet lm-sensors: http://lm-sensors.org/). Sensors-detect ajuda a determinar quins mòduls són necessaris per als sensors disponibles. Quan es carreguen els mòduls, el programa sensors es pot emprar per mostrar les lectures de tots els xips del sensor. L'etiquetatge de les lectures del sensor, emprat per aquest programa, pot ser diferent de l'esquema de noms comú (<tipus><nombre>_<item> ):

  • si hi ha un fitxer anomenat <tipus><nombre>_etiqueta, s'emprarà l'etiqueta dins d'aquest fitxer en lloc de <tipus><nombre><item> nom;
  • si no hi ha cap fitxer <type><number>_label, el programa cerca dins del fitxer /etc/sensors.conf (també podria ser /etc/sensors3.conf, o diferent) per la substitució de nom.

Aquest etiquetatge permet a l'usuari determinar quin tipus de maquinari s'empra. Si no hi ha ni <type><number>_label ni etiqueta dins del fitxer de configuració, el tipus de maquinari es pot determinar mitjançant l'atribut name (hwmon*/device/name). Els noms reals dels sensors, que accepta zabbix_agent, es poden obtenir executant el programa sensors amb el paràmetre -u (sensors -u).

Al programa sensor, els sensors disponibles estan separats pel tipus de bus (adaptador ISA, adaptador PCI, adaptador SPI, dispositiu virtual, interfície ACPI, adaptador HID).

Sota Linux 2.4 :

(Les lectures dels sensors s'obtenen del directori /proc/sys/dev/sensors)

  • device - nom del perifèric (si s'empra <mode> , és una expressió regular);
  • sensor - nom del sensor (si s'empra <mode> , és una expressió regular);
  • mode - valors possibles : avg, max, min (si s'omet aquest paràmetre, el perifèric i el sensor es tracten textualment).

Exemple de clau :

sensor[w83781d-i2c-0-2d,temp1]

Abans de Zabbix 1.8.4, s'emprava el format sensor[temp1].

Sota Linux 2.6+ :

(Les lectures dels sensors s'obtenen del directori /sys/class/hwmon)

  • device - nom del perifèric (expressió no regular). El nom del perifèric pot ésser el nom real (ex. 0000:00:18.3) o el nom adquirit emprant el programa de sensors (ex. k8temp-pci-00c3). L'usuari pot decidir el nom a emprar;
  • sensor - nom del sensor (expressió no regular);
  • mode - valors possibles : avg, max, min (si el paràmetre s'omet, el perifèric i el sensor es tracten textualment).

Exemples de claus :

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

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

Obtindre els noms dels sensors

Les etiquetes del sensor, impreses per la comanda sensors, mai es poden emprar directament, doncs el seu nom pot ésser diferent per cada proveïdor del xip del sensor. Per exemple, la sortida de sensors pot contindre les següents línies:

$ 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)

A banda d'aquestes, una sola etiqueta es pot emprar directament:

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

Provant d'emprar altres etiquetes (com ara Vcore o +12V) no funcionarà pas.

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

Per sapiguer el nom real del sensor, que es pot emprar per Zabbix per recuperar les lectures del sensor, executeu sensors -u. A la sortida, veureu:

$ 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
       ...

Doncs Vcore ha d'ésser consultat com a in1, i +12V haurà d'ésser consultat com a in4. 1 Segons les especificacions, aquests són els voltatges dels pins dels xips i, en general, pot caldre escalar.

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

No només el voltatge (in), també la corrent (curr), la temperatura (temp) i la velocitat del ventilador (fan) es poden recuperar per Zabbix.


  1. Segons les especificacions aquests són els voltatges dels pins dels xips i poden generalment necessitar un escalat.↩︎