1. 程式人生 > >關於在zabbix監測腳本中使用ps命令監控進程CPU使用率和內存使用率,獲得數據為0的情況描述

關於在zabbix監測腳本中使用ps命令監控進程CPU使用率和內存使用率,獲得數據為0的情況描述

zabbix shell linux

前提:想自己編寫zabbix監測腳本,然後通過配置模板的方式,實現對資源(cpu和內存)使用率高的進程進行監控。

過程描述:
zabbix版本為2.21,被監控主機操作系統為CentOS 6.4。
腳本中主要命令如下:
percent=0;

#通過腳本輸入參數
process=$1;

#通過ps aux參數,獲取CPU%和MEM%值,使用awk將第四行的MEM%值篩選出來
percent=ps aux | grep $process | grep -v grep | head -1 | awk ‘{print $4}‘;

echo $percent

問題描述:
發現在cli中運行上述腳本命令可以獲取到進程資源使用率對應的數值。

但是腳本中包含相同命令條件下,執行腳本,卻經常獲得的數值為0.0,而僅僅只更改了腳本輸入的$1,也就是輸入進程名,腳本執行後,獲得的數值往往不為0.0,而為正常數據。

影響:
由於在zabbix的web頁面中,配置了關於該項數據的dataview,直接導致了dataview的數據展示不準確。

解決方法(待驗證):
1.使用內置的zabbix變量proc.cpu.util[<name>,<user>,<type>,<cmdline>,<mode>,<zone>] 和proc.mem.util[<name>,<user>,<type>,<cmdline>,<mode>,<zone>]。

2.修改腳本中的命令,改用如下方法:
首先獲取進程名對應的pid,再結合top運行如下命令:
top -b -n 1 -p $pid 2>&1 | awk -v pid=$pid ‘{if ($1 == pid)print $9}‘

3.修改腳本中的命令,改用如下方法:
首先獲取進程名對應的pid,再從/proc/$pid/目錄下讀取相關數據,進行計算獲得。

後記:沒有對以上三種解決方法進行驗證,但是個人覺得還是使用zabbix內置變量配置模板為比較好的解決辦法,畢竟個人能力有限,還是選擇相信專業的zabbix吧。

關於在zabbix監測腳本中使用ps命令監控進程CPU使用率和內存使用率,獲得數據為0的情況描述