您的位置:首页 > 运维架构 > Shell

采用Shell及AWK脚本实现磁盘使用空间监控

2011-11-23 07:56 886 查看
背景:

在应用程序中,经常需要配置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监控脚本的路径
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