ディスクの使用量を監視する簡易スクリプトです。
ディスク使用量の監視
とあるシステム(OSはCentOS7.1)でディスク使用量を監視するスクリプトを作成したので、そのときのメモです。
cactiやzabbixをインストールするのは面倒くさいけど、ディスク使用状況は監視したいというときに使っています。
たいしたスクリプトではないのですが、誰かの参考になるかもしれないのでとりあえず公開してみます。
パーティション情報
監視を行っているシステムのパーティションの構成は、以下の通り非常にシンプルな構成です。
# df -h ファイルシス サイズ 使用 残り 使用% マウント位置 /dev/mapper/centos-root 46G 2.3G 44G 5% / devtmpfs 1.9G 0 1.9G 0% /dev tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 1.9G 33M 1.9G 2% /run tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/sda1 497M 188M 310M 38% /boot
ディスク監視スクリプト
今回は、rootのホームディレクトリ上に「diskcheck.sh」という名前でスクリプトを作成していますが、特にファイル名や作成場所に決まりはありませんので、好きな場所に好きな名前で作成してもらってかまいません。
# vi /root/diskcheck.sh
※今回はrootユーザで作成していますが、特にrootユーザである必要はありません。
スクリプト設定項目
スクリプトで設定が必要な箇所は3箇所です。
- partition_x 監視するパーティション
- shikii_x ディスク使用量の閾値を%で設定
- mailaddress 通知先メールアドレス
スクリプト内容
このスクリプトでは、「/」のパーティションを監視し、ディスク使用率が80%を超えるとメールにて通知をする設定となっています。
#!/bin/sh # 監視パーティション partition_1=/dev/mapper/centos-root # ディスク使用率閾値(%) shikii_1=80 # 通知先メールアドレス mailaddress="tamohiko@server-memo.net" # メール送信用データ srvname=`hostname` subject="$srvname Disk space alert" maildata=`hostname && date && df -h` # ディスクチェック処理 used_1=` df -h | grep $partition_1 | awk '{ print $5 }' | sed -e '$s/.$//' ` # 閾値チェック if [ $used_1 -lt $shikii_1 ] then echo ok else mail -s "$subject" $mailaddress << MAILDATA $maildata MAILDATA fi
複数のパーティションを監視したい場合
監視するパーティションが複数ある場合はその分だけ、下記の部分を追加してスクリプトを作成することで、複数パーティションの監視ができます。
- 監視パーティション変数 (partition_X)
- ディスク使用率閾値変数 (shikii_x)
- ディスクチェック処理処理
- 閾値チェック処理
#!/bin/sh # 監視パーティション partition_1=/dev/mapper/centos-root partition_2=/dev/sda1 # ディスク使用率閾値(%) shikii_1=80 shikii_2=60 # 通知先メールアドレス mailaddress="tamohiko@server-memo.net" # メール送信用データ srvname=`hostname` subject="$srvname Disk space alert" maildata=`hostname && date && df -h` #ディスクチェック処理 used_1=` df -h | grep $partition_1 | awk '{ print $5 }' | sed -e '$s/.$//' ` used_2=` df -h | grep $partition_2 | awk '{ print $5 }' | sed -e '$s/.$//' ` #閾値チェック1 if [ $used_1 -lt $shikii_1 ] then echo ok else mail -s "$subject" $mailaddress << MAILDATA $maildata MAILDATA fi #閾値チェック2 if [ $used_2 -lt $shikii_2 ] then echo ok else mail -s "$subject" $mailaddress << MAILDATA $maildata MAILDATA fi
実行権限設定
作成したスクリプトには実行権限を設定する必要がありますので、忘れずに作業を行ってください。
# chmod 755 /root/diskcheck.sh
実行テスト
スクリプトの作成が完了しましたら、実行テストを行います。
ディスク使用率閾値の値を下げて、チェックに引っかかるようにすることも忘れないようにしてください。
テスト実施結果
今回のテストでは「shikii_1」の値を「1」に設定し、チェックに引っかかるようにしています。
テストを実行する際に「-x」オプションを使用することで、実行内容が表示されるのでうまく動作しない場合についての問題切り分けの手助けとなります。
# sh -x /root/diskcheck.sh + partition_1=/dev/mapper/centos-root + shikii_1=1 + mailaddress=tamohiko@server-memo.net ++ hostname + srvname=local.server-memo.net + subject='local.server-memo.net Disk space alert' ++ hostname ++ date ++ df -h + maildata='local.server-memo.net 2015年 9月 1日 火曜日 23:10:24 JST ファイルシス サイズ 使用 残り 使用% マウント位置 /dev/mapper/centos-root 46G 2.3G 44G 5% / devtmpfs 1.9G 0 1.9G 0% /dev tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 1.9G 41M 1.9G 3% /run tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/sda1 497M 188M 310M 38% /boot' ++ df -h ++ grep /dev/mapper/centos-root ++ awk '{ print $5 }' ++ sed -e '$s/.$//' + used_1=5 + '[' 5 -lt 1 ']' + mail -s 'local.server-memo.net Disk space alert' tamohiko@server-memo.net
cronへ登録
スクリプトの試験を行い、意図したとおりに動作することが確認できましたら、今度は
「crontab」へ登録し、定期的にディスクのチェックを行うようにします。
今回は毎時05分にディスク使用量をチェックするように設定してみました。
crontab設定
# crontab -e
設定内容
05 * * * * /root/disk-space-check.sh
これで、ディスク使用量の監視が出来るようになりました:-)
※crontabの詳しい設定方法は、このページにまとめてあります。
コメント