【メモ】MuninのOpenIPMIプラグインでFAN速度・HDD/センサ温度・電力をグラフ化

【メモ】MuninのOpenIPMIプラグインでFAN速度・HDD/センサ温度・電力をグラフ化 はてなブックマーク - 【メモ】MuninのOpenIPMIプラグインでFAN速度・HDD/センサ温度・電力をグラフ化


Munin のプラグインセットアップ時のメモです。OpenIPMI 用のプラグインは、ハードウェアが出力する情報をグラフ化するものです。標準プラグインの1つ「ipmi_」を使えば、「ファンの回転数」「ハードウェアやマザーボード上のセンサ温度」「筐体の消費電力」を簡単にグラフ化することができます( ^ω^)

サーバ消費電力(ipmi_power)の推移。日次や週次では変化は分かりづらいですが、長期的に消費電力が高くなっているかどうか判断できます。

ipmi_tempは、環境温度やマザーボードのチップセット、HDDセンサ等の温度を表示します

ipmi_fansは各種ファンの回転数推移。Load Averageと連動する傾向にあります。サーバの負荷状況が高くなると「がんばっています。。。」というのが分かるプラグインです

■IPMI はハード情報をゲットだぜ!

そのまえに、IPMIとは何でしょうか。IPMI ( Intelligent Platform Management Interface ) の略で、要はハードウェアに関する情報を管理するインターフェースの事です。なんだか、分かったような、分からないような IPMI は、どうやって生まれたのでしょう。

今から約15年前、かつては、ハードウェアの信頼性や拡張性への対応、サーバ環境のリモート管理や高価な修理コスト削減という課題が発生しました。これに対して、OSの壁を乗り越え、ハードウェアレベルで扱える方法があるのではと、Intel社が提唱、各ハードウェアベンダやサーバベンダが企画に参画、1998年に IPMI 1.0 と規格化されたものなのです。

メーカやベンダの壁を越えて、統一化された手法でハードウェア(サーバ)を管理しようという思想の元で生まれました。

これら情報を取得するには、ベンダが提供している専用ツールを使ったり、Linux であれば OpenIPMIFreeIPMI を使います。IPMI には、コマンドライン上やネットワークを経由しても、 インターフェースにアクセスする事が出来ます。アクセスするといっても、単純にコマンドを叩く→結果が戻るという極めてシンプルなものなのです。

■IPMIを有効にして使ってみる(RHEL/CentOS)

IPMIを使うには、サーバが IPMI に対応したチップセットを搭載していないといけません。ここ最近のサーバであれば、おそらく標準搭載されているかとは思います(多分)。また、多くのメーカでは、専用のツールを使った WebUI を通しての利用方法がマニュアルに書かれています。CLI 版のマニュアルが提供されている場合もありますので、詳しくはメーカのサイトをご確認ください。

さて、Linux の場合は、WebUI を使わず、コマンドラインから操作可能です。コマンドで操作可能な利点は、メーカに依存せず、ほぼ同様の結果が得られる点です。メーカが異なっても、温度取得のコマンドを実行すると、同様の結果が表示されます( メーカや機種依存の SNMP MIB ではないので、シンプル&簡単です)。

具体的には、OpenIPMI-tools に含まれるコマンドや、Munin のプラグイン ipmi_ を使ってデータを取得できます。(FreeIPMIでも構いませんが、Muninのプラグインは OpenIPMI 向けで作られていますので、この方法をご紹介)

まず、OpenIPMI と OpenIPMI-tools パッケージが必要です。

# yum install OpenIPMI OpenIPMI-tools

次に ipmi インターフェースが認識できるかテストします。

# /sbin/service ipmi start
Starting ipmi drivers:                                     [  OK  ]

ここでもしも OK と出なければ、残念ながら対象サーバでは IPMI がサポートされていない可能性があります(あるいは BIOS で切っている等)。

OK の場合は、サーバ起動時にも ipmi が有効になるようにします。

# /sbin/ckhconfig ipmi on

もしも不幸にも [失敗] と表示された場合や、’ipmi status’ と実行して、次のようにセンサが見つからない!と出た場合は諦めましょう(´・ω・`)

ipmi_msghandler module not loaded.
ipmi_si module not loaded.
ipmi_devintf module not loaded.
/dev/ipmi0 does not exist.

正常に IPMI が認識されていれば、次のようにセンサ温度が取得できます。

# ipmitool sdr type Temperature
Ambient          | 01h | ok  | 39.0 | 24.50 degrees C
Systemboard 1    | 02h | ok  |  7.0 | 32 degrees C
Systemboard 2    | 03h | ok  |  7.1 | 30 degrees C
Systemboard 3    | 04h | ok  |  7.2 | 57 degrees C
CPU              | 05h | ok  |  3.0 | 67 degrees C
DIMM-1A          | 06h | ok  | 32.0 | 32 degrees C
DIMM-2A          | 07h | ns  | 32.1 | No Reading
DIMM-1B          | 08h | ok  | 32.2 | 32 degrees C
DIMM-2B          | 09h | ns  | 32.3 | No Reading
Temp1 PSU        | 0Ah | ok  | 10.0 | 39 degrees C
Temp2 PSU        | 0Bh | ok  | 10.1 | 28 degrees C
Temp3 PSU        | 0Ch | ok  | 10.2 | 31 degrees C
Ambient          | 27h | ok  | 39.0 | Device Present

ファンの回転数や消費電力などは ‘ipmitool sensor’ と実行すると確認できます。プラグイン ipmi_ は、この出力結果を取り込み、グラフ化します。では、プラグインを有効化しましょう。

■ipmi_ プラグインを有効化する

ipmi_ プラグインは、Munin 標準添付のものです。そのため、シンボリック・リンクを作成し、設定ファイルに追記するだけと、比較的簡単です。まずは、シンボリックリンクの作成です。

# ln -s /usr/share/munin/plugins/ipmi_ /etc/munin/plugins/ipmi_fans
# ln -s /usr/share/munin/plugins/ipmi_ /etc/munin/plugins/ipmi_temp
# ln -s /usr/share/munin/plugins/ipmi_ /etc/munin/plugins/ipmi_power

次に、設定ファイル /etc/munin/plugin-conf.d/munin-node に、以下の行を追加します。ipmitool コマンドは root 権限でしか実行できないためです。

[ipmi_*]
    user root

次に動作テストです。munin-run の引数に、ipmi_fans や ipmi_temp を付けてテストします。

# /usr/sbin/munin-run ipmi_fans
FAN1SYS.value 3360.000
FAN2SYS.value 3120.000
FAN3SYS.value 3600.000
FAN4SYS.value 3600.000
FAN5SYS.value 3360.000
FAN1PSU.value 3240.000
FAN2PSU.value 3440.000

このように表示されれば、正常です。もしエラーが出てしまう場合は munin-run –debug ipmi-fans を実行すると、エラー原因が分かるかもしれません。

最後に、munin-node を再起動して、作業完了です。

# /sbin/service munin-node restart

あとは、データが更新されるまで 10 分間程度お待ちください。

以上で OpenIPMI プラグインの有効化は完了です。サーバがパフォーマンスを出しているかどうかを、CPU やメモリリソースで見る方法も1つですが、消費電力や温度など、ハードウェアの観点から評価するのも、時に役立つのではないかと思います( ^ω^)

■オマケ

ipmi が有効であれば、次のコマンドで、ハードウェア情報を取る事が出来ます(正確には FRU = Failed Replaceable Unit であり、交換可能部材の情報表示です)。

# ipmitool fru

対応機器であれば、メーカ名称や、型番、シリアル番号も参照する事も。zabbix に投げるような or 回収するような仕組みを作れば、自動的にインベントリの機器情報を埋めることも出来そうですね。ちなみに、IPMI に対応していなくても、ハードウェア情報を取得するだけであれば、/usr/sbin/dmidecode でも、同様の情報は取得できます。

■参考文献

/usr/share/munin/plugins/ipmi_ ( munindoc ipmi_ )

OpenIPMI
http://openipmi.sourceforge.net/

IPMI, V10, Overview, Progress, and Implementation
http://www.intel.com/content/www/us/en/servers/ipmi/ipmi-overview.html