Linux监控磁盘使用情况,当使用率达到90%,自动发邮件

#*************************************************************************
#  FileName     :               disk_capacity_alarm.sh 
#*************************************************************************
#  Author       :               HuangBaoKang
#  CreateDate   :               2018-12-03
#  Description  :               this script is mointoring the linux disk
#                               capacity, if disk used more than 90%,
#                               then it will send a alarm email
#*************************************************************************
#配合定时任务crontab,当磁盘90%的时候,给运维人员发邮件
#!/bin/bash

#============================配置部分====================================
use_ratio=50				 #磁盘使用率超过此值,发送邮件
df_info="/root/hbk/df_info.txt" 	 	 #保存df -h命令的文件信息
task_status_file="/root/hbk/task_status.txt"  #此文件用来判断是否需要再次发邮件,解决完之后,删除此文件表示已解决
#=============================脚本部分===================================
cat /dev/null > ${df_info};  #先清空该文件内容
#获取本机ip地址,ifconfig命令一定要绝对路径,否则ip返回为空
ip=`/sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"`
#获取磁盘的使用率
#或者使用df -P | grep /dev | awk '{print $5}' | cut -f 1 -d "%"
for num in `df -P | grep /dev | awk '{print $5}' | sed 's/%//g'`
do
	if [ $num -gt $use_ratio ]; then
		df -h >> $df_info;
		# 判断是否要发送,当$task_status_file文件不存在,说明是第一次,需要发邮件提醒,否则不需要重复发邮件,解决完之后,删除此文件表示修复完成。
		if [ ! -f $task_status_file ]; then
			echo -e "The server $ip 存在磁盘不足\n `cat $df_info` " | mail -s "The server $ip \'s Disk Capacity Alarm" [email protected];
			# 发完之后,保存到文件,达到变量的作用,防止重复发邮件
			echo "unfinish" > $task_status_file;
               		exit 0;
		fi
	fi
done

编写定时任务crontab

crontab -e

由于我的是测试,所以设置的是没隔一分钟执行一次

*/1 * * * * sh /root/hbk/disk_capacity_alarm.sh

投入到线上服务器,可以修改该表达式,每一天,或者每两天等等。

在我的虚拟机上搭建的此监控脚本,发现可以发邮件。(有一个52%的)

[root@localhost ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   27G   14G   14G   52% /
devtmpfs                 7.8G     0  7.8G    0% /dev
tmpfs                    7.8G     0  7.8G    0% /dev/shm
tmpfs                    7.8G  8.9M  7.8G    1% /run
tmpfs                    7.8G     0  7.8G    0% /sys/fs/cgroup
/dev/sda1               1014M  143M  872M   15% /boot
tmpfs                    1.6G     0  1.6G    0% /run/user/1005
tmpfs                    1.6G     0  1.6G    0% /run/user/0

Linux监控磁盘使用情况,当使用率达到90%,自动发邮件_第1张图片

你可能感兴趣的:(linux)