6 Sensor

Übersicht

Jeder Sensorchip erhält sein eigenes Verzeichnis im sysfs-Baum /sys/devices. Um alle Sensorchips zu finden, ist es einfacher, den Geräte-Symlinks aus /sys/class/hwmon/hwmon* zu folgen, wobei * eine reelle Zahl ist (0,1,2,...).

Die Sensorwerte befinden sich entweder im Verzeichnis /sys/class/hwmon/hwmon*/ für virtuelle Geräte oder im Verzeichnis /sys/class/hwmon/hwmon*/device für nicht-virtuelle Geräte. Eine Datei mit dem Namen name, die sich in den Verzeichnissen hwmon* oder hwmon*/device befindet, enthält den Namen des Chips, der dem Namen des vom Sensorchip verwendeten Kernel-Treibers entspricht.

Es gibt nur einen Sensorwert pro Datei. Das allgemeine Schema für die Benennung der Dateien, die Sensorwerte in einem der oben genannten Verzeichnisse enthalten, lautet: <type><number>_<item>, wobei

  • type - bei Sensorchips ist dies "in" (Spannung), "temp" (Temperatur), "fan" (Lüfter) usw.
  • item - "input" (gemessener Wert), "max" (oberer Schwellenwert), "min" (unterer Schwellenwert) usw.
  • number - wird immer für Elemente verwendet, die mehr als einmal vorhanden sein können (beginnt normalerweise bei 1, außer bei Spannungen, die bei 0 beginnen). Wenn sich Dateien nicht auf ein bestimmtes Element beziehen, haben sie einen einfachen Namen ohne Nummer.

Die Informationen zu den auf dem Host verfügbaren Sensoren können mit den Werkzeugen sensors-detect und sensors ermittelt werden (lm-sensors package). Sensors-detect hilft dabei festzustellen, welche Module für die verfügbaren Sensoren erforderlich sind. Wenn die Module geladen sind, kann das Programm sensors verwendet werden, um die Werte aller Sensorchips anzuzeigen. Die von diesem Programm verwendete Bezeichnung der Sensorwerte kann vom allgemeinen Benennungsschema (<type><number>_<item> ) abweichen:

  • wenn es eine Datei namens <type><number>_label gibt, wird die Bezeichnung in dieser Datei anstelle des Namens <type><number><item> verwendet;
  • wenn es keine Datei <type><number>_label gibt, sucht das Programm in /etc/sensors.conf (kann auch /etc/sensors3.conf oder eine andere Datei sein) nach einer Namensersetzung.

Diese Bezeichnung ermöglicht es dem Benutzer festzustellen, welche Art von Hardware verwendet wird. Wenn es weder eine Datei <type><number>_label noch eine Bezeichnung in der Konfigurationsdatei gibt, kann der Hardwaretyp anhand des Namensattributs (hwmon*/device/name) bestimmt werden. Die tatsächlichen Sensornamen, die zabbix_agent akzeptiert, können durch Ausführen des Programms sensors mit dem Parameter -u (sensors -u) ermittelt werden.

Im Programm sensors werden die verfügbaren Sensoren nach Bustyp getrennt (ISA-Adapter, PCI-Adapter, SPI-Adapter, virtuelles Gerät, ACPI-Schnittstelle, HID-Adapter).

Ermitteln von Sensor-IDs

Sensorbezeichnungen, wie sie vom Befehl sensors ausgegeben werden, können nicht immer direkt verwendet werden, da die Bezeichnung je nach Chip-Hersteller variiert. Zum Beispiel könnte die Ausgabe von sensors die folgenden Zeilen enthalten:

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)

Davon entspricht nur ein Anzeigename direkt einer internen ID:

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

Der Versuch, andere angezeigte Bezeichnungen zu verwenden (wie Vcore oder +12V), funktioniert nicht:

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

Um die interne Sensor-ID zu finden, die Zabbix akzeptiert, führen Sie sensors -u aus. In der Ausgabe kann Folgendes zu sehen sein:

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

Die Bezeichnung Vcore entspricht also der ID in1, und +12V entspricht in4. Gemäß der Kernel-hwmon-sysfs-Spezifikation sind dies Spannungen an Chip-Pins und müssen allgemein gesprochen möglicherweise skaliert werden.

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

Nicht nur Spannungs- (in), sondern auch Strom- (curr), Temperatur- (temp) und Lüfterdrehzahlwerte (fan) können von Zabbix abgerufen werden.

Kompatibilität

Veraltete Distributionen

Sensorwerte werden aus dem Verzeichnis /proc/sys/dev/sensors abgerufen:

  • device - Gerätename (wenn <mode> verwendet wird, ist dies ein regulärer Ausdruck)
  • sensor - Sensorname (wenn <mode> verwendet wird, ist dies ein regulärer Ausdruck)
  • mode - mögliche Werte: avg, max, min (wenn dieser Parameter weggelassen wird, werden device und sensor wörtlich behandelt)

Beispielschlüssel: sensor[w83781d-i2c-0-2d,temp1].

Aktuelle Distributionen

Sensorwerte werden aus dem Verzeichnis /sys/class/hwmon abgerufen:

  • device - Gerätename (kein regulärer Ausdruck). Der Gerätename kann der tatsächliche Name des Geräts sein (z. B. 0000:00:18.3) oder der mit dem Programm sensors ermittelte Name (z. B. k8temp-pci-00c3). Es liegt am Benutzer, zu entscheiden, welcher Name verwendet werden soll.
  • sensor - Sensorname (kein regulärer Ausdruck).
  • mode - mögliche Werte: avg, max, min (wenn dieser Parameter weggelassen wird, werden device und sensor wörtlich behandelt).

Beispielschlüssel:

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

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