nginx編譯安裝 zabbix自定義監控nginx

#

#zabbix自定義監控項監控Nginx

#

#

#系統版本:

[root@zabbix_2 ~]# cat /etc/redhat-release 
CentOS Linux release 7.2.1511 (Core)
主機名:zabbix_1角色:zabbix-serverIP地址:192.168.174.136
主機名:zabbix_2角色:zabbix-agent

IP地址:192.168.174.137

#                                      均關閉防火牆和selinux


#編譯安裝Nginx    

#Nginx 下載地址:http://mirrors.sohu.com/nginx/  pcre :http://down.linuxprobe.com/Tools/pcre-8.35.tar.gz

#上傳nginx 和pcre 到zabbix_2主機上

#編譯安裝依賴包

[root@zabbix_2 ~]# ls
anaconda-ks.cfg  nginx-1.8.1.tar.gz  pcre-8.35.tar.gz
[root@zabbix_2 ~]# yum install -y gcc-c++  openssl-devel  zlib-devel
[root@zabbix_2 ~]# tar -xf pcre-8.35.tar.gz 
[root@zabbix_2 ~]# cd pcre-8.35/
[root@zabbix_2 pcre-8.35]# ./configure  --prefix=/usr/local/pcre/
[root@zabbix_2 pcre-8.35]# make && make install


#編譯安裝 Nginx

[root@zabbix_2 nginx-1.8.1]# useradd -s /sbin/nologin -M nginx
[root@zabbix_2 nginx-1.8.1]# cd nginx-1.8.1/
[root@zabbix_2 nginx-1.8.1]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module  --with-http_stub_status_module
[root@zabbix_2 nginx-1.8.1]# make && make install
#./configure --help  查看參數
#啓動nginx 
[root@zabbix_2 ~]# /usr/local/nginx/sbin/nginx


#啓動成功,如圖所示

wKioL1jtfpfBxTxFAABmEPPH_40726.png

#修改 nginx.conf

[root@zabbix_2 ~]# vim /usr/local/nginx/conf/nginx.conf 
#添加如下內容
[root@zabbix_2 ~]# sed -n '47,52p' /usr/local/nginx/conf/nginx.conf
location /status {
stub_status on;
access_log off;
allow 192.168.174.0/24;
deny all;
}

#測試配置文件是否正確

[root@zabbix_2 ~]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

#重啓nginx

[root@zabbix_2 ~]# /usr/local/nginx/sbin/nginx -s reload

#訪問

wKioL1jtlG3jbnCTAAAYYHFIKLU455.png



#zabbix自定義監控項

 

#編寫腳本

[root@zabbix_2 ~]# cd /etc/zabbix/zabbix_agentd.d/
[root@zabbix_2 zabbix_agentd.d]# vim nginx_status.conf 
[root@zabbix_2 zabbix_agentd.d]# cat nginx_status.conf 
UserParameter=nginx.active, /usr/bin/curl -s  http://192.168.174.137/status | grep -i Active | awk -F" " '{print $3}'
#UserParameter 爲關鍵字    /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf裏面有案例
#naginx.active 爲key   ,後面爲獲取數據腳本
[root@zabbix_2 zabbix_agentd.d]# /usr/bin/curl -s  http://192.168.174.137/status | grep -i Active | awk -F" " '{print $3}'
1
[root@zabbix_2 zabbix_agentd.d]# systemctl restart zabbix-agent.service


#在zabbix_1上測試

[root@zabbix_1 ~]# yum install -y zabbix-get
[root@zabbix_1 ~]# zabbix_get -s 192.168.174.137 -p 10050 -k "nginx.active"

1

#找到zabbix_2


wKiom1juG6DCDSxyAADkeY0tzXk934.png


#創建監控項

wKioL1juG6HwqCEXAADH0wrW7wI565.png


#添加監控項內容(注意此處的鍵值至關重要,千萬不能錯

wKiom1juG6GCh0JJAAC2VUq0HD8163.png


#監控項添加成功

wKioL1juG6KR56dUAAC8l-yvM1E872.png


#創建圖形

wKiom1juG6LhbqobAACWjaRnuqM906.png


#選擇所要表示的監控項

wKioL1juG6PQfFnyAAIwTQtcmO4161.png


#圖形添加成功

wKiom1juG6PTgEmxAADEpSymDzs116.png



#查看圖形wKioL1juG6SSET4SAAFxTlhTuKM001.png



#測試監控是否成功(在zabbix_1上使用ab 測試工具

[root@zabbix_1 ~]# ab -c 1000 -n 100000 http://192.168.174.137/status


wKiom1juG6SCB7BoAAGKNliGbT4252.png

#可以看到圖形發生了變化,自定義監控項添加成功




#自定義監控項 監控nginx狀態  監控TCP狀態

#編寫腳本內容如下

