Asial Blog

Recruit! Asialで一緒に働きませんか?

HPのサーバのハードウェア(RAIDの状態)を監視する

カテゴリ :
バックエンド(インフラ)
タグ :
Tech
Raid
監視
nagios
森川です。

今回はハードウェアRAIDの状態をSNMPを使用して監視する方法の紹介です。

当然といえば当然ですが、ハードウェアRAIDをしている場合に、ハードディスクが壊れたことを検知できないというのは、致命的です。

それを検知する方法の紹介です。サーバは日本HPのML115 G5、OSはCentOS 5を使用しています。ハードウェアRAIDはSmartアレイ E200を使用しています。(Debianの場合に同様の方法で検知する方法はよくわかりません。。。)

まずは、準備としてSNMP関連のパッケージを入れてしまいましょう。

  1. # yum install net-snmp net-snmp-utils

さっそくですが、SNMPでRAIDの状態監視を行うために、ハードウェア(Smartアレイ E200)のMIBを手に入れる必要があります。

hpacucliのインストール

MIBやコマンドラインからRAIDの状態を見るためのツール一式がHPからRPMとして提供されているので、それをインストールします。

まずはサポートページから製品名である「ML115」を入れて検索します。

検索結果のページから「HP ProLiant ML115 G5」をクリックして、次のページで「ドライバ&ダウンロード」をクリックします。次は「Red Hat Enterprise Linux 5 Server (x86-64)」をクリックしましょう。

そこまでいくと、ドライバ等の一覧のページが表示されるはずなので、そこで「HPアレイ コンフィギュレーション ユーティリティCLI for Linux」をダウンロードします。ダウンロードしたファイルは「hpacucli-8.10-2.noarch.rpm」のはずです。

まずは、これをサーバ上でインストールしましょう。

  1. # rpm -ivh hpacucli-8.10-2.noarch.rpm

パッケージが足りないよ、とエラーが表示される場合は、yumなどでインストールしておきましょう。よくわからないパッケージの場合は、

  1. # yum install compat-libstdc++-*

とすれば、大抵の場合は大丈夫だと思います。

次に、snmpの拡張等を行うパッケージをダウンロードするのですが、先ほどの一覧ページには表示されていません。本来はサポートされないと思うのですが、ML350など他のハードウェア用のRPMをインストールして使用してもおそらく問題ないと思うので、今回はその方法をとります。

hpasmのインストール

そこで、サポートページから今度は「ML350」を検索します。

「HP ProLiant ML350 G5 5120 1.86GHz SAS タワー型サーバー」→「ドライバ&ダウンロード」→「Red Hat Enterprise Linux 5 Server (x86-64)」と選択していけば、一覧ページに行き着くはずです。

「HPシステム ヘルス アプリケーションおよびInsightマネジメントエージェント for Red Hat Enterprise Linux 5(AMD64/EM64T)」を選択してダウンロードします。「hpasm-8.0.0-173.rhel5.x86_64.rpm」というファイルがダウンロードできるはずです。

こちらもhpacucliと同様にインストールします。

  1. # rpm -ivh hpasm-8.0.0-173.rhel5.x86_64.rpm

これでインストール自体は完了ですが、以下のコマンドで設定をする必要があります。

  1. # hpasm activate 

SNMPの設定だけすれば、それ以外の場合については基本的に気にしなくても大丈夫だと思います。

SNMPの設定がうまくいっていれば、 /etc/snmp/snmpd.conf の先頭部分に以下のように追加されていると思います。


  1. # Following entries were added by HP Insight Management Agents at
  2. #      Thu Feb  5 07:16:10 JST 2009
  3. dlmod cmaX /usr/lib64/libcmaX64.so
  4. rwcommunity private 127.0.0.1
  5. rocommunity public 127.0.0.1
  6. # ---------------------- END --------------------

あとは、snmpdを再起動して、RAIDの状態を取得するだけです。SmartアレイのRAIDの情報は以下のようにMIBを指定して取得できます。

$ snmpwalk -v1 -c public localhost 1.3.6.1.4.1.232.3.2.3.1.1.4
SNMPv2-SMI::enterprises.232.3.2.3.1.1.4.3.1 = INTEGER: 2

ここで、1.3.6.1.4.1.232.3.2.3.1.1.4 がRAIDの状態を表しているのですが、INTEGER: 2 の意味を知る必要が当然あります。ハードディスクの障害などでRAIDが壊れているときは、この値が変化します。

個々の値については、/opt/hp/hpsmh/data/htdocs/hmastor/daenums.js.ja や /opt/hp/hpsmh/data/htdocs/hmastor/daenums.js.en の cpqDaLogDrvStatus を見るとわかります。以下のようになっているはずです。

  1. enumerat['cpqDaLogDrvStatus']=new Array;
  2. enumerat['cpqDaLogDrvStatus'][1]='不明';
  3. enumerat['cpqDaLogDrvStatus'][2]='OK';
  4. enumerat['cpqDaLogDrvStatus'][3]='障害';
  5. enumerat['cpqDaLogDrvStatus'][4]='未設定';
  6. enumerat['cpqDaLogDrvStatus'][5]='暫定復旧中';
  7. enumerat['cpqDaLogDrvStatus'][6]='再構築待機中';
  8. enumerat['cpqDaLogDrvStatus'][7]='再構築中';
  9. enumerat['cpqDaLogDrvStatus'][8]='間違ったドライブ';
  10. enumerat['cpqDaLogDrvStatus'][9]='接続不良';
  11. enumerat['cpqDaLogDrvStatus'][10]='オーバーヒート';
  12. enumerat['cpqDaLogDrvStatus'][11]='シャットダウン';
  13. enumerat['cpqDaLogDrvStatus'][12]='拡張中';
  14. enumerat['cpqDaLogDrvStatus'][13]='利用不可';
  15. enumerat['cpqDaLogDrvStatus'][14]='拡張待機中';
  16. enumerat['cpqDaLogDrvStatus'][15]='マルチパス アクセス劣化';

これで、値が 2 の場合は OK でそれ以外の場合は問題がありそうだ、ということがわかります。

この値を外部からたとえば、nagios などで調べるプラグインを作ったりすると、RAIDの状態監視もきちんとできることができます。

また、外部からではなく内部から監視する場合、以下のコマンドでわかります。

  1. $ hpacucli  ctrl all show config
  2. Smart Array E200 in Slot 3    (sn: PA6C90P9SWR50O)
  3.    array A (SATA, Unused Space: 0 MB)
  4.       logicaldrive 1 (447.1 GB, RAID 5, OK)
  5.       physicaldrive 1I:0:1 (port 1I:box 0:bay 1, SATA, 160.0 GB, OK)
  6.       physicaldrive 1I:0:2 (port 1I:box 0:bay 2, SATA, 160.0 GB, OK)
  7.       physicaldrive 1I:0:3 (port 1I:box 0:bay 3, SATA, 160.0 GB, OK)
  8.       physicaldrive 1I:0:4 (port 1I:box 0:bay 4, SATA, 160.0 GB, OK)

この結果を見て、問題を発見することもできます。

ハードウェアRAIDの状態監視をしていない方は、ぜひチャレンジしてみてください。