使用Shell寫一個腳本,CPU使用率超過80%或硬盤超過85%郵件報警

最近公司領導要求,要對客戶那邊寫一個自動化的腳本,用來監控客戶那邊CPU使用率和硬盤空間,並通過郵件來報警。剛好參考老男孩李導最近的案例,測試了下,可以正常使用。

CPU監控:top -n 1 查看1次就退出

1
Cpu(s): 0.3%us,  0.3%sy,  0.0%ni, 99.3%id,  0.0%wa, 0.0%hi,  0.0%si,  0.0%st

 99.3%id  是未使用的CPU,剩餘的都是使用的。

獲取使用率

1
top -n 1|awk -F '[, %]+' 'NR==3 {print 100-$11}'

知識點2

磁盤監控先監控/

1
df -h|awk -F '[ %]+'  '/\/$/{print $5}'

知識點3:使用bc進行含有小數的大小判斷

1
2
3
4
5
6
[root@oldboy ~]# echo "0.1>0.01"|bc
1
[root@oldboy ~]# echo "0.1>0.2"|bc
0
[root@oldboy ~]# echo "5.6>10.3"|bc
0

具體步驟:

1. 配置/etc/mail.rc支持發郵件

1
http://oldboy.blog.51cto.com/2561410/1706911

2. 腳本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[root@oldboy scripts]# cat check.sh
#!/bin/bash
LANG=en_US.UTF-8
cpuUsed=`top -n 1|awk -F '[, %]+' 'NR==3 {print 100-$11}'`
diskUsed=$(df -h|awk -F '[ %]+'  '/\/$/{print $5}')
logFile=/tmp/jiankong.log
  
function Sendmail(){
    mail -s"監控報警" [email protected] <$logFile
}
  
function check(){
    if [ `echo"$cpuUsed>80"|bc` -eq 1 -o $diskUsed -ge 85 ];then
       echo"CPU使用率:${cpuUsed}%,磁盤使用率:${diskUsed}%">$logFile
      Sendmail
    fi
}
  
function main(){
    check
}
 
main

 

3. 加入定時任務,每5分鐘執行一次。

 

                           

wKioL1j0iluQc7qwAADXQEDkpAs974.png


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