Linux實用監控腳本——使用 Shell檢測進程 CPU 利用率

檢測進程 CPU 利用率

在對應用服務進行維護時,我們經常遇到由於 CPU 過高導致業務阻塞,造成業務中斷的情況。CPU 過高可能由於業務量過負荷或者出現死循環等異常情況,通過腳本對業務進程 CPU 進行時時監控,可以在 CPU 利用率異常時及時通知維護人員,便於維護人員及時分析,定位,以及避免業務中斷。

Linux實用監控腳本——使用 Shell檢測進程 CPU 利用率

下面的函數可獲得指定進程 ID 的進程 CPU 利用率。它有一個參數為進程 ID,它首先使用 ps 查找進程信息,同時通過「grep -v」過濾掉「%CPU」行,最後通過 awk 查找 CPU 利用百分比的整數部分(如果系統中有多個 CPU,CPU 利用率可以超過 100%)。

對業務進程 CPU 進行實時監控

function GetCpu 
 { 
 CpuValue=`ps -p $1 -o pcpu |grep -v CPU | awk '{print $1}' | awk - F. '{print $1}'` 
 echo $CpuValue 
 }

下面的功能是通過上面的函數 GetCpu 獲得此進程的 CPU 利用率,然後通過條件語句判斷 CPU 利用率是否超過限制,如果超過 80%(可以根據實際情況進行調整),則輸出告警,否則輸出正常信息。

判斷 CPU 利用率是否超過限制

function CheckCpu 
 { 
 PID=$1 
 cpu=`GetCpu $PID` 
 if [ $cpu -gt 80 ] 
 then 
 { 
 echo “The usage of cpu is larger than 80%”
 } 
 else 
 { 
 echo “The usage of cpu is normal”
 } 
 fi 
 }

示例演示:

1)源程序(假設上面已經查詢出 TestApp 的進程 ID 為 11426)

CheckCpu 11426

2)結果輸出

The usage of cpu is 75 
The usage of cpu is normal 
[dyu@xilinuxbldsrv shell]$
 

3)結果分析

從上面的輸出可見:TestApp 程序當前的 CPU 使用為 75%,是正常的,沒有超過 80% 的告警限制。

作為 IT 運維工程師,對單個進程CPU利用率設置監控告警可以在一定程度上降低系統異常,保障業務穩定的運行。試想,如果擁有一個能夠監控全局,實現業務告警風險提醒的運維協作工具呢?定能極大提升工作效率,加強團隊運維保障能力!

Linux實用監控腳本——使用 Shell檢測進程 CPU 利用率

王教授」幫助您更好地瞭解您在公有云上的所有資產狀況(資產統計、健康狀況診斷、監控數據匯聚、費用優化建議等),提前發現系統問題,減小了運維事故的發生。

用了王教授!晚上不“肝”白天干!

神仙運維生活,一招即獲~歡迎點擊文末王教授二維碼查看詳情!

(也可訪問工具地址:https://prof.wang)

網站崩潰找不到原因?平臺搭建無從下手?熱門技術不想落伍?想要變強找不到資料?

加入[IT拯救聯盟],讓大牛和同伴拯救你,帶你裝x帶你飛。定期乾貨分享、大牛專業解答、實用IT工具優選.....

私信小編“聯盟”,即可加入我們~


分享到:


相關文章: