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
   | : : :た                   }