Home > Admin | Linux | Server > Munin ipmitool_sensor_ Plugin

Munin ipmitool_sensor_ Plugin


Munin ipmitool_sensor_ Plugin

Munin ipmitool_sensor_ Plugin

Muninでマシンのファン回転数、温度、電圧をグラフ化するにはsensor_というPluginを使うのが楽です。ただし、このPluginはlm_sensorsの値を見るので、比較的新しい対応していないマザーボードだと値を取ることができません。そんな対応していないマザーボードでも、最近のサーバ用マシンであればIPMIが入っているので、IPMI経由で取得した値を使ってファン回転数、温度、電圧をグラフ化すれば良いです。

そんなわけで、Munin用のIPMIを使ったPluginを調べたところ次の3つありました。

1個目が良い感じなのですが、自分の環境だとそのままでは動かなかったのと、HP ProLiant ML110 G5(Lights-Out 100)のセンサーのアラート出す閾値の出力がどうも逆さになってるっぽい箇所があり、しょうがないので別のPluginを作りました。

このPluginは、sensor_ のコードをベースにしています。なのでPerlです。まだまだデフォルトでRuby入っていない環境もあるので良いかなと思います。

以下、CentOS 5.2環境での使い方。Muninは導入済みとします。

  • 必要なIPMIに関するパッケージをインストールしてIPMI用Kernelモジュールのロード
yum -y install OpenIPMI OpenIPMI-tools
chkconfig ipmi on
/etc/init.d/ipmi start
  • 動作確認
ipmitool sensor

値がバラバラでてくればOKです。

  • Muninへipmitool_sensor_ Plugin導入

便宜上、/usr/share/munin/plugins/ipmitool_sensor_ にPluginをダウンロードしてあることにします。

ln -s /usr/share/munin/plugins/ipmitool_sensor_ /etc/munin/plugins/ipmitool_sensor_fan
ln -s /usr/share/munin/plugins/ipmitool_sensor_ /etc/munin/plugins/ipmitool_sensor_temp
ln -s /usr/share/munin/plugins/ipmitool_sensor_ /etc/munin/plugins/ipmitool_sensor_volt
  • munin-node 設定
[ipmitool_sensor*]
user root
timeout 20

オプションで次の値が設定できます。

env.ipmitool          - ipmitool command (default: ipmitool)
env.ipmitool_options  - ipmitool command options (default: sensor)
env.cache_file        - cache file
                        (default: /var/lib/munin/plugin-state/plugin-ipmitool_sensor.cache)
env.cache_expires     - cache expires (default: 275)

env.fan_warn_percent  - Percentage over mininum for warning
env.volt_warn_percent - Percentage over mininum/under maximum for warning
                        Narrow the voltage bracket by this.
  • munin-node 再起動
/etc/init.d/munin-node restart

これで、添付してある画像のようにグラフが作られます。

Dell PowerEdge 1800(BMC)とHP ProLiant ML110 G5(Lights-Out 100)で使っていますが両方ともうまく動いています。HPの方のipmitool sensorによる値取得は値が取れるまでちょっと時間が掛かりますが、env.cache_fileにenv.cache_expires秒だけキャッシュするようにしているのでMunin本体が毎回グラフ作成時(デフォルトだと5分毎)に値を取りに行っても2つ目のグラフ作成時はキャッシュが使われるので良い感じに動きます(この機能はRubyで書かれたipmi_sensor_にもあります)。

というわけで、lm_sensorsで値とれないけどIPMIが使えるマシンを使っている方は是非お試しください。

この記事に関連する別の記事:

  1. Munin Plugin: ipmitool_sensor_ 1.4 以前、2008-10-29 (Wed) – Munin ipmitool_sensor_ Pluginで紹介したMunin用のipmitool_sensor_ Pluginの新しいバージョンをリリースしました [...]...
  2. Munin Plugin: ipmitool_sensor_ 1.5 & 1.6 Munin Plugin である ipmitool_sensor_ plugin の新しいバージョン 1.5 をリリースしました。 [2011-02-07追記]: コメントにて...
  3. HP ProLiant ML110 G5のシステムBIOSとLights-Out 100ファームウェア上げたらファンが回りっぱになったら 同構成のHP ProLiant ML110 G5が2台あって、そのうち最初にやった1台がファームウェアを上げたらファンが回りっぱになってしまいました。このマシンは内部温度でファン速度が変わるもののどうみても温度関係なく回 [...]...
  4. WP FreeStyle Wiki の Plugin Directory への登録 去年の年末年始(2009-2010)に書いた WP FreeStyle Wiki を、WordPress の Plugin Directory に登録しました。 WP...
  5. 積もったタスク消化中: Hudson Plugin 完了 ...

コメント:10

nasobeme 08-11-01 (土) 13:03

ありがたく使わせてもらってます。
ただ、fanのucrが”inf”になるパターンがありました。こんな感じ↓

FAN1 ROTOR1 | 7680.492 | RPM | ok | na | inf | na | na | 1000.400 | na

マシンはHPのDL160です。これだと1000:infでcriticalになるので、いつも閾値を外れてしまうようです。
fan_threashod()でucrにnaだけでなく、infも空文字を入れるようにしてみました。

nasobeme 08-11-01 (土) 14:34

つづけて。
volt_threshold()でlncとuncを出してるところで

unc = $ucr * (100 + $warn_percent) / 100

だと、uncがucr超えてしまって、warningにlncとunc、criticalにlcrとucrを使うとwarningの上の閾値がcriticalの上の閾値より高いことになってしまいます。

とりあえず、

$unc = ( $lcr * (50 – $warn_percent ) + $ucr * (50 + $warn_percent )) / 100

としてみました。適切かどうかわかりませんが。

jfut 08-11-01 (土) 15:28

ご指摘ありがとうございます。
inf 対応と $unc が正しい値になるように修正したものを下記にアップしました。
http://integ.jp/server/ipmitool_sensor/ipmitool_sensor_

$unc の値は $lnc に合わせて%分引くようにしました。
$unc = ($ucr eq ”) ? ” : $ucr * (100 – $warn_percent) / 100;

また、IPMIで閾値を返さないボードが結構あるようなので以下のオプションを追加しました。
fan_lower_critical – Preferred lower critical value for fan
fan_upper_critical – Preferred upper critical value for fan
temp_lower_critical – Preferred lower critical value for temp
temp_lower_warning – Preferred lower warining value for temp
temp_upper_warning – Preferred upper warning value for temp
temp_upper_critical – Preferred upper critical value for temp

手元の環境で動かして問題なければ明日MuninExchangeにもアップしたいと思います。

nasobeme 08-11-01 (土) 16:47

ありがとうございます。
こっちの環境でも試してみます。

nasobeme 08-11-01 (土) 17:42

一個目のコメントで書いた、

FAN1 ROTOR1 | 7680.492 | RPM | ok | na | inf | na | na | 1000.400 | na

で、1000.400がucrと取られてますね。この辺の全対応は面倒な感じなので、設定値でいけるからいいかなと思います。

jfut 08-11-01 (土) 23:10

man ipmitoolの説明によると次の割り当てになるようなので1000.400はucrでOKだと思います。
FAN1 ROTOR1 | 7680.492 | RPM | ok | na(lnr) | inf(lcr) | na(lnc) | na(unc) | 1000.400(ucr) | na(unr)
ipmitool_sensor_ では、lnr(Lower Non-Recoverable)とunr(Upper Non-Recoverable)は無視して、間のCriticalとNon-Critical(=Warning扱い)の値だけ見ています。

nasobeme 08-11-02 (日) 13:19

ボードの方が正しい順番で値を出してないみたいですね。
1000.400がucrだとすると、currentの回転数が7680.492だからcriticalになっちゃいます。
直してもらう前の1.2のスクリプトでは、1000.400がlcrになってたから、誤って情報を出すボードへの対応(ucrとlcrをひっくり返す?)がうまくできてないのでは。

jfut 08-11-02 (日) 14:00

なるほどです。見落としていました。
lcr、lncにinfの時も値をひっくり返すようにしましたのでお試しください。
http://integ.jp/server/ipmitool_sensor/ipmitool_sensor_

HPのボードはFANの値が高い確率でひっくり返ってるっぽいですね。手元にあるHP ProLiant ML110 G5もFANの値だけひっくり返っています。

nasobeme 08-11-03 (月) 15:01

新しいスクリプトでconfig実行してみました。

/etc/munin/plugins/ipmitool_sensor_fan config

graph_title IPMITool Sensor: Fans
graph_vtitle RPM
graph_args –base 1000 -l 0
graph_category sensors
fan1.label FAN1 ROTOR1
fan1.warning 1050:
fan1.critical 1000:
– 以下略 –

今度は、うまくとれてるみたいですね。

jfut 08-11-03 (月) 20:35

動作確認ありがとうございます。上手くいってそうですのでMuninExchangeへもアップロードしておきました。

コメントフォーム
Remember personal info

トラックバック:1

このエントリーのトラックバックURL
http://jfut.integ.jp/2008/10/29/munin-ipmitool_sensor_-plugin/trackback/
Listed below are links to weblogs that reference
Munin ipmitool_sensor_ Plugin from ふたつの川うるおう日記
pingback from Munin ipmitool_sensor_ Plugin – ふたつの川うるおう日記 - TATSUYA.info Diary 11-05-12 (木) 10:29

[...] 引用元: Munin ipmitool_sensor_ Plugin – ふたつの川うるおう日記. [...]

Home > Admin | Linux | Server > Munin ipmitool_sensor_ Plugin

検索
フィード
メタ情報

Return to page top