さくらインターネット専用サーバのRAID監視
 2012.06.21

さくらインターネットの専用サーバでRAIDの状態を監視するシェルスクリプトの例を紹介します。 専用サーバのモデル・世代によって採用されているRAIDコントローラが異なります。RAIDコントローラ毎に異なるスクリプトを用意しています。 * 2012年6月現在提供されている「エクスプレスシリーズ」の場合 このサーバはHPの ProLiant DL170e G6 というハードウェアでRAIDコントローラには Smart Array P410 が使用されています。Smarty Array RAIDコントローラの情報取得・設定は hpacucli コマンドで可能です。以下のようなシェルスクリプトを使用しています。 [sourcecode language=”bash”] #!/bin/sh PATH=/bin:/usr/sbin:/usr/bin export PATH ALERTTO=admin@example.com cmd=$(basename $0) function getstatus () { hpacucli ctrl slot=1 show config | \ grep "logicaldrive" | \ awk -F "," ‘{print $3}’ | tr -d " )" } raidstatus=$(getstatus) logger -t "[$cmd]" "RAID $raidstatus" if [ "X$raidstatus" != "XOK" ]; then hpacucli ctrl slot=1 show config | \ egrep "[logical|physical]drive" | \ sed ‘s/^[ ]*//’ | logger -t "[$cmd]" host=$(hostname) mail -s "RAID Alert : $host" $ALERTTO << EOF RAID Status is *NOT* Good. hpacucli commands reports : ==================================== `hpacucli ctrl slot=1 show config` EOF fi exit 0 [/sourcecode] * さくら専用サーバの第2世代でアドバンスドプラン 富士通サーバの場合 このプランでは富士通の「PRIMERGY RX100 S6」が採用されています。RAIDコントローラは dmesg の出力では「 LSI       Model: MegaRAID SAS RMB」と出ました。情報取得・設定は /opt/MegaRAID/MegaCli/MegaCli というコマンドで可能です。以下のようなスクリプトを使用しています。 [sourcecode language=”bash”] #!/bin/sh PATH=/bin:/usr/bin:/opt/MegaRAID/MegaCli/ export PATH ALERTTO=admin@example.com raidstatus=$(MegaCli -LDInfo -Lall -aALL |grep ^State|awk -F : ‘{print $2}’|tr -d " " | tr ‘[:lower:]’ ‘[:upper:]’) logger -t "[MegaCli]" "RAID $raidstatus" if [ X$raidstatus != "XOPTIMAL" ] ; then host=$(hostname) mail -s "RAID Alert : $host" $ALERTTO <RAID Status is *NOT* Good. MegaCLI commands reports: $(MegaCli -LDInfo -Lall -aALL) EOF fi exit 0 [/sourcecode] * さくら専用サーバの第2世代でRAIDプランの場合 このプランはさくらインターネット独自ハードウェアのサーバです。RAIDコントローラには 3ware 9650SE-2LP が使用されています。このRAIDコントローラは /usr/local/bin/tw_cli により情報取得が可能です。以下のスクリプトを使用しています。 [sourcecode language=”bash”] #!/bin/sh ALERTTO=admin@example.com CNUM=c0 PATH=/usr/local/bin:/bin:/usr/bin export PATH raidstatus=`tw_cli info $CNUM unitstatus |grep "RAID-1" |awk ‘{print $3}’| tr ‘[:lower:]’ ‘[:upper:]’` logger -t "[tw_cli]" "RAID $raidstatus" if [ X$raidstatus = "XDEGRADED" -o X$raidstatus = "XINOPERABLE" ]; then tw_cli info $CNUM |grep -v ^- |grep -v ^$ | logger -t "[tw_cli]" host=`hostname` mail -s "RAID Alert : $host" $ALERTTO << EOF RAID Status is *NOT* Good. tw_cli commands reports : ==================================== `tw_cli info $CNUM` EOF fi exit 0 [/sourcecode] * 上記のスクリプトを /etc/cron.hourly/ に実行属性を付けて放り込んでおけば1時間ごとにRAIDの状態を確認して syslog 経由で /var/log/messages に記録してくれます。障害が発生した場合はログに記録すると共に ALERTTO 宛てにメールを送信します。 警告メールが届いたらさくらのサポートに連絡してディスク交換を手配します。 http://sakura.cb-faq.com/faq/public/app/servlet/qadoc?QID=000494
カテゴリー:サーバ管理