[root@zabbix_2 ~]# cat /opt/nginx_TCP_status.sh 
#!/bin/bash
tcp_status_fun(){
TCP_STAT=$1
#netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,state[key]}' > /tmp/netstat.tmp
ss -ant | awk 'NR>1 {++s[$1]} END {for(k in s) print k,s[k]}' > /tmp/netstat.tmp
TCP_STAT_VALUE=$(grep "$TCP_STAT" /tmp/netstat.tmp | cut -d ' ' -f2)
if [ -z $TCP_STAT_VALUE ];then
TCP_STAT_VALUE=0
fi
echo $TCP_STAT_VALUE
}
nginx_status_fun(){
NGINX_PORT=$1
NGINX_COMMAND=$2
nginx_active(){
        /usr/bin/curl "http://192.168.174.137:"$NGINX_PORT"/status/" 2>/dev/null| grep 'Active' | awk '{print $NF}'
        }
nginx_reading(){
        /usr/bin/curl "http://192.168.174.137:"$NGINX_PORT"/status/" 2>/dev/null| grep 'Reading' | awk '{print $2}'
       }
nginx_writing(){
        /usr/bin/curl "http://192.168.174.137:"$NGINX_PORT"/status/" 2>/dev/null| grep 'Writing' | awk '{print $4}'
       }
nginx_waiting(){
        /usr/bin/curl "http://192.168.174.137:"$NGINX_PORT"/status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}'
       }
nginx_accepts(){
        /usr/bin/curl "http://192.168.174.137:"$NGINX_PORT"/status/" 2>/dev/null| awk NR==3 | awk '{print $1}'
       }
nginx_handled(){
        /usr/bin/curl "http://192.168.174.137:"$NGINX_PORT"/status/" 2>/dev/null| awk NR==3 | awk '{print $2}'
       }
nginx_requests(){
        /usr/bin/curl "http://192.168.174.137:"$NGINX_PORT"/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
tcp_status)
tcp_status_fun $2;
;;
nginx_status)
nginx_status_fun $2 $3;
;;
*)
echo $"Usage: $0 {tcp_status key|nginx_status key}"
esac
}
main $1 $2 $3
[root@zabbix_2 ~]# cd /etc/zabbix/zabbix_agentd.d/
#修改配置文件
[root@zabbix_2 zabbix_agentd.d]# cat nginx_status.conf 
UserParameter=nginx.active, /usr/bin/curl -s  http://192.168.174.137/status | grep -i Active | awk -F" " '{print $3}'
UserParameter=nginx.status[*],/opt/nginx_TCP_status.sh "$1" "$2" "$3"

#重啓zabbix-agent服務

[root@zabbix_2 zabbix_agentd.d]# systemctl restart zabbix-agent.service



#測試key

[root@zabbix_1 ~]# zabbix_get -s 192.168.174.137 -p 10050 -k nginx.status[nginx_status,80,handled]
44


#添加監控項

wKioL1jvQ7bgYNvEAAClGcWxFiI503.png

wKioL1jvQ7WiCuuWAACOImGW574795.png

#將所有的都添加好後

wKiom1jvQ7bSshZgAADlFYqz9UI918.png


#創建圖形

wKioL1jvQ7fggS3sAAC6HBwwAZ0599.png


#添加監控項

wKioL1jvQ7jSQlz9AADfJEtRDfY843.png


#查看最新數據

wKiom1jvQ7fA6H_YAAEN148digE005.png


#查看圖形

wKiom1jvQ7nBzATLAADirCTM5is161.png


(注意:由於我們把所以的監控行全放在一個圖形裏面,而每個監控項的數據大小差距太大,導致數據很小的監控項已經與X軸重合了,)






#導入TCP模板(模板由abcdocker提供)


#模板下載地址:http://pan.baidu.com/s/1i54ULjJ 密碼:25lh 


#修改配置文件

[root@zabbix_2 zabbix_agentd.d]# vim nginx_status.conf


#添加一行

[root@zabbix_2 zabbix_agentd.d]# cat nginx_status.conf 
UserParameter=nginx.active, /usr/bin/curl -s  http://192.168.174.137/status | grep -i Active | awk -F" " '{print $3}'
UserParameter=nginx.status[*],/opt/nginx_TCP_status.sh "$1" "$2" "$3" 
UserParameter=linux_status[*],/opt/nginx_TCP_status.sh "$1" "$2" "$3"


#重啓zabbix-agent服務

[root@zabbix_2 zabbix_agentd.d]# systemctl restart zabbix-agent.service


#測試key

[root@zabbix_1 ~]# zabbix_get -s 192.168.174.137 -p 10050 -k linux_status[tcp_status,LISTEN]
7


#導入模板

wKioL1jvQ7nzQaD1AAD7nHQdPDo709.png


#選擇文件(文件從上面的鏈接地址下載)


wKioL1jvQ7ridvv2AAB_pUb7NNE298.png



#選擇主機中添加模板

wKiom1jvQ7qArJnoAAD4OIf-rfk620.png


#添加模板

wKioL1jvQ7vS8jMNAAD_b0iF7oA146.png



#查看最新數據

wKiom1jvRcPgItj5AAEZLICrfFs791.png


#查看圖形

wKiom1jvQ7uTWvVwAAHED6pGz6E339.png



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