Linux監控磁碟使用情況,當使用率達到90%,自動發郵件
阿新 • • 發佈:2018-12-06
#*************************************************************************
# 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%的)
[[email protected] ~]# 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