HPサーバの死活監視とiLO経由での自動再起動(DL360)

スポンサーリンク

ちょっと古いHPのサーバ「ProLiant DL360 G4」をまだ動かしていますが、忘れた頃にハングアップしている事があります。

HPのサーバにはLinux向けのツールも配布されており、G4だとhpasmをインストールするとASR(Automatic Server Recovery)という、無応答で再起動してくれる便利ツールがありますが、このサーバだけ何故か動作してくれません。

正常にASRが動作しているサーバで自動再起動がかかると、root宛に以下のメッセージが届きます。

Trap-ID=6025

An 'ASR Recover Complete' trap signifies that the system has

been shutdown by the ASR feature and has just become operational

again.

もう少ししたら止める予定のサーバなので、とりあえずcronで死活チェックしてiLO経由で再起動してしまいます。

HPサーバのiLO経由で再起動という内容ですが、大手メーカーのサーバは大抵の場合HPのiLOのように電源さえ来ていれば、ネットワーク経由で再起動などが行える機能が備わっているので、コマンド部分などを少し修正すれば同じように再起動できます。

cronで実行するシェルスクリプト

#!/bin/sh

# チェック対象のURL
URL="http://sakue.com/"

# SSH接続先の情報(iLO)
SSH_USER="sakue"
SSH_PASS="1234567"
SSH_HOST="192.168.2.201"

# httpステータスコードを取得
status=`/usr/bin/curl -LI $URL -o /dev/null -w '%{http_code}' -s`

# ステータスコードが200なら何もせず終了
if [ "$status" -eq '200' ]; then
  # cronにログ出力(OK)
  echo `LANG=C date "+%b %-d %H:%M:%S"` $SSH_USER ServerCheck $SSH_HOST is Status 200 OK >> /var/log/cron 2>&1
  exit 0
else
  # cronにログ出力(NG)
  echo `LANG=C date "+%b %-d %H:%M:%S"` $SSH_USER ServerCheck $SSH_HOST check Faild - StatusCode:${status} >> /var/log/cron 2>&1
fi

# expect開始
expect -c "

# タイムアウトを長めに
set timeout 7200

# iLOへssh接続
spawn ssh -o HostKeyAlgorithms=ssh-rsa,ssh-dss -o KexAlgorithms=diffie-hellman-group1-sha1 -o Ciphers=aes128-cbc,3des-cbc -o MACs=hmac-md5,hmac-sha1 $SSH_USER@$SSH_HOST

# 条件1
expect {

  # この文字が出現したら
  -re \".*\[pP\]assword:.*\" {

    # これを自動入力
    send \"$SSH_PASS\r\"

    # 応答が遅いので少し待つ
    sleep 6;

    # 再起動(iLOコマンド)
    send \"reset /system1 soft\r\"
  }
}

# 条件2
expect {
  # 対象の文字が出現したら抜ける
  \"COMPLETED\" {
    exit 1
  }
  eof { exit 0 }
}
"

以下のssh接続開始部分ではアルゴリズムを指定していますが、古いサーバでは指定しないと接続できないためです。

新しいサーバであれば指定しなくても接続できます。

# iLOへssh接続
spawn ssh -o HostKeyAlgorithms=ssh-rsa,ssh-dss -o KexAlgorithms=diffie-hellman-group1-sha1 -o Ciphers=aes128-cbc,3des-cbc -o MACs=hmac-md5,hmac-sha1 $SSH_USER@$SSH_HOST

例えば「DL360 G4」の場合だと、シンプルに「ssh 192.168.2.201」とすると以下のように即座に切断されてしまいます。

[root@sakue ~]# ssh 192.168.2.201
Received disconnect from 192.168.2.201 port 22:2: Client Disconnect

Disconnected from 192.168.2.201 port 22
古いHPサーバのiLOへのSSH接続トラブル(ProLiant DL360 G4)
古いHPサーバのiLOへのssh接続年代物のHPサーバ「ProLiant DL360 G4」がまだ動いていますが、HPのサーバにはiLOというコンセントさえ接続されていればOSが起動していなくても、リモートから起動したり色々できる機能が...

/etc/crontabへ毎時0分に実行するよう記載しておきました。

間隔はお好みで。

0 */1 * * * root /etc/cron.sakue.scripts/hp-serverchk.sh

/var/log/cronに下のようなチェックログが残ります。

Feb 4 09:00:01 sakue ServerCheck 192.168.2.201 is Status 200 OK

ステータスコードが200以外なら再起動しますので、動作確認したい場合は以下を存在しないURLに書き換えて実行します(404が返ってくるURLなど)

# チェック対象のURL
URL="http://sakue.com/"

 

おしまいです。

コメント

タイトルとURLをコピーしました