Bashワンラインの備忘録

ディスク容量の監視スクリプト

どのサーバでも必須な容量監視。Zabbixなどの統合監視を使っていれば必要ないかもしれませんがそこまで大規模にサーバ管理をしていない人向け。 どのサーバでも動くようBashで作成しました。mailコマンド使っていますので、mailコマンドが使える環境でどうぞ。 エラー処理とかは特にしていません。

使い方

ディスク容量が一つでも[閾値]以上でホスト名と「df -h」の標準出力をメールで通知します。

disk_check.sh [Fromアドレス] [Toアドレス] [閾値]
disk_check.sh from@domain.com to@domain.com 80

バッチ処理

crontabに以下のように記載します。 個人運用のサーバなら24時間以内に対応するとして1日2回通知すればいいかと思います。

vi /etc/crontab
# Disk Check Script
0 8,20 * * * /usr/local/tool/disk_check.sh from@domain.com to@domain.com 80

スクリプト

#!bash

### Usage ###
# disk_check.sh FROM_ADDRESS TO_ADDRESS DISK_LIMIT

### Setting ###
# Mail Address
FROM=$1
TO=$2
SUBJECT="【$(hostname)】DiskCheckAlert"

# Limit Over
LIMIT=$3

# Mail Header and Body
BODY="
---HOSTNAME---
$(hostname)

---DISK LIST---
$(df -h)

---LIMIT---
${LIMIT}% Over
"
### Setting ###

### Script ###
while read used
do
[ ${used} -ge ${LIMIT} ] && echo "${BODY}" | mail -s ${SUBJECT} -r ${FROM} ${TO} && exit 0
done < <(df | awk 'NR>1 {sub("%","");print$5}')
### Script ###