Munin のプラグインセットアップ時のメモです。OpenIPMI 用のプラグインは、ハードウェアが出力する情報をグラフ化するものです。標準プラグインの1つ「ipmi_」を使えば、「ファンの回転数」「ハードウェアやマザーボード上のセンサ温度」「筐体の消費電力」を簡単にグラフ化することができます( ^ω^)
■IPMI はハード情報をゲットだぜ!
そのまえに、IPMIとは何でしょうか。IPMI ( Intelligent Platform Management Interface ) の略で、要はハードウェアに関する情報を管理するインターフェースの事です。なんだか、分かったような、分からないような IPMI は、どうやって生まれたのでしょう。
今から約15年前、かつては、ハードウェアの信頼性や拡張性への対応、サーバ環境のリモート管理や高価な修理コスト削減という課題が発生しました。これに対して、OSの壁を乗り越え、ハードウェアレベルで扱える方法があるのではと、Intel社が提唱、各ハードウェアベンダやサーバベンダが企画に参画、1998年に IPMI 1.0 と規格化されたものなのです。
メーカやベンダの壁を越えて、統一化された手法でハードウェア(サーバ)を管理しようという思想の元で生まれました。
これら情報を取得するには、ベンダが提供している専用ツールを使ったり、Linux であれば OpenIPMI や FreeIPMI を使います。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