6 センサー

概要

各センサー・チップは、sysfs /sys/devices ツリー内に独自のディレクトリを持ちます。 すべてのセンサー・チップを見つけるには、/sys/class/hwmon/hwmon* からデバイスのシンボリックリンクをたどる方が簡単です。ここで * は実際の数字 (0,1,2,...) です。

センサーの読み取り値は、仮想デバイスの場合は /sys/class/hwmon/hwmon*/ ディレクトリに、非仮想デバイスの場合は /sys/class/hwmon/hwmon*/device ディレクトリにあります。 hwmon* または hwmon*/device ディレクトリ内にある name という名前のファイルには、チップの名前が含まれており、これはセンサー・チップで使用されているカーネル・ドライバの名前に対応します。

1つのファイルにつき、1つのセンサー読み取り値のみが記録されます。 上記のいずれかのディレクトリ内でセンサー読み取り値を含むファイルの一般的な命名規則は、<type><number>_<item> です。ここで

  • type - センサー・チップの場合は "in" (電圧)、"temp" (温度)、"fan" (ファン) など
  • item - "input" (測定値)、"max" (上限値)、"min" (下限値) など
  • number - 複数存在する可能性がある要素に常に使用されます (通常は1から始まりますが、電圧の場合は0から始まります)。 ファイルが特定の要素を参照しない場合は、番号なしの単純な名前になります。

ホストで利用可能なセンサーに関する情報は、sensors-detect および sensors ツール (lm-sensorsパッケージ) を使用して取得できます。 sensors-detect は、利用可能なセンサーに必要なモジュールを特定するのに役立ちます。 モジュールがロードされると、sensors プログラムを使用してすべてのセンサー・チップの読み取り値を表示できます。 このプログラムで使用されるセンサー読み取り値のラベル付けは、一般的な命名規則 (<type><number>_<item>) とは異なる場合があります。

  • <type><number>_label というファイルがある場合、このファイル内のラベルが <type><number><item> 名の代わりに使用されます。
  • <type><number>_label ファイルがない場合、プログラムは /etc/sensors.conf (または /etc/sensors3.conf など) 内で名前の置換を検索します。

このラベル付けにより、ユーザーはどのようなハードウェアが使用されているかを特定できます。 <type><number>_label ファイルも設定ファイル内のラベルもない場合は、name属性 (hwmon*/device/name) でハードウェアの種類を特定できます。 zabbix_agent が受け付けるセンサーの実際の名前は、sensors プログラムを -u パラメータ (sensors -u) で実行することで取得できます。

sensors プログラムでは、利用可能なセンサーはバスタイプ (ISAアダプタ、PCIアダプタ、SPIアダプタ、仮想デバイス、ACPIインターフェース、HIDアダプタ) ごとに区切られています。

センサー識別子の取得

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

したがって、Vcoreラベルは識別子in1に、+12Vin4に対応します。 カーネルhwmon sysfsの仕様によると、これらはチップピンの電圧であり、一般的にはスケーリングが必要な場合があります。

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

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

互換性

レガシーディストリビューション

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

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

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

現在のディストリビューション

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

  • device - デバイス名(正規表現ではありません)。 デバイス名は、実際のデバイス名(例: 0000:00:18.3)または sensors プログラムで取得した名前(例: k8temp-pci-00c3)のいずれかです。 どちらの名前を使用するかはユーザーが選択できます。
  • sensor - センサー名(正規表現ではありません)。
  • mode - 可能な値: avg, max, min(このパラメータを省略した場合、device と sensor はそのまま扱われます)。

キーの例:

sensor[k8temp-pci-00c3,temp,max] または sensor[0000:00:18.3,temp1]

sensor[smsc47b397-isa-0880,in,avg] または sensor[smsc47b397.2176,in1]