HPサーバをmuninで監視する
HPのサーバを munin 経由で監視する方法について。
raid
HPのサーバには、Smart Array っていう raidシステムが付いてきて、こいつは システムからは /dev/cciss とかと見ているらしい。
例: /dev/cciss/c0d0p1
centos5.2ぐらいから centosにインストールCDにドライバが組み込まれたのでインストール自体は簡単です。
しかし、運用時に監視するにはひと手間かかります。
で、こいつを監視するためには、 「HPアレイ コンフィギュレーション ユーティリティCLI for Linux」というソフトで、linux上でのコマンド名 hpacucli っていうのが必要です。
このソフトをダウンロードするには、 HPのサポートページからサーバ名を入れれば良いいです。
http://www8.hp.com/jp/ja/support-drivers.html
今使っているサーバの製品名がわからない ;_; って人は、root で dmidecode | grep Product とかやると、BIOSからデータをぶっこぬいてきてくれるので、製品名がわかります。
dmidecode | grep Product Product Name: ProLiant DLXXX XX
HPのページから 「HPアレイ コンフィギュレーション ユーティリティCLI for Linux」 を選択すると、rpm が落とせるのでインストールします。
rpm -i hpacucli-8.75-12.0.noarch.rpm
これで hpacucli コマンドがインストールされた。(場所は /usr/sbin/hpacucli になる。)
試しに状態を見るコマンドを実行してみる。
hpacucli ctrl all show config Smart Array P410i in Slot 0 (Embedded) (sn: 00000000000000000) array A (SAS, Unused Space: 0 MB) logicaldrive 1 (300 GB, RAID 1+0, OK) physicaldrive 1I:1:1 (port 1I:box 1:bay 1, SAS, 100 GB, OK) physicaldrive 1I:1:2 (port 1I:box 1:bay 2, SAS, 100 GB, OK) physicaldrive 1I:1:3 (port 1I:box 1:bay 3, SAS, 100 GB, OK) physicaldrive 1I:1:4 (port 1I:box 1:bay 4, SAS, 100 GB, OK) physicaldrive 2I:1:5 (port 2I:box 1:bay 5, SAS, 100 GB, OK) physicaldrive 2I:1:6 (port 2I:box 1:bay 6, SAS, 100 GB, OK)
対応していない、場合はエラーになるのであきらめる。
hpacucli ctrl all show config Error: No controllers detected.
で、ちゃんと動いたものとして話を進める。
次にこいつを定期実行して監視してくれるようにmuninのプラグインを入れる。
mhaganderさんが作っているプラグインがあるので利用する。
https://github.com/mhagander/munin-plugins/blob/master/hpacu/hpacu
wget "https://raw.github.com/mhagander/munin-plugins/master/hpacu/hpacu" mv hpacu /usr/share/munin/plugins/hpacu chmod +x /usr/share/munin/plugins/hpacu ln -s /usr/share/munin/plugins/hpacu /etc/munin/plugins/hpacu
試しに実行してみる。(4秒ぐらいかかる・・・)
sudo perl /usr/share/munin/plugins/hpacu Can't locate Munin/Plugin.pm in @INC (@INC contains: /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/5.8.8 .) at /usr/share/munin/plugins/hpacu line 55. BEGIN failed--compilation aborted at /usr/share/munin/plugins/hpacu line 55.
エラーだよっ
\\ \\\\ ../´: : : : : : : : : : : : : : : : : `:\、 /// __ \\\\ \ \ /: : : : : : : : : : : : : : : : :ヽ: : : : : : : :`\ / ヽ / \ \\ /: : : : : : : : : : : : :: : : : ∧、:ヽ: : : : : : : : :\ / // ノ \ \ /: : : : : : : : : : : : : : //: / ヽ: : : : : : : : : : : : / ┌┴┐ \\\\ __/: : : : : : : : : : イ: / .i: / .ヽ: ヘ: : : : : : : : : ヽ / .| ── . . ─. | |  ̄`|: : : : : : :/ |:/ /.|:/ ヽ:| ヽ: :i: : : : : : :ヽ / / / ノ ─>: : : : : :`} | .|: : : : i: / レ´ |/ N\__:∧: : : : : : :i | ==: : : : : : /──: : : : :|:// ̄ ̄ヽ / ̄ヽ ∨ヽ: : : : : :卜 .├─ 三三三: : : / i: /__ }: /|v| /´ ̄`iヾ ./´ ̄ヽヽ ∧: : : N N: \ ==≡≡| .≡=─: :/ 〉/ 〉i: i ミ| { ||| | | ||| } |´ i: : : : :i: : : : : :Z =≡_|_ ヽヽ .. V N: N | |::i ヽ_ ノ ヽ_ノ ´ i: ノ∧ノ: : : : : :| | ─ .≡≡ \ |:. | 卜: 丿: : : : :ノN | ー / ヽi:─ し N\____ {:::i .N∨ |_ // |ヘ: ヽ / N }ヽ| \\ \ \\ .| / /// / wNヽ/ i \/ ノ \ \\ \\ ◯\ /// / / // / \\─_____ /\\ \ \\ \\\\ つ // / // / \\/ミミY彡/// \\ \ \ \ \ ∩∩ // // / 〉7NV∧ r〈 i \\ \ \\ .∨∨ ○○
'
vi /usr/share/munin/plugins/hpacu ------------------------------------------------ use strict; use warnings; #use Munin::Plugin; ------------------------------------------------
55行目ぐらいにある、 use Munin::Plugin; をコメントアウトしてあげてください。
なくても動きます。
エラーを修正すると、ちゃんと動きます。
sudo perl /usr/share/munin/plugins/hpacu hpacu_controllers_ok.value 1 hpacu_controllers_deg.value 0 hpacu_logicaldrives_ok.value 1 hpacu_logicaldrives_deg.value 0 hpacu_physicaldrives_ok.value 6 hpacu_physicaldrives_deg.value 0
さて、muninって実際は非特権ユーザで動くので、そいつでも試してみましょう。
sudo -u nobody perl /usr/share/munin/plugins/hpacu Can't exec "/usr/sbin/hpacucli": 許可がありません at /usr/share/munin/plugins/hpacu line 90.
動かない!!
このプラグインは特権で動いてくれるように変更します。
vi /etc/munin/plugin-conf.d/munin-node ------------末尾に追加 ----------------------- [hpacu] user root -----------------------------------------------
電源
電源やファンやその他いろいろの監視をするには hplog というコマンドが必要になる。
これは hpasm というパッケージに入っているらしい。
んで、 hpasm をインストールするには、 「HP System Health Application and Command Line Utilities for Red Hat Enterprise Linux 5 (AMD64/EM64T)」 が必要になる。
これも、同じくサポートページからrpmをダウンロード出来る。
ダウンロードしてきた rpm をインストールする。
rpm -i hp-health-8.7.0.22-11.rhel5.x86_64.rpm
これで、 hplog がインストールされた。(インストール場所は /sbin/hplog になる。)
電源の状態を見てみよう。 -p オプションをつけて実行すると、電源の状態が見れる。
hplog -p hplog: Cannot open /dev/cpqhealth/proc. Could not get temperature data. Make sure the health monitor is activated
これは、 /etc/init.d/hp-health が動いていないためらしい。
/etc/init.d/hp-health start #ついでに自動実行も入れておく。 chkconfig hp-health on
これで 次に実行したらちゃんとした情報が取得できる。
hplog -p ID TYPE LOCATION STATUS REDUNDANT 1 Standard Pwr. Supply Bay Normal Yes 2 Standard Pwr. Supply Bay Normal Yes
ちなみに未対応の機種の場合エラーになるので、あきらめる。
hplog -p No Power Supply data found. This system may not support powersupply health reporting.
さて、動いたものとして話を進める。
これをmuninで自動的に監視したい。
今回もmhaganderさんのプラグインを使う。
https://github.com/mhagander/munin-plugins/blob/master/hppower/hppower
wget "https://raw.github.com/mhagander/munin-plugins/master/hppower/hppower" mv hppower /usr/share/munin/plugins/hppower chmod +x /usr/share/munin/plugins/hppower ln -s /usr/share/munin/plugins/hppower /etc/munin/plugins/hppower
インストールしたので実行。
sudo perl /etc/munin/plugins/hppower
で、また Can't locate Munin/Plugin.pm とか言われるので、修正してあげてください
vi /usr/share/munin/plugins/hppower ------------------------------------------- use strict; use warnings; #use Munin::Plugin; -------------------------------------------
で、エラーを直すと、ちゃんと動きます。
sudo perl /etc/munin/plugins/hppower
ok.value 2 degraded.value 0
で、同じく非特権ユーザーだとエラーになるので・・・
sudo -u nobody perl /usr/share/munin/plugins/hppower hplog: You must be root to run this utility
muninにこいつも root で動かしてねとお願いします。
vi /etc/munin/plugin-conf.d/munin-node ------------末尾に追加 ----------------------- [hppower] user root -----------------------------------------------
FAN
これも電源の時入れた hplog を使います。
hplog が動作する環境をまず作ります。
ちなみに、hplog から FANの値をとるには、 hplog -f を実行します。
hplog -f ID TYPE LOCATION STATUS REDUNDANT FAN SPEED 1 Var. Speed System Board Normal Yes Low ( 23) 2 Var. Speed System Board Normal Yes Low ( 23) 3 Var. Speed System Board Normal Yes Low ( 23) 4 Var. Speed System Board Normal Yes Low ( 23)
で、毎回おなじみの mhagander さんのプラグイン入れます。
wget "https://raw.github.com/mhagander/munin-plugins/master/hpfan/hpfan" mv hpfan /usr/share/munin/plugins/hpfan chmod +x /usr/share/munin/plugins/hpfan ln -s /usr/share/munin/plugins/hpfan /etc/munin/plugins/hpfan
実行してみる
sudo perl /etc/munin/plugins/hpfan
で、また Can't locate Munin/Plugin.pm とか言われるので、修正してあげてください。
vi /usr/share/munin/plugins/hpfan ---------------------------------------------- use strict; use warnings; #use Munin::Plugin; ----------------------------------------------
で、同じくエラーを直すとちゃんと動きます。
ok.value 4 degraded.value 0
んで、こいつも hplog を利用している関係上、root ぢゃないと動きません。
muninに root で動くように指令を出します。
なんでファイル名を hp_* と定義できるようにしてくれなかったんだろう。 hp* だとダブルだろうJK。
vi /etc/munin/plugin-conf.d/munin-node ------------末尾に追加 ----------------------- [hpfan] user root -----------------------------------------------
温度
これも電源の時入れた hplog を使います。
これで最後だからな・・・
ちなみにコマンドラインから温度を見るには、 hplog -t を実行します。
hplog -t ID TYPE LOCATION STATUS CURRENT THRESHOLD 1 Basic Sensor Ambient Normal 71F/ 22C 107F/ 42C 2 Basic Sensor CPU (1) Normal 104F/ 40C 179F/ 82C 3 Basic Sensor CPU (2) Normal 104F/ 40C 179F/ 82C 4 Basic Sensor Memory Board Normal 91F/ 33C 188F/ 87C 5 Basic Sensor Memory Board Normal 100F/ 38C 172F/ 78C 6 Basic Sensor Memory Board Normal 93F/ 34C 188F/ 87C 7 Basic Sensor Memory Board Normal 96F/ 36C 172F/ 78C 8 Basic Sensor Memory Board Normal 98F/ 37C 188F/ 87C 9 Basic Sensor Memory Board Normal 96F/ 36C 172F/ 78C 10 Basic Sensor Memory Board Normal 98F/ 37C 188F/ 87C 11 Basic Sensor Memory Board Normal 98F/ 37C 172F/ 78C 12 Basic Sensor Pwr. Supply Bay Normal 100F/ 38C 138F/ 59C 13 Basic Sensor Pwr. Supply Bay Normal 123F/ 51C 163F/ 73C 14 Basic Sensor Memory Board Normal 86F/ 30C 161F/ 72C 15 Basic Sensor Processor Zone Normal 93F/ 34C 163F/ 73C 16 Basic Sensor Processor Zone Normal 98F/ 37C 147F/ 64C 17 Basic Sensor Memory Board Normal 89F/ 32C 145F/ 63C 18 Basic Sensor Processor Zone Normal 111F/ 44C 156F/ 69C 19 Basic Sensor System Board Normal 104F/ 40C 156F/ 69C 20 Basic Sensor System Board Normal 109F/ 43C 159F/ 71C 21 Basic Sensor System Board Normal 118F/ 48C 149F/ 65C 22 Basic Sensor System Board Normal 113F/ 45C 159F/ 71C 23 Basic Sensor System Board Normal 113F/ 45C 156F/ 69C 24 Basic Sensor System Board Normal 125F/ 52C 156F/ 69C 25 Basic Sensor System Board Normal 104F/ 40C 145F/ 63C 26 Basic Sensor System Board Normal 125F/ 52C 150F/ 66C 27 Basic Sensor SCSI Backplane Normal 62F/ 17C 140F/ 60C 28 Basic Sensor System Board Normal 163F/ 73C 230F/110C
で、これを munin で監視するために、 mhagander さんのプラグイン入れます。
wget "https://raw.github.com/mhagander/munin-plugins/master/hptemp/hptemp" mv hptemp /usr/share/munin/plugins/hptemp chmod +x /usr/share/munin/plugins/hptemp ln -s /usr/share/munin/plugins/hptemp /etc/munin/plugins/hptemp
実行してみる
sudo perl /etc/munin/plugins/hptemp
で、また Can't locate Munin/Plugin.pm とか言われるので、修正してあげてください
vi /usr/share/munin/plugins/hptemp ----------------------------------------------- use strict; use warnings; #use Munin::Plugin; -----------------------------------------------
実行してみましょう。
sudo perl /etc/munin/plugins/hptemp
なんか別のエラーが出る時があるよ。
Could not parse line 12 Basic Sensor Pwr. Supply Bay Normal 98F/ 37C 138F/ 59C
もし、Could not parse lineっていうのがあったら、 正規表現付近を拡張してあげてください。
vi /etc/munin/plugins/hptemp ------------------------------------------------------------ if (/^\s*(\d+)\s*Basic Sensor\s+(CPU \(\d+\)|Processor Zone|I\/O Zone)\s+(\S+)\s+\d+F\/\s*(\d+)C\s+\d+F\/\s*(\d+)C/) { ↓ ↓こんな風に直したら動いた。そのうちパッチ投げよう。 ↓ next if /---F\/---C/; if (/^\s*(\d+)\s*Basic Sensor\s+(CPU \(\d+\)|Processor Zone|I\/O Zone|Ambient|Memory Board|Pwr\. Supply Bay|System Board|SCSI Backplane)\s+(\S+)\s+\d+F\/\s*(\d+)C\s+\d+F\/\s*(\d+)C/) { ------------------------------------------------------------
で、いろいろ修正して、なんか数字がずらずらでてくるようになったら成功です。
sudo perl /etc/munin/plugins/hptemp
s1.value 22 s2.value 40 s3.value 40 s4.value 33 s5.value 38 s6.value 34 s7.value 36 s8.value 37 s9.value 36 s10.value 37 s11.value 37 s12.value 37 s13.value 51 s14.value 30 s15.value 34 s16.value 37 s17.value 32 s18.value 44 s19.value 40 s20.value 43 s21.value 48 s22.value 45 s23.value 45 s24.value 52 s25.value 40 s26.value 52 s27.value 17 s28.value 73 degraded.value 0
んで、こいつも hplog を利用している関係上、root ぢゃないと動きません。
muninに root で動くように指令を出します。
なんでファイル名を hp_* と定義できるようにしてくれなかったんだろう。 hp* だとダブルだろうJK。
vi /etc/munin/plugin-conf.d/munin-node ------------末尾に追加 ----------------------- [hptemp] user root -----------------------------------------------
munin-node 再起動
やっとできました!
できたので、munin-node を再起動します。
/etc/init.d/munin-node restart
これでちゃんとグラフが書かれれば成功です。
監視している値が見たい人は、コマンドの後ろに config とかをつけてみるとわかります。
現在の数字 sudo perl /etc/munin/plugins/hptemp グラフの種類とか、何がどうなったら warning で critical なのか設定を出す sudo perl /etc/munin/plugins/hptemp config
それと、HPサーバ関係の監視は、munin経由で監視するものすべてに root 特権が必要だったので、結局 以下のようになりました。
vi /etc/munin/plugin-conf.d/munin-node ------------------------------------------------- [hpacu] user root [hppower] user root [hpfan] user root [hptemp] user root -------------------------------------------------
参考
HPのサーバのハードウェア(RAIDの状態)を監視する
http://blog.asial.co.jp/526
Monitoring disk/RAID hardware in CentOS 5 on HP DL360 servers
http://blog.mattbrock.co.uk/2010/01/25/monitoring-diskraid-hardware-in-centos-5-on-hp-dl360-servers/
,, <: : : : : : : : : : : : : : : : `ヽ /ノ: : : : : : : : : : : : : : : : : : : : : : : : ヽ ∠: : : : : : : : : : : : :/: : : : : : : : : : : : : : :ヽ . /: : : : : : : : : : : : /|: : ∧ : : ト、 : : : : : : : ハ ,′: : : : : : : : : : :/ ノ: / ∨:i} ∨ :|: : : : : :ハ {il|:: :: : : : :厶斗七}`/ V<⌒ヽ: : : : : : } }il|: : : : : : :/ :厶=ミ/ VムミVハ : : : : :i} |il|: : : : : :/〃〃 `ヽ 〃 `ヽヽ V:i: : : リ . |: : :〃|:: :| { {i{ i} {i i} } V: : ル' . |: : {ヘ |:: :i 从 ノ 乂 从ノ !: : / i|: 人 |: :i| ( つ`¨´ `てつ {:ル' i|: : : ヽ| : | ヽヽヽヽヽヽヽヽヽ {:iノ i : : : : ∧ ト、 }i:| | : : : : 从j : > rー ― ァ ,. イ从 | : : : : : : : : : / ∨≧ ー≦`く: : : : :レ': :! |: : : : : : : :〃| V >< ,′`ヽ : : : : | |: : : : : : 〃 | V乂::乂,′ |ハ: : : :! |: : : : : / └― ∨:::::∨―‐┘ ∨: i |: : : : / < ∨::∨ > V:j |: : : :ハ \ ∨ / V | : : :た }