老李分享:shell 监控cpu,memory,load average 1
老李分享: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=3600
NOW=$(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
}
?
轉載于:https://blog.51cto.com/10988776/1723280
總結
以上是生活随笔為你收集整理的老李分享:shell 监控cpu,memory,load average 1的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 上struts2的xml在lt;resu
- 下一篇: 软件网桥及配置