8 センサー

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

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

センサー読み取り値はファイルごとに1つだけです。 上記のディレクトリ内のセンサー読み取り値を含むファイルに名前を付けるための一般的なスキームは次のとおりです。 <type><number>_<item>, where

-タイプ-センサーチップの場合、「in」(電圧)、「temp」(温度)、「fan」(ファン)などです。 -項目-「入力」(測定値)、「最大」(高しきい値)、「最小」(低しきい値)など、 -数値-複数回存在する可能性のある要素に常に使用されます(0から始まる電圧を除いて、通常は1から始まります)。 ファイルが特定の要素を参照していない場合、ファイルには番号のない単純な名前が付けられます。 - type - センサーチップの場合"in"(電圧),"temp"(温度),"fan"(ファン)など - item - "input" (測定値), "max" (高いしきい値), "min" (低いしきい値),など - number - 複数存在する可能性のある要素に常に使用されます。(0から始まる電圧を除いて、通常は1から始まります) ファイルが特定の要素を参照していない場合、ファイルには番号のない単純な名前が付けられます。

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

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

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

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

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]:仕様によると、これらはチップピンの電圧であり、スケーリングが必要な場合があります。