1. 程式人生 > >Linux監控磁碟使用情況,當使用率達到90%,自動發郵件

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%的)

[[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

在這裡插入圖片描述