Linux下監控磁盤使用量並在超過閥值後自動發送報警郵件

最近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='[email protected]'
    emailpasswd='password'
    emailsmtp='smtp.domain.com'
    sendto='[email protected]'
    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!

disk_check
7、最後,可以設置一個cron計劃任務,讓該腳本每隔1小時運行一次

[root@webmail /]# crontab -e

在cron裏添加下面一行即可

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

 

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章