This is a translation of the original English documentation page. Help us make it better.

8 Sensor

Each sensor chip gets its own directory in the sysfs /sys/devices tree. To find all sensor chips, it is easier to follow the device symlinks from /sys/class/hwmon/hwmon*, where * is a real number (0,1,2,...).

The sensor readings are located either in /sys/class/hwmon/hwmon*/ directory for virtual devices, or in /sys/class/hwmon/hwmon*/device directory for non-virtual devices. A file, called name, located inside hwmon* or hwmon*/device directories contains the name of the chip, which corresponds to the name of the kernel driver used by the sensor chip.

There is only one sensor reading value per file. The common scheme for naming the files that contain sensor readings inside any of the directories mentioned above is: <type><number>_<item>, where

  • type - for sensor chips is "in" (voltage), "temp" (temperature), "fan" (fan), etc.,
  • item - "input" (measured value), "max" (high threshold), "min" (low threshold), etc.,
  • number - always used for elements that can be present more than once (usually starts from 1, except for voltages which start from 0). If files do not refer to a specific element they have a simple name with no number.

The information regarding sensors available on the host can be acquired using sensor-detect and sensors tools (lm-sensors package: http://lm-sensors.org/). Sensors-detect helps to determine which modules are necessary for available sensors. When modules are loaded the sensors program can be used to show the readings of all sensor chips. The labeling of sensor readings, used by this program, can be different from the common naming scheme (<type><number>_<item> ):

  • if there is a file called <type><number>_label, then the label inside this file will be used instead of <type><number><item> name;
  • if there is no <type><number>_label file, then the program searches inside the /etc/sensors.conf (could be also /etc/sensors3.conf, or different) for the name substitution.

This labeling allows user to determine what kind of hardware is used. If there is neither <type><number>_label file nor label inside the configuration file the type of hardware can be determined by the name attribute (hwmon*/device/name). The actual names of sensors, which zabbix_agent accepts, can be obtained by running sensors program with -u parameter (sensors -u).

In sensor program the available sensors are separated by the bus type (ISA adapter, PCI adapter, SPI adapter, Virtual device, ACPI interface, HID adapter).

Linux 2.4の場合:

(センサーの読み取り値は/proc/sys/dev/sensorsディレクトリから取得されます)

  • device - デバイス名(<mode>が使用されている場合は正規表現です)
  • sensor - センサー名(<mode>が使用されている場合は正規表現です)
  • mode - 使用可能な値:avg,max,min(このパラメーターが省略されている場合、デバイスとセンサーは逐語的に扱われます)

キーの例:sensor[w83781d-i2c-0-2d,temp1]

Zabbix 1.8.4以前は sensor [temp1] 形式が使用されていました。

Linux 2.6以降の場合:

(センサーの読み取り値は/sys/class/hwmonディレクトリから取得されます)

  • device - デバイス名(非正規表現) デバイス名はデバイスの実際の名前(0000:00:18.3など)またはセンサープログラムを使用して取得した名前(k8temp-pci-00c3など)の場合があります。 使用する名前はユーザーが選択してください。
  • sensor - センサー名(非正規表現)
  • mode - 使用可能な値: avg, max, min (このパラメーターを省略した場合、デバイスとセンサーは逐語的に扱われます).

キーの例:

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

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

センサー名の取得

ラベルの名前はセンサーチップベンダーごとに異なる可能性があるため、sensorsコマンドで出力されるセンサーラベルは常に使用できるとは限りません。 たとえばsensorsの出力には次のような行が含まれる場合があります。

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

これらのうち直接使用できるラベルは1つだけです。

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

他のラベル(Vcore+12Vなど)を使用しようとしても機能しません。

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

Zabbixがセンサーの読み取り値を取得するために使用できる実際のセンサー名を確認するにはsensors -uを実行します。出力では次のことが確認できます。

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

上記からVcorein1として、* +12Vin4*として照会する必要があります。[^1]

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

Zabbixは電圧(in)だけでなく電流(curr)温度(temp)ファン速度(fan)の読み取り値も取得できます。

[^ 1]:仕様によると、これらはチップピンの電圧であり、スケーリングが必要な場合があります。