zabbix之監控Nginx連接數


#;下載Nginx (編譯的時候必須加上此選項  --with-http_stub_status_module)
官網地址:http://nginx.org/en/docs/http/ngx_http_stub_status_module.html

root@ubuntu:/usr/local/src# wget http://nginx.org/download/nginx-1.16.1.tar.gz
root@ubuntu:/usr/local/src# tar xf nginx-1.16.1.tar.gz 
root@ubuntu:/usr/local/src# cd nginx-1.16.1/

#:編譯安裝Nginx

root@ubuntu:/usr/local/src/nginx-1.16.1# ./configure --prefix=/apps/nginx --with-http_stub_status_module
root@ubuntu:/usr/local/src/nginx-1.16.1# make && make install

#:配置Nginx的狀態頁

root@ubuntu:/usr/local/src/nginx-1.16.1# vim /apps/nginx/conf/nginx.conf
location = /nginx_status {
    stub_status;
}

#:啟動服務
root@ubuntu:/usr/local/src/nginx-1.16.1# /apps/nginx/sbin/nginx 

#配置監控Nginx的連接數腳本

root@ubuntu:/opt# vim nginx_status.sh 
#!/bin/bash 

nginx_status_fun(){ #函數內容
        NGINX_PORT=$1 #端口,函數的第一個參數是腳本的第二個參數,即腳本的第二個參數是段端口號
        NGINX_COMMAND=$2 #命令,函數的第二個參數是腳本的第三個參數,即腳本的第三個參數是命令
        nginx_active(){ #獲取nginx_active數量,以下相同,這是開啟了nginx狀態但是只能從本機看到
        /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status" 2>/dev/null| grep 'Active' | awk '{print $NF}'
        }
        nginx_reading(){ #獲取nginx_reading狀態的數量
        /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status" 2>/dev/null| grep 'Reading' | awk '{print $2}'
       }
        nginx_writing(){
        /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status" 2>/dev/null| grep 'Writing' | awk '{print $4}'
       }
        nginx_waiting(){
        /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status" 2>/dev/null| grep 'Waiting' | awk '{print $6}'
       }
        nginx_accepts(){
        /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status" 2>/dev/null| awk NR==3 | awk '{print $1}'
       }
        nginx_handled(){
        /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status" 2>/dev/null| awk NR==3 | awk '{print $2}'
       }
        nginx_requests(){
        /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status" 2>/dev/null| awk NR==3 | awk '{print $3}'
       }
        case $NGINX_COMMAND in
                active)
                        nginx_active;
                        ;;
                reading)
                        nginx_reading;
                        ;;
                writing)
                        nginx_writing;
                        ;;
                waiting)
                        nginx_waiting;
                        ;;
                accepts)
                        nginx_accepts;
                        ;;
                handled)
                        nginx_handled;
                        ;;
                requests)
                        nginx_requests;
                esac
}

main(){ #主函數內容
        case $1 in #分支結構,用於判斷用戶的輸入而進行響應的操作
                nginx_status) #當輸入nginx_status就調用nginx_status_fun,並傳遞第二和第三個參數
                        nginx_status_fun $2 $3;
                        ;;
                *) #其他的輸入打印幫助信息
                        echo $"Usage: $0 {nginx_status key}"
        esac #分支結束符
}

main $1 $2 $3

#:測試一下腳本

root@ubuntu:/opt# bash nginx_status.sh nginx_status 88 active

#:將腳本移動到agent配置文件目錄下
root@ubuntu:~# mv /opt/nginx_status.sh /etc/zabbix/zabbix_agentd.conf.d/



#:在agent配置文件自定義監控

root@ubuntu:/opt# vim /etc/zabbix/zabbix_agentd.conf
UserParameter=nginx.status[*],/etc/zabbix/zabbix_agentd.conf.d/nginx_status.sh "$1" "$2" "$3"

#:重啟服務
root@ubuntu:/opt# systemctl restart zabbix-agent.service



創建模板

 

 

 

 

 

 

 

 添加以后將主機中加入監控項

 

加入后創建圖形

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM