#;下載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
創建模板
添加以后將主機中加入監控項
加入后創建圖形