Zabbix温度監視 No.02 USB温度計をインストール

Zabbixで温度を測るためにLinuxでUSB温度計を利用できるようにします。

■USB温度計の準備

使ったのはAmazonやヤフーショッピングで売っているスティック型USB温度計。現在利用しているのはTEMPerV1.2ですが、センサーが2個ついたTemperV2でも利用可能なはず。
usbtemper
3年前に購入した時は1本1,000円くらいでしたが、今は1,500~2,000円するようです。

■USB温度計を設置

入手したUSB温度計をLinuxサーバに接続します。といってもUSBなので差し込むだけ。
一つは機器の排気温度の影響を受けない位置で計測したいのでラックマウントサーバの前面に直接差し込みます。全長が短いので前面ドアにぶつかることはありません。
sever_temp_sensor

もう一つは少し離れた場所の温度を測りたいのでUSB延長ケーブルを使います。USB規格で5.0mまでのケーブルしか使えません。規格以上に長いケーブルを使いたい場合はUSBリピーターケーブルを用意しましょう。今回は直射日光の当たらない床上約1mの場所にUSB温度計を垂らします。
room_temp_sensor

■Linuxにドライバを準備する

付属のCDにはWindows用のドライバしか入っていないのでLinuxで利用するには別途ドライバを調達する必要があります。私が利用しているのはOSAKANA TARO氏が公開が公開している「pcsensor-1.0.2 for TEMPerV1.2 with multi device support」。今から導入するならpcsensor-1.0.3の方が良いはずです。

■USB温度計 | OSAKANA TAROのメモ帳
http://blog.osakana.net/archives/category/minor/usbtemper

pcsensorの使い方はLinuxに解凍・コピーしてpcsensorを実行するだけ。

# cd /tmp
# wget http://blog.osakana.net/sw/pcsensor/pcsensor-1.0.3.tar.gz
tar xvf pcsensor-1.0.3.tar.gz
# tar xvf pcsensor-1.0.3.tar.gz
./pcsensor-1.0.3/
./pcsensor-1.0.3/pcsensor-1.0.0.c
./pcsensor-1.0.3/99-tempsensor.rules
./pcsensor-1.0.3/Makefile
./pcsensor-1.0.3/pcsensor
./pcsensor-1.0.3/pcsensor-1.0.1.c
./pcsensor-1.0.3/pcsensor-0.0.1.c
./pcsensor-1.0.3/readme.txt
./pcsensor-1.0.3/pcsensor.c
# cp -r pcsensor-1.0.3/ /opt/pcsensor
# cd /opt/pcsensor
# ls -alh
合計 100K
drwxr-xr-x  2 root root 4.0K  7月 26 19:21 2015 .
drwxr-xr-x. 5 root root 4.0K  7月 26 19:21 2015 ..
-rw-r--r--  1 root root   96  7月 26 19:21 2015 99-tempsensor.rules
-rw-r--r--  1 root root  211  7月 26 19:21 2015 Makefile
-rwxr-xr-x  1 root root  20K  7月 26 19:21 2015 pcsensor
-rw-r--r--  1 root root  12K  7月 26 19:21 2015 pcsensor-0.0.1.c
-rw-r--r--  1 root root  13K  7月 26 19:21 2015 pcsensor-1.0.0.c
-rw-r--r--  1 root root  13K  7月 26 19:21 2015 pcsensor-1.0.1.c
-rw-r--r--  1 root root  14K  7月 26 19:21 2015 pcsensor.c
-rw-r--r--  1 root root 1016  7月 26 19:21 2015 readme.txt
#
■pcsensorをコンパイル & 実行してみる

pcsensorはコマンドを実行するだけで動くはずでしたが、エラーで実行できませんでした。回避策としてOSAKANA TARO氏の記事を参考にコンパイルを試してみます。

# cd /opt/pcsensor
# ./pcsensor
bash: ./pcsensor: バイナリファイルを実行できません
# rm -f pcsensor
# make
cc -DUNIT_TEST -o pcsensor pcsensor.c -lusb
# ./pcsensor
2015/07/26 19:28:18 Temperature0 96.35F 35.75C
2015/07/26 19:28:18 Temperature0 98.94F 37.19C

今度は実行できましたね。1行目と2行目で違う温度が表示されています。表示される温度と実際の室温を調べた結果、1行目が延長ケーブルで接続した離れた場所の温度計、2行目がサーバ前面の温度計でした。
値は機器によって異なるので、出力された結果を元に自分で見当をつけるのが手っ取り早いと思います。

Zabbixで値を取得・識別するために、オプション -dで接続先(Bus)を、オプション -cで摂氏温度だけを取得します。

# /opt/pcsensor/pcsensor -d -c
2015/07/26 19:40:46 Bus 003 Device 054 Temperature0 35.62C
2015/07/26 19:40:46 Bus 002 Device 054 Temperature0 37.06C

以上でLinuxで温度を取得できるようになりました。次回はこのコマンドを元にzabbix-senderを使ったZabbix温度監視の方法を紹介します。