最近Linux服务器磁盘使用量经常到100%,直到影响到正常服务出现故障才会去注意,做不到防患于未然,今天在网上搜集了资料,加上自己修改,写了一个shell脚本用于实时监控磁盘使用量并在超过阀值后自动发送报警邮件。
 
脚本简单说明:用df命令查看磁盘使用量信息,超过脚本设置的阀值(critical=90)90%,就会自动用sendEmail命令发送报警邮件(邮件smtp、email等需自行修改成真实存在的)。
 
1、首先下载监测脚本(点击下载)或直接复制下面脚本代码存为disk_check.sh文件

#!/bin/bash
partition_list=(`df -h | awk 'NF>3&&NR>1{sub(/%/,"",$(NF-1));print $NF,$(NF-1)}'`)
critical=90
notification_email()
{
emailuser='user@domain.com'
emailpasswd='password'
emailsmtp='smtp.domain.com'
sendto='user1@domain.com'
title='Disk Space Alarm'
/opt/sendEmail-v1.56/sendEmail -f $emailuser -t $sendto -s $emailsmtp -u $title -xu $emailuser -xp $emailpasswd
}
crit_info=""
for (( i=0;i<${#partition_list[@]};i+=2 ))
do
if [ "${partition_list[((i+1))]}" -lt "$critical" ];then
echo "OK! ${partition_list[i]} used ${partition_list[((i+1))]}%"
else
if [ "${partition_list[((i+1))]}" -gt "$critical" ];then
crit_info=$crit_info"Warning!!! ${partition_list[i]} used ${partition_list[((i+1))]}%\n"
fi
fi
done
if [ "$crit_info" != "" ];then
echo -e $crit_info | notification_email
fi

2、上传disk_check.sh文件到linux服务器的/opt目录下
 
3、给disk_check.sh添加可执行权限

[root@localhost /]# chmod 755 /opt/disk_check.sh

4、下载sendEmail邮件程序命令(点击下载),上传到服务器的/opt目录下
 
5、解压/opt/sendEmail-v1.56.tar.gz

[root@localhost /]# tar xvf /opt/sendEmail-v1.56.tar.gz

6、测试脚本/报警邮件是否运行正常,可以看到,有2个分区是正常的,显示OK!,没有超过设置的阀值,有一个分区使用量超过阀值了,并自动成功发送了报警邮件,再去我设置的收件邮箱,可以看到已经收到了这封报警邮件:

[root@localhost /]# sh /opt/disk_check.sh
OK! /dev/shm used 1%
OK! /boot used 12%
Reading message body from STDIN because the '-m' option was not used.
If you are manually typing in a message:
- First line must be received within 60 seconds.
- End manual input with a CTRL-D on its own line.
Jul 01 17:32:44 localhost sendEmail[5585]: Message input complete.
Jul 01 17:32:44 localhost sendEmail[5585]: Email was sent successfully!


7、最后,可以设置一个cron计划任务,让该脚本每隔1小时运行一次

[root@webmail /]# crontab -e

在cron里添加下面一行即可

*/60 * * * * /opt/disk_check.sh

http://www.heminjie.com/system/linux/1923.html

最新文章

  1. Git : SSH 协议服务器
  2. linux 安装mysql两种方式
  3. GCD中的dispatch_group函数的详解
  4. SqlServer链接MySql操作步骤
  5. lightoj1030
  6. 在console中输出图片
  7. 移动平台前端开发之WebApp代码技巧
  8. html5--等待加载效果
  9. hdu 3535 AreYouBusy
  10. [.NET源码学习]实例化Font,遭遇字体不存在的情况。
  11. -_-#【Backbone】View
  12. js技巧之this,call,apply
  13. 关于laravel5.2仓库的建立,以及简单调用
  14. H5学习之旅-H5列表(8)
  15. Mahout系列之----距离度量
  16. 认识Zygote
  17. 重温《STL源码剖析》笔记 第四章
  18. mysql基础常用命令
  19. shell echo 打印换行
  20. node(6)angular介绍

热门文章

  1. ubuntu下安装kde Plasma
  2. oracle DBA坚持写博客的7大理由
  3. 简单dp的状态转移方程集合
  4. 在getView方法产生给用户item的视图以及数据
  5. CodeForces 300C 最短路
  6. WPF/MVVM 快速开始指南(译)(转)
  7. MAXIMO系统 java webservice 中PDA移动应用系统开发
  8. bzoj1019 [SHOI2008]汉诺塔
  9. HDU 2222(AC自动机模板题)
  10. redis AND memcache