ZABBIX 3.4 監控Nginx 狀態(七)

ZABBIX 3.4 監控Nginx 狀態(七)

1、環境準備html

一、在nginx的配置文件中,添加status配置
        location /nginx_status {
               stub_status on;
               access_log off;
               allow 127.0.0.1;
               allow 172.17.19.19;   //zabbix服務器的IP地址,通常是內網地址  
               deny all;
       }nginx

     //在虛擬主機 server {} 中加入上面配置,也能夠單獨定義一個專門用於監控的虛擬主機。
     //deny all , 拒絕除 allow 中的主機以外全部主機訪問此 URL ,實現過程當中若是遇到 403 ,有多是你把本身測試的機器拒絕了後端

二、訪問設置好的nginx-status連接,如圖所示:bash

三、nginx Status 詳細說明:服務器

Activeconnections:對後端發起的活動鏈接數;併發

server accepts 66:nginx 總共處理了66個鏈接;curl

handled:成功建立了66次握手;測試

requests:總共處理了66請求。fetch

Reading:nginx讀取客戶端的header數;url

Writing: nginx 返回給客戶端的header數;

Waiting: nginx 請求處理完成,正在等待下一請求指令的鏈接。

  在訪問效率很高,請求很快被處理完畢的狀況下,Waiting 數比較可能是正常的。若是 reading + writing 數較多,則說明併發訪問量很大,正在處理過程當中

 

2、監控腳本編寫

一、編寫腳本,放於 /etc/zabbix/zabbix_agentd.d/目錄下

複製代碼

#!/bin/bash
#Script to fetch nginx statuses for monitoring systems
#Author Tony 
    HOST="127.0.0.1"
    PORT="80"

    function ping {
        /sbin/pidof nginx | wc -l
    }

    function active {
        /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Active' | awk '{print $NF}'
    }
    function reading {
        /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Reading' | awk '{print $2}'
    }
    function writing {
        /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Writing' | awk '{print $4}'
    }
    function waiting {
        /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}'
    }
    function accepts {
        /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $1}'
    }
    function handled {
        /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $2}'
    }
    function requests {
        /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $3}'
    }
    $1

複製代碼

       賦予腳本執行權限:

[root@Node1 zabbix_agentd.d]# chmod a+x nginx_status.sh  //賦予執行權限
[root@Node1 zabbix_agentd.d]# ll nginx_status.sh
-rwxr-xr-x 1 root root 1157 Jan 18 15:45 nginx_status.sh

二、添加zabbix配置文件,放於 /etc/zabbix/zabbix_agentd.d/目錄下(agent的配置文件 /etc/zabbix/zabbix_agentd.conf 中定義了其餘key的包含目錄)建立配置文件nginx_status.conf

[root@Node1 zabbix_agentd.d]# cat nginx_status.conf
UserParameter=nginx.status[*],/etc/zabbix/zabbix_agentd.d/nginx_status.sh $1

三、確保配置Agent配置文件開啓自定義參數UnsafeUserParameters=1

複製代碼

[root@Node1 zabbix_agentd.d]# !grep
grep -n '^[a-Z]' /etc/zabbix/zabbix_agentd.conf
13:PidFile=/var/run/zabbix/zabbix_agentd.pid
32:LogFile=/var/log/zabbix/zabbix_agentd.log
43:LogFileSize=0
57:DebugLevel=3
97:Server=172.17.21.208
138:ServerActive=172.17.21.208
149:Hostname=Node1.contoso.com
267:Include=/etc/zabbix/zabbix_agentd.d/*.conf
286:UnsafeUserParameters=1    //1表明容許,0表明關閉

複製代碼

四、重啓zabbix-agent服務

[root@Node1 ~]# systemctl restart zabbix-agent.service

 五、在zabbix servere服務器上測試,是否能正常獲取數據

複製代碼

[root@Node3 zabbix3.4.5]# zabbix_get -s 172.17.21.206 -p 10050 -k nginx.status[ping]   
1
[root@Node3 zabbix3.4.5]# zabbix_get -s 172.17.21.206 -p 10050 -k nginx.status[accepts]
306
[root@Node3 zabbix3.4.5]# zabbix_get -s 172.17.21.206 -p 10050 -k nginx.status[handled]
307
[root@Node3 zabbix3.4.5]# zabbix_get -s 172.17.21.206 -p 10050 -k nginx.status[requests]
311
[root@Node3 zabbix3.4.5]#

複製代碼

3、WEB界面配置

一、建立模板:Configuration-->Templates-->Greate template,建立模板名稱:Template App NGINX,單擊Add便可

二、給模板依次添加相應Item、Trigger、Graphs,以下圖所示

三、關聯模板,Configuration-->Hosts-->Node1--Templates,選擇模板,點擊Updtae便可

 

四、查看Nginx狀態:Monitoring-->Graphs-->Host(Node1)-->Grahp(nginx status connections與nginx status server)

   備註:若相關數據比較小的話,可使用ab進行簡單壓測,而後再看數值變化

[root@Node1 zabbix_agentd.d]# ab -n 10000 -c 1000 http://Node1.contoso.com/

 附模板:Template_Nginx_Status.xml

相關文章
相關標籤/搜索