ZFSの異常検知
今回、紹介するスクリプトは以下のような機能を持っています。
スクリプトの概要
- zpool statusコマンドの結果から異状を判断する
- 異常検知した場合、コマンドの出力結果をメール本文に乗せて送信する
- メール送信は、sendmailコマンドを使用します
- sendmailコマンドの設定は調べてください
- 定期監視する場合は、cronで定期実行すれば良いです
スクリプトの内容
#!/bin/bash
if [ "`env LC_ALL=C zpool status -x`" != 'all pools are healthy' ]
then
filename=$(date '+%F')zfs_errors_text_ksofda.txt # 適当な一時ファイル名を指定
srtFrom="From: aaa@xxx.xxx" # 送信元のメールアドレスを設定
srtTo="To: bbb@yyy.yyy" # 送信先のメールアドレスを設定
srtSubject="Subject: Error ZFS is not healthy!!"
srtText=`env LC_ALL=C zpool status`
touch /tmp/$filename
echo $srtFrom >> /tmp/$filename
echo $srtTo >> /tmp/$filename
echo $srtSubject >> /tmp/$filename
echo >> /tmp/$filename
IFS_BACKUP=$IFS
IFS='
'
i=0
for L in $srtText
do
i=`expr $i + 1 `
echo -e $L >> /tmp/$filename
done
IFS=$IFS_BACKUP
/usr/sbin/sendmail -t < /tmp/$filename
rm /tmp/$filename
fi