最近公司领导要求,要对客户那边写一个自动化的脚本,用来监控客户那边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 "监控报警" user@oldboyedu.com <$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分钟执行一次。