日記ブログ、または雑多なメモ

ファイルサーバのRAIDZプールに異常があれば通知させる OpenSolaris編




快感チェンジ単行本発売
広告

 FreeBSD-8.0でやっていた自動メール通知をopensolarisでも同じようにやってみる。
まずsendmailをLAN内の既に建ててあるMTAメールサーバ経由で動く様に変更。

# cd /etc/mail/cf/cf
# nano -w sendmail.mc

dnl define(`confFALLBACK_SMARTHOST', `mailhost$?m.$m$.')dnl
の行を
define(`confFALLBACK_SMARTHOST', `LAN内の自分のメールサーバIP')
に変更して保存

# make
# svcadm restart sendmail
#sendmail 再起動

 sendmailの設定終わり。

 次に異常検知&メール送出スクリプトとcronの設定。
#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin
ZSTAT=`zpool status`
NUM=`echo "$ZSTAT" | grep DEGRADED | wc -l`
if [ $NUM != 0 ] ; then
 echo "Sending emergency mail"
 cat <<EOF > /tmp/mail.txt
From:fileserver
Cc:
To: 自分のメールアドレス
subject: Server disk damaged!

EOF
 echo "$ZSTAT" >> /tmp/mail.txt
 cat /tmp/mail.txt | sendmail -t
 rm /tmp/mail.txt
fi


 スクリプトは前と同じ。 適当に/etc/emcmail.shなどに保存して実行属性を付けておく。
crontabでcronに設定を追加する。
# EDITOR=nano crontab -e

0,20,40 * * * * /etc/emcmail.sh

20分毎にスクリプトを起動する設定を追加。 */20という書き方はエラーになって保存できないので決め打ち
保存して終了

# svcadm restart cron
#cron再起動

 以上で設定終わり。


 ちゃんとメールが飛ぶかテスト。
# zpool offline tank デバイス名

 などしてわざとプールをDEGRADEDにさせてメールを出させてみる。 チェックが済んだら、

# zpool online tank デバイス名
# zpool clear tank


 として戻しておく。

 早くどれかドライブ壊れないかなぁ〜とかいう不謹慎(?)なことを考えてしまうが、こういうことをやったときに限って5台揃って10年もったりするのが常ではある。
- C'sGallery Blogっぽく見えるシステム3.2 -
小武 (管理人) eta2@tim.hi-ho.ne.jp