
Munin ipmitool_sensor_ Plugin
Muninでマシンのファン回転数、温度、電圧をグラフ化するにはsensor_というPluginを使うのが楽です。ただし、このPluginはlm_sensorsの値を見るので、比較的新しい対応していないマザーボードだと値を取ることができません。そんな対応していないマザーボードでも、最近のサーバ用マシンであればIPMIが入っているので、IPMI経由で取得した値を使ってファン回転数、温度、電圧をグラフ化すれば良いです。
そんなわけで、Munin用のIPMIを使ったPluginを調べたところ次の3つありました。
- ipmi_sensor_ (Ruby)
- ipmi_ (Python)
- ipmisensors (バイナリ?)
1個目が良い感じなのですが、自分の環境だとそのままでは動かなかったのと、HP ProLiant ML110 G5(Lights-Out 100)のセンサーのアラート出す閾値の出力がどうも逆さになってるっぽい箇所があり、しょうがないので別のPluginを作りました。
- ipmitool_sensor_ (Perl)
この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が使えるマシンを使っている方は是非お試しください。
- [2009-02-08追記] 2009-02-08 (Sun) – Munin Plugin: ipmitool_sensor_ 1.4
コメント:10
-
nasobeme 2008-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 2008-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 2008-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 2008-11-01 (土) 16:47
-
ありがとうございます。
こっちの環境でも試してみます。 -
nasobeme 2008-11-01 (土) 17:42
-
一個目のコメントで書いた、
FAN1 ROTOR1 | 7680.492 | RPM | ok | na | inf | na | na | 1000.400 | na
で、1000.400がucrと取られてますね。この辺の全対応は面倒な感じなので、設定値でいけるからいいかなと思います。
-
jfut 2008-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 2008-11-02 (日) 13:19
-
ボードの方が正しい順番で値を出してないみたいですね。
1000.400がucrだとすると、currentの回転数が7680.492だからcriticalになっちゃいます。
直してもらう前の1.2のスクリプトでは、1000.400がlcrになってたから、誤って情報を出すボードへの対応(ucrとlcrをひっくり返す?)がうまくできてないのでは。 -
jfut 2008-11-02 (日) 14:00
-
なるほどです。見落としていました。
lcr、lncにinfの時も値をひっくり返すようにしましたのでお試しください。
http://integ.jp/server/ipmitool_sensor/ipmitool_sensor_HPのボードはFANの値が高い確率でひっくり返ってるっぽいですね。手元にあるHP ProLiant ML110 G5もFANの値だけひっくり返っています。
-
nasobeme 2008-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 2008-11-03 (月) 20:35
-
動作確認ありがとうございます。上手くいってそうですのでMuninExchangeへもアップロードしておきました。
トラックバック:0
- このエントリーのトラックバック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 ふたつの川うるおう日記






