• Showing Page History #6042
  • Showing Page History #6048

Show page source of ExpressScopeHowTo_4p3 #16552

==== EXPRESSSCOPEエンジンを使う / ![応用編2] サーバのセンサー情報の取得とグラフ化

[ExpressScopeHowTo_4p2 <前のページ] | [ExpressScopeHowTo_4p1 1] | [ExpressScopeHowTo_4p2 2] | 3 | [ExpressScopeHowTo_4p4 4] | [ExpressScopeHowTo_4p5 5] | [ExpressScopeHowTo_4p4 次のページ>]

== データベースファイルの作成エラー

さて、create_rrds.shを実行することでセンサーごとにデータベースファイルが作成されるはずなのですが、今回はファン回転数センサー(Processor FAN、Rear FAN1、Rear FAN2)のファイルが作成できないというトラブルが発生しました。このページではこの問題にどうやって対処したのかを説明します。トラブルに遭遇しなかった方には不要な手順ですので、その場合は次のページに進んでいただいてかまいません。

まずスクリプト実行時のメッセージを以下に示します。

{{{
$ /usr/share/ipmitool/create_rrds.sh
Creating file /var/www/rrd/i110Rc-1h-Processor Vccp.rrd
Creating file /var/www/rrd/i110Rc-1h-Baseboard P_Vtt.rrd
Creating file /var/www/rrd/i110Rc-1h-Baseboard 1.5v.rrd
Creating file /var/www/rrd/i110Rc-1h-Baseboard 1.8v.rrd
Creating file /var/www/rrd/i110Rc-1h-Baseboard 3.3V.rrd
Creating file /var/www/rrd/i110Rc-1h-Baseboard 5v.rrd
Creating file /var/www/rrd/i110Rc-1h-Baseboard 12v.rrd
Creating file /var/www/rrd/i110Rc-1h-Baseboard VBAT.rrd
Creating file /var/www/rrd/i110Rc-1h-Baseboard Temp2.rrd
Creating file /var/www/rrd/i110Rc-1h-Processor Temp1.rrd
Creating file /var/www/rrd/i110Rc-1h-Processor FAN.rrd
ERROR: min must be less than max in DS definition
Creating file /var/www/rrd/i110Rc-1h-Rear FAN1.rrd
ERROR: min must be less than max in DS definition
Creating file /var/www/rrd/i110Rc-1h-Rear FAN2.rrd
ERROR: min must be less than max in DS definition
}}}

このメッセージを見ると、初期パラメータとして与える最小値が最大値よりも大きかったということのようです。そこで、ファン回転数センサーの詳しい情報を見てみることにしました。個別のセンサーの情報は1ページ目で紹介した「sdr get」で取得できますが、「sensor get」でも取得できます。以下はCPUファン(Processor FAN)の情報です。

{{{
$ ipmitool -I lanplus -H 172.17.4.129 -U hmori -P xxxxxxxx sensor get "Processor FAN"
Locating sensor record...
Sensor ID              : Processor FAN (0x40)
 Entity ID             : 3.1
 Sensor Type (Analog)  : Fan
 Sensor Reading        : 3039.514 (+/- inf) RPM
 Status                : ok
 Lower Non-Recoverable : na
 Lower Critical        : na
 Lower Non-Critical    : na
 Upper Non-Critical    : 2364.066
 Upper Critical        : na
 Upper Non-Recoverable : na
 Assertion Events      :
 Assertions Enabled    : unc+
 Deassertions Enabled  : unc+
}}}

これによると現在CPUファンは約3000回転で動作しているようですが、回転数のレンジはUpper Non-Critical(許容上限値)以外設定されていません。その許容上限値も2364.066回転と現在の実測値より小さくなっています。どうも様子がおかしいのでNECに問い合わせたところ、以下のような回答をいただきました。

  ''このFANセンサは、IPMI仕様上、linearizationが1/xとなっているセンサですが、この場合、raw data(実際のセンサの値)と、実データ(SDRに従って計算したRPM値)が逆の大きさ(1/xの関係)になります。この1/xセンサの場合、IPMI仕様ではソフトウェア側にてUpperの閾値をLowerに、Lowerの閾値をUpperに読み替えて表示することを推奨する旨、記載されています。しかしipmitoolがその処理を行っていないため、Upper Non-Criticalの閾値が実際の値より小さい閾値に見えています。''

[[Thumb(fan.jpg, float=right, caption=CPUファン(上)とケースファン(下))]]

というわけで、i110Rc-1hの場合ファンセンサに関してはipmitoolが表示する閾値はあてにならないようです。そこで本体を開いてファン自体を調べてみました。CPUファンはAVC(Asia Vital Components)というメーカーの製品で型番は「DA06010B12U」。60×60×10mmの2ボールベアリングファンでした。[http://www.avc.com.tw/products/image-fan/detail/home/DA6010.pdf スペックシート(PDF)]によると、5.0~13.2V駆動が可能で定格時(12V)の回転数は5400回転です。

ケースファンもAVCの製品で型番は「DB04028B12U」、40×40×28mmの2ボールベアリングファンです。5.0~13.2V駆動で定格時(12V)の回転数は16500回転です([http://www.avc.com.tw/products/image-fan/detail/home/DV4028.pdf スペックシート])。

== ストレステストの実施

さて、定格時の回転数は分かりましたが、下限値、上限値をどれくらいにするのが適当なのか分かりません。そこでアイドル時と高負荷時のファン回転数を調べ、それにマージンを取って下限値、上限値とすることにしました。高負荷状態を作り出すツールを“ストレステストツール”と呼びますが、今回はストレステストツールとして[http://pages.sbcglobal.net/redelm/ cpuburn]を利用しました。このツールにはCPUのアーキテクチャごとに最適化したバイナリが用意されており、Pentium II以降のIntel製プロセッサ用コマンドはburnP6です。これをサーバ上で以下のように実行します。

{{{
$ burnP6 &
$ burnP6 &
}}}

このマシン「i110Rc-1h」のCPU(Core 2 Duo)はデュアルコアプロセッサですが、cpuburnはシングルスレッドのツールです。そこで上記のように2つ実行して2つのコアがフル稼働するようにしています。以下がテスト結果です。

|| ||アイドル||高負荷(cpubrun 1時間)||
||CPU温度(℃)||55||98||
||マザーボード温度(℃)||39||47||
||CPUファン(RPM)||3039.51||3546.10||
||ケースファン1(RPM)||5590.34||8903.13||
||ケースファン2(RPM)||5590.34||8741.26||
||室温(℃)||26||26||

cpuburnでCPU使用率100%の状態を1時間続けましたが、CPUファンの回転数は500回転ほどしか増えませんでした。一方、ケースファンのほうは3000回転以上増えています。この結果を基に、上下にマージンを取って最小値、最大値を以下のようにすることにしました。

|| ||最小値||最大値||
||CPUファン(RPM)||2000||5000||
||ケースファン(RPM)||4000||10000||

== データベースファイルの手動作成

それでは上記の値でデータベースファイルを作成します。RRDtoolのデータベースファイルを作成するためのコマンドはcreate_rrds.shに記述されているので、それを参照にしてrrdtoolコマンドを以下のように実行しました。

{{{
$ rrdtool create "/var/www/rrd/i110Rc-1h-Processor FAN.rrd" \
                --step 300 DS:var:GAUGE:900:2000:5000 \
                RRA:AVERAGE:0.5:1:288 \
                RRA:AVERAGE:0.5:6:336 \
                RRA:AVERAGE:0.5:12:720
}}}

上記はCPUファン用のデータベースを作成するコマンドの例です。内容については以下を参照してください。

 * 1行目:作成するデータベースファイルの指定
 * 2行目:300秒(5分間)おきに下限値2000、上限値5000の範囲のデータを取得
 * 3行目:5分おきのデータを288個(5分×288=24時間分)保持
 * 4行目:5分おきのデータ6個のうち1つ(30分間隔のデータ)を336個(5×6×336=7日間分)保持
 * 5行目:5分おきのデータ12個のうち1つ(1時間間隔のデータ)を720個(5×12×720=30日間分)保持

このようにRRDtoolでは、どのようなデータをどれくらいの分量保持しておくのかをあらかじめ設定しておきます。そして新しいデータを記録する際は、データベース上のいちばん古いデータが上書きされます。この仕組みにより、RRDtoolのデータベースファイルは肥大化しないようになっているのです。

CPUファンの次は、ケースファンのデータベースファイルも同様の手順で作成します。

'''ケースファン1'''
{{{
$ rrdtool create "/var/www/rrd/i110Rc-1h-Rear FAN1.rrd" \
                --step 300 DS:var:GAUGE:900:4000:10000 \
                RRA:AVERAGE:0.5:1:288 \
                RRA:AVERAGE:0.5:6:336 \
                RRA:AVERAGE:0.5:12:720
}}}

'''ケースファン2'''
{{{
$ rrdtool create "/var/www/rrd/i110Rc-1h-Rear FAN2.rrd" \
                --step 300 DS:var:GAUGE:900:4000:10000 \
                RRA:AVERAGE:0.5:1:288 \
                RRA:AVERAGE:0.5:6:336 \
                RRA:AVERAGE:0.5:12:720
}}}

少し回り道になりましたが、これでデータベースファイルが用意できました。

[ExpressScopeHowTo_4p2 <前のページ] | [ExpressScopeHowTo_4p1 1] | [ExpressScopeHowTo_4p2 2] | 3 | [ExpressScopeHowTo_4p4 4] | [ExpressScopeHowTo_4p5 5] | [ExpressScopeHowTo_4p4 次のページ>]

----
[[include(ExpressScopeHowTo_4_backnumber)]]