监控服务器系统cpu占用情况:
1、使用top命令查看linux系统cpu使用情况:
# top -b -n 1 | grep Cpu (-b -n 1 表只需要1次的输出结果)
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni, 99.9%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
(空闲值)
2、查看截取空闲cpu的百分比数值命令(只取整数部分):
# top -b -n 1 | grep Cpu | awk '{print $5}' | cut -f 1 -d "."
3、编写cpu监控的脚本文件:
# vim /scripts/cpu-check.sh
- #!/bin/bash
- #使用top命令监控linux系统cpu变化
-
- #取系统当前时间(以追加的方式写入文件>>)
- date >> /scripts/datetime-cpu.txt
-
- #抓取当前cpu的值(以追加的方式写入文件>>)
- top -b -n 1 | grep Cpu >> /scripts/cpu-now.txt
-
- #逐行连接上面的时间和cpu相关行数据(每次重新写入文件>)
- paste /scripts/datetime-cpu.txt /scripts/cpu-now.txt > /scripts/cpu.txt
# chmod a+x /scripts/cpu-check.sh
4、查看CPU监控的结果文件:
# cat /scripts/cpu.txt
5、编写cpu结果文件邮件发送脚本:
# vim /scripts/sendmail-cpu.sh
- #!/bin/bash
- #把生成的cpu.txt文件通过邮件发送给用户
-
- #提取本服务器的IP地址信息
- IP=`ifconfig eth0 | grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d " "`
-
- #提取当前日期
- today=`date -d "0 day" +%Y年%m月%d日`
-
- #发送cpu监控结果邮件
- echo "这是$IP服务器$today的cpu监控报告,请下载附件。" | mutt -s "$IP服务器$today的CPU监控报告" -a /scripts/cpu.txt test@163.com
# chmod a+x /scripts/sendmail-cpu.sh
6、监控系统cpu的情况,当使用超过80%的时候发告警邮件:
# vim /scripts/cpu-warning.sh
- #!/bin/bash
- #监控系统cpu的情况脚本程序
-
- #提取本服务器的IP地址信息
- IP=`ifconfig eth0 | grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d " "`
-
- #取当前空闲cpu百份比值(只取整数部分)
- cpu_idle=`top -b -n 1 | grep Cpu | awk '{print $5}' | cut -f 1 -d "."`
-
- #设置空闲cpu的告警值为20%,如果当前cpu使用超过80%(即剩余小于20%),立即发邮件告警
- if (($cpu_idle < 20)); then
- echo "$IP服务器cpu剩余$cpu_idle%,使用率已经超过80%,请及时处理。" | mutt -s "$IP 服务器CPU告警" test@163.com
- fi
# chmod a+x /scripts/cpu-warning.sh
7、加入任务计划:CPU占用率每十分钟检测一次,有告警则立即发邮件(十分钟检查一次),CPU检测结果邮件每天早上8点发一次
- */10 * * * * /scripts/cpu-check.sh
- */10 * * * * /scripts/cpu-warning.sh
- 0 8 * * * /scripts/sendmail-cpu.sh
(原文摘自:http://huangrs.blog.51cto.com/2677571/788379/)