在应用程序中,经常需要配置FTP空间存放数据,同样数据库也需要大量的磁盘存放业务数据。如果FTP和数据库磁盘空间不够,却没有及时通知相关人员进行处理,就会导致程序错误或者数据库无法存储数据。这类故障是及其严重的。
Shell脚本(disk_space_warn.sh):
#!/bin/bash
#
# 监控磁盘使用空间是否超限
# chm, 461810517@qq.com
# 2011/11/22
#
# config.txt配置需要监控磁盘路径,格式为:磁盘路径|使用限制|超限告警信息
# 每次告警信息会记录在文件warn.log中,这里可以修改逻辑,以短信的方式发送告警
#
username=$(whoami)
deploy_dir="/home/${username}/disk_space_warn"
cat ${deploy_dir}/config.txt | while read tmp
do
disk_path=$(echo ${tmp} | awk -F\| '{print $1}')
limit=$(echo ${tmp} | awk -F\| '{print $2}')
warn_info=$(echo ${tmp} | awk -F\| '{print $3}')
is_warn=$(df -h ${disk_dir} | awk -v limit="${limit}" -f disk_space_warn.awk)
if [ ${is_warn) -ne 0 ]; then
echo "${warn_info} ${limit}" >> ${deploy_dir}/warn.log
fi
done
AWK脚本(disk_space_warn.awk):
# 仅取第二行进行分析, 因AWK中比较方便进行小数、整数、字符串比较,
# 而bash中可以方便地进行整形比较,所以建议在AWK中进行此类操作
NR==2 {
tmp = substr($5, 0, length($5)-1);
if (tmp > limit) {
printf "1";
} else {
printf "0";
}
}
采用crontab配置定时任务:
crontab -e
末尾输入如下内容:
*/10 * * * * sh [deploy_dir]/disk_space_warn.sh
注:
1. 查看crontab定时任务配置命令:crontab -l
2. [deploy_dir]为实际部署disk_space_warn.sh监控脚本的路径