zabbix agent 自定義KEY時,報錯“Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all”
環境:Centos 6.4 X64 ,zabbix agent 2.4.2,YUM方式安裝
在zabbix_agentd.conf裏添加了一條監控項,用於統計系統當前各類TCP的連接數
UserParameter=custom.tcp.count[*],netstat -antpl | grep -i $1 | wc -l
重啓代理進程後,發現監控裏的值爲0,使用命令驗證KEY定義是否正確:
./zabbix_get -s 10.21.1.88 -p 10050 -k custom.tcp.count[TIME_WAIT]
返回錯誤信息如下:[日誌裏也能看到此信息]
(Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.)
zabbix agent是yum安裝,該服務以zabbix用戶啓動的,初步懷疑應該是zabbix用戶權限無法正常執行配置文件中自定義KEY裏的命令。驗證後發現, 原來是netstat -lantup裏的-p參數需要root用戶才能使用。
解決方法1:
取消netstat中的“-p”參數,重啓agent後,數據正常
解決方法2:提升zabbix用戶權限
考慮到監控系統中,可能還會遇到類似需要提升權限執行的操作,所以還是採取使用sudo提升用戶權限。
*注意*:
1. 最好使用visudo -f /etc/sudoers 命令去配置。雖然visudo也是調用vi去編輯,但是保存時會進行語法檢查,有錯會有提示。 2./etc/sudoers文件是440只讀權限,修改前先改權限爲640,修改完成,再把權限恢復爲440
編輯/etc/sudoers文件
#註釋掉此行 Defaults requiretty #在最後加入如下行: zabbix ALL=(ALL) NOPASSWD: /bin/netstat #“NOPASSWD”表示zabbix用戶在執行命令時,無需輸入密碼; # “/bin/netstat”,是zabbix用戶可以root身份執行的命令,如果有多個,請用逗號分隔,這樣的好處是做到權限的精細控制
sudo命令的具體使用參考:http://www.centoscn.com/CentOS/help/2014/0408/2741.html