Linux實用監控腳本——使用 Shell 檢測進程 CPU 利用率
在對應用服務進行維護時,我們經常遇到由于 CPU 過高導致業務阻塞,造成業務中斷的情況。CPU 過高可能由于業務量過負荷或者出現死循環等異常情況,通過腳本對業務進程 CPU 進行時時監控,可以在 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利用率設置監控告警可以在一定程度上降低系統異常,保障業務穩定的運行。試想,如果擁有一個能夠監控全局,實現業務告警風險提醒的運維協作工具呢?定能極大提升工作效率,加強團隊運維保障能力!