有時候當咱們運行的監控項目在zabbix預約義的key中沒有定義時,就須要咱們手動編寫zabbix用戶參數的方法來監控咱們要定義的項目。須要在zabbix agent端把相關獲取參數的命令寫入到配置文件中的UserParameter中,而後zabbix Server讀取配置文件中的返回值經過處理前端的方式返回給用戶。前端
定義方法以下:node
在被監控端/etc/zabbix/zabbix_agentd.d/目錄下,建立*.conf結尾的文件,在文件內寫入獲取命令便可。
nginx
定義的語法以下:web
UserParameter=key[*],commandvim
參數描述:bash
Key:惟一. [*]表示裏面能夠傳遞多個參數服務器
Command:須要執行的腳本,key的[]裏面的參數一一對應$1到$9,一共9個參數。$0表示腳本命令。網絡
注意事項:curl
若是須要使用命令行裏面出現$2這種變量,那麼你要使用兩個$$2,例如awk '{print $$2}',不然會獲取不到數據。分佈式
示例:在被監控服務器node2的/etc/zabbix/zabbix_agentd.d/目錄下,建立一個os.conf文件,定義獲取內存的值
[root@node2 ~]# vim /etc/zabbix/zabbix_agentd.d/os.conf UserParameter=os.memory.used,free -m | awk '/^mem/ {print $3}' [root@node2 ~]# service zabbix-agent restart
Zabbix服務器應用新定義的用戶參數,這裏使用剛剛定義的建值
定義一個圖形:
能夠從圖形看到收集的相關數據了
客戶端還能夠監控其餘參數,如獲取第二段就是總空間,獲取第四段就是剩餘空間
[root@node2 ~]# vim /etc/zabbix/zabbix_agentd.d/os.conf UserParameter=os.memory.used, free -m | awk '/^Mem/{print $3}' #內存已用空間 UserParameter=os.memory.free, free -m | awk '/^Mem/{print $4}' #內存剩餘空間 UserParameter=os.memory.total, free -m | awk '/^Mem/{print $2}' #內存總空間 [root@node2 ~]# service zabbix-agent restart
在定義一個監控項監控內存剩餘空間
定義餅狀圖一塊兒顯示內存已用空間和剩餘空間
圖形預覽以下所示:
安裝nginx
[root@node2 ~]# yum -y install nginx
配置nginx
[root@node2 ~]# vim /etc/nginx/conf.d/default.conf location /status { stub_status on; allow 172.16.0.0/16; deny all; }
設置完成訪問驗證:
顯示說明:
Active connections: 2 # 當前全部處於打開狀態的鏈接數;
server accepts handled requests
9 9 33
(1) 已經接受過的鏈接數
(2) 已經處理過的鏈接數
(3) 已經處理過的請求數;在"保持鏈接"模式下,請求數量可能會多於鏈接數量;
Reading: 1 Writing: 1 Waiting: 0
Reading:正處於接收請求狀態的鏈接數;
Writing: 請求已經接收完成,正處於處理請求或發送響應的過程當中的鏈接數;
Waiting:保持鏈接模式,且處於活動狀態的鏈接數;
定義UserParameter用來獲取指定參數的值:
[root@node2 ~]# vim /etc/zabbix/zabbix_agentd.d/nginx.conf UserParameter=Nginx.active[*], /usr/bin/curl -s "http://$1:$2/status" | awk '/^Active/ {print $NF}' #監控active UserParameter=Nginx.reading[*], /usr/bin/curl -s "http://$1:$2/status" | grep 'Reading' | cut -d" " -f2 #監控reading UserParameter=Nginx.writing[*], /usr/bin/curl -s "http://$1:$2/status" | grep 'Writing' | cut -d" " -f4 #監控writing UserParameter=Nginx.waiting[*], /usr/bin/curl -s "http://$1:$2/status" | grep 'Waiting' | cut -d" " -f6 #監控waiting UserParameter=Nginx.accepted[*], /usr/bin/curl -s "http://$1:$2/status" | awk '/^[ \t]+[0-9]+[ \t]+[0-9]+[ \t]+[0-9]+/ {print $$1}' #監控已接受鏈接 UserParameter=Nginx.handled[*], /usr/bin/curl -s "http://$1:$2/status" | awk '/^[ \t]+[0-9]+[ \t]+[0-9]+[ \t]+[0-9]+/ {print $$2}' #監控處理過的鏈接 UserParameter=Nginx.requests[*], /usr/bin/curl -s "http://$1:$2/status" | awk '/^[ \t]+[0-9]+[ \t]+[0-9]+[ \t]+[0-9]+/ {print $$3}' #監控已經處理過的請求數 [root@node2 ~]# service zabbix-agent restart
定義一個監控項,監控已經處理過的請求數
定義圖形
這個時候就能夠看到監控的參數了
若是須要獲取其餘的參數,只須要在建立項目時設置相對應的key和對應的值便可。
相關內容:
(1)Zabbix2.4.5安裝配置:http://ximenfeibing.blog.51cto.com/8809812/1670988
(2)Zabbix客戶端監控+報警:http://ximenfeibing.blog.51cto.com/8809812/1670999
(3)Zabbix宏設置:http://ximenfeibing.blog.51cto.com/8809812/1671024
(4)使用zabbix監控web:http://ximenfeibing.blog.51cto.com/8809812/1671032
(4)Zabbix用戶參數配置:http://ximenfeibing.blog.51cto.com/8809812/1671039
(6)Zabbix模版+網絡發現:http://ximenfeibing.blog.51cto.com/8809812/1671041
(7)Zabbix分佈式監控proxy實現:http://ximenfeibing.blog.51cto.com/8809812/1671048