一、zabbix客戶端配置
首先修改一下zabbix客戶端的配置,習慣上將zabbix的配置文件拷貝到自建的/etc/zabbix/目錄,方便管理:
[root@localhost ~]# sed -e '/^$/d;/^#/d' /etc/zabbix/zabbix_agentd.conf PidFile=/tmp/zabbix_agentd.pid LogFile=/tmp/zabbix_agentd.log Server=192.168.199.79 ServerActive=127.0.0.1 Hostname=zabbix client1 Include=/etc/zabbix/zabbix_agentd.conf.d/ #啓用一個專門保存配置文件的目錄,減少直接修改zabbix_agentd.conf文件。 UnsafeUserParameters=1 #代表是否啓用“不安全的用戶參數”,0不啓用,1啓用。如果不啓用可能導致zabbix不識別某些參數,比如即將用到的requests。
修改之後重啓zabbix_agent,並且創建/etc/zabbix/zabbix_agentd.conf.d/目錄。
二、配置nginx可以查看nginx狀態
zabbix監控nginx狀態,是通過nginx的stub_staus模塊來獲取參數的值。所以需要在編譯nginx的時候加上--with-http_stub_status選項。如果不知道編譯的時候有沒有加上這個選項,可以使用/usr/local/nginx/sbin/nginx -V來查看,如下圖所示:
修改nginx的配置文件,在server{}中添加stub_status配置:
48 location /status { #location匹配規則 49 stub_status on; 50 allow 127.0.0.1; 51 allow 192.168.199.79; #zabbix服務端ip,必須允許 52 allow 192.168.199.80; #zabbix客戶端ip,可以允許,方便測試 53 allow 192.168.199.186; #本地windows的ip,可以允許,方便測試 54 deny all; 55 }
修改之後重啓nginx。
通過瀏覽器訪問192.168.199.80/status,就可以看到關於nginx狀態的信息了,如下圖:
如果看不到效果,應該檢查nginx是否允許此ip通過瀏覽器查看nginx狀態,或者nginx中定義的路徑是否正確。
三、編寫腳本
通過編寫腳本來獲取nginx狀態各個參數的值,這個腳本的路徑沒有限制,腳本內容如下:
[root@localhost ~]# cat /etc/zabbix/nginx_status.sh #!/bin/bash #author: zhen #date: 2016/7/15 PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin HOST=192.168.199.80 PORT=80 function active { /usr/bin/curl $HOST:$PORT/status 2>/dev/null | awk 'NR==1{print $3}' } function accept { /usr/bin/curl $HOST:$PORT/status 2>/dev/null | awk 'NR==3{print $1}' } function handled { /usr/bin/curl $HOST:$PORT/status 2>/dev/null | awk 'NR==3{print $2}' } function requests { /usr/bin/curl $HOST:$PORT/status 2>/dev/null | awk 'NR==3{print $3}' } function reading { /usr/bin/curl $HOST:$PORT/status 2>/dev/null | awk 'NR==4{print $2}' } function writing { /usr/bin/curl $HOST:$PORT/status2>/dev/null | awk 'NR==4{print $4}' } function waiting { /usr/bin/curl $HOST:$PORT/status 2>/dev/null | awk 'NR==4{print $6}' } $1 #“$1”一定不要落下,否則zabbix就讀取不到值了。
四、增減zabbix配置
在zabbix客戶機上增加下面的配置:
[root@localhost ~]# cat /etc/zabbix/zabbix_agentd.conf.d/nginx_status.conf UserParameter=nginx.active,/etc/zabbix/nginx_status.sh active UserParameter=nginx.accept,/etc/zabbix/nginx_status.sh accept UserParameter=nginx.handled,/etc/zabbix/nginx_status.sh handled UserParameter=nginx.requests,/etc/zabbix/nginx_status.sh requests UserParameter=nginx.reading,/etc/zabbix/nginx_status.sh reading UserParameter=nginx.writing,/etc/zabbix/nginx_status.sh writing UserParameter=nginx.waiting,/etc/zabbix/nginx_status.sh waiting
userparameter的格式:UserParameter=key,shell command
寫完之後還是要重啓zabbix客戶端的。
切換到zabbix的服務端,測試是否能獲取到客戶端的key值,如下:
[root@zhen ~]# /usr/local/zabbix/bin/zabbix_get -k nginx.active -s 192.168.199.80 -p 10050 1
-k:指定key -s:指定主機ip -p:指定端口,默認端口不需要指定
將各個key都測試一下,沒有問題就可以下一步了。如果獲取不到值或者不支持,最可能的原因就是權限問題,可以將需要的文件屬主都改爲zabbix,或者執行visudo命令,爲zabbix用戶添加sudo權限,讓zabbix可以執行/etc/zabbix/nginx_status.sh。再有就是檢查一下key是否輸入正確。
五、在zabbix的web頁面上添加監控
1、創建模版:
對於大量服務器都可能用到的監控,應該創建專門的template,在添加主機的時候直接添加template就可以,而不需要挨個主機去添加item。
登錄zabbix頁面,在“Configuration——Templates”下右上角單擊“Create Template”,填寫“Template name”,“group”,也可以創建一個新的組,完成之後點擊“save”保存,如下圖:
2、創建應用集
爲這個模版添加一個應用集“application”,點擊下圖中的Application:
在右上角有“create application”,單擊,填寫內容如下:
只需要定義應用集的名稱,保存。
3、創建item
保存之後,創建item。在“Configuration——Template”下找到剛剛創建的模版“nginx status”,單擊“items”,如下圖:
單擊左上角的“create item”,如下圖:
填寫item的名稱,key不用選擇,填寫在zabbix客戶機配置文件中定義的key,設置“update interval”(更新間隔),選擇“application”(應用集),保存。按照這樣的步驟,爲其他key也創建item。
4、創建graph
保存之後,創建item。在“Configuration——Template”下找到剛剛創建的模版“nginx status”,單擊“Graphs”,如下圖:
單擊右上角的“create graph”,如下圖:
填寫graph的名稱,自定義寬、高,單擊“add”,選擇要加入graph的item,點擊“save”保存。
5、爲主機鏈接模版
在“Configuration——Hosts”下的name一欄點擊主機名,在“”Templates
下選擇“nginx status”,點擊“add”“save”。
6、查看添加的圖形
在“Monitoring——Dashboard”下的“Favourate graphs”添加graph,如下圖:
在彈出的窗口中選中nginx status,select就可以完成添加了。然後點擊“nginx status”就可以查看圖形。