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 package) を使用して取得できます。
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 adapter、PCI adapter、SPI adapter、Virtual device、ACPI interface、HID adapter)。
センサー識別子の取得
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]。