zabbix監控nginx狀態

一、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來查看,如下圖所示:

wKioL1eR0q6y7GOCAAAzfbhEoYY541.png

  修改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狀態的信息了,如下圖:

wKiom1eR077Ay28DAAAkoNJ8iYA541.png-wh_50

  如果看不到效果,應該檢查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”保存,如下圖:

wKioL1eR1VKD8iP_AADJFGq8bVo659.png-wh_50

2、創建應用集

  爲這個模版添加一個應用集“application”,點擊下圖中的Application:

wKiom1eR1ZOxKRHlAABiZNvLDfw532.png-wh_50

  在右上角有“create application”,單擊,填寫內容如下:

wKiom1eR1eCjBf7dAAAYCkMRqlY146.png-wh_50

  只需要定義應用集的名稱,保存。

3、創建item

  保存之後,創建item。在“Configuration——Template”下找到剛剛創建的模版“nginx status”,單擊“items”,如下圖:

wKiom1eR1qmRvvl7AABhmRbPeEw688.png-wh_50

  單擊左上角的“create item”,如下圖:

wKiom1eR1uCibJnoAACZwsfnxOc426.png-wh_50

  填寫item的名稱,key不用選擇,填寫在zabbix客戶機配置文件中定義的key,設置“update interval”(更新間隔),選擇“application”(應用集),保存。按照這樣的步驟,爲其他key也創建item。

4、創建graph

  保存之後,創建item。在“Configuration——Template”下找到剛剛創建的模版“nginx status”,單擊“Graphs”,如下圖:

wKioL1eR1x7x9wHCAABhNLZeQ4c765.png

  單擊右上角的“create graph”,如下圖:

wKiom1eR11KjPjVxAAC1LogBV4I595.png-wh_50

  填寫graph的名稱,自定義寬、高,單擊“add”,選擇要加入graph的item,點擊“save”保存。

5、爲主機鏈接模版

  在“Configuration——Hosts”下的name一欄點擊主機名,在“”Templates

下選擇“nginx status”,點擊“add”“save”。

wKiom1eR15bAX8lOAACwFdxyHAA553.png-wh_50

6、查看添加的圖形

  在“Monitoring——Dashboard”下的“Favourate graphs”添加graph,如下圖:

wKioL1eR2ALD_r_yAADFu6UlcO8639.png-wh_50

  在彈出的窗口中選中nginx status,select就可以完成添加了。然後點擊“nginx status”就可以查看圖形。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章