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に、+12Vはin4に対応します。
カーネル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]