您的位置:首页 > 运维架构 > Shell

老李分享:shell 监控cpu,memory,load average 1

2015-12-15 17:11 447 查看

老李分享:shell 监控cpu,memory,load average

poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标。如果对课程感兴趣,请大家咨询qq:908821478,咨询电话010-84505200。 Poptest在培训性能的时候,会教学员如何用其他辅助的技术手段来完成性能监控,快速的定位性能瓶颈。下面就是利用shell完成监控目标:shell 监控cpu,memory,load average,记录到log,当负载压力时,发电邮通知管理员。 原理: 1.获取cpu,memory,load average的数值 2.判断数值是否超过自定义的范围,例如(CPU>90%,Memory<10%,load average>2) 3.如数值超过范围,发送电邮通知管理员。发送有时间间隔,每小时只会发送一次。 4.将数值写入log。 5.设置crontab 每30秒运行一次。 ServerMonitor.sh#!/bin/bash # 系统监控,记录cpu、memory、load average,当超过规定数值时发电邮通知管理员 # *** config start *** # 当前目录路径ROOT=$(cd "$(dirname "$0")"; pwd) # 当前服务器名HOST=$(hostname) # log 文件路径CPU_LOG="${ROOT}/logs/cpu.log"MEM_LOG="${ROOT}/logs/mem.log"LOAD_LOG="${ROOT}/logs/load.log" # 通知电邮列表NOTICE_EMAIL='admin@admin.com' # cpu,memory,load average 记录上一次发送通知电邮时间CPU_REMARK='/tmp/servermonitor_cpu.remark'MEM_REMARK='/tmp/servermonitor_mem.remark'LOAD_REMARK='/tmp/servermonitor_loadaverage.remark' # 发通知电邮间隔时间REMARK_EXPIRE=3600NOW=$(date +%s) # *** config end *** # *** function start *** # 获取CPU占用function GetCpu() { cpufree=$(vmstat 1 5 |sed -n '3,$p' |awk '{x = x + $15} END {print x/5}' |awk -F. '{print $1}') cpuused=$((100 - $cpufree)) echo $cpuused local remark remark=$(GetRemark ${CPU_REMARK}) # 检查CPU占用是否超过90% if [ "$remark" = "" ] && [ "$cpuused" -gt 90 ]; then echo "Subject: ${HOST} CPU uses more than 90% $(date +%Y-%m-%d' '%H:%M:%S)" | sendmail ${NOTICE_EMAIL} echo "$(date +%s)" > "$CPU_REMARK" fi}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  软件测试开发