Centos7下监控磁盘使用量超过阈值自动发送报警邮件
前言
前段时间公司有台Centos7的服务器因为磁盘满了,导致服务不可以,今天有空特来总结一下,如何监控centos系统磁盘,设置阈值,定时检测,自动发送邮件报警。
一、下载安装sendEmail工具
cd /opt #安装到opt目录下
wget http://c aspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz #下载文件
tar -zxvf sendEmail-v1.56.tar.gz #解压到opt目录下
chmod 777 /opt/sendEmail-v1.56/sendEmail #赋予执行权限
-f 表示from,发件人地址
-t 表示to,收件人地址
-s mail服务器域名
-u 主题
-xu 用户名(@之前的)
-xp 用户密码
-m 纯文本信息
-o message-file=/root/… 发送文件中的内容
-a 发送附件 (-m,-o,-a可以同时使用)
二、编写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='xxxx@xxx.com.cn'
emailpasswd='passwd'
emailsmtp='smtp.exmail.qq.com'
sendto='88888888@qq.com'
title='(101.8)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
文件拷贝到/opt目录下
赋予执行权限
chmod 755 /opt/disk_check.sh
若提示格式错误,可使用dos2unix工具进行格式化
yum install -y dos2unix
dos2unix disk_check.sh
三、运行disk_check.sh
sh /opt/disk_check.sh
四、加入定时任务
crontab -e
*/20 * * * * /opt/disk_check.sh #每20分钟执行一次