Zabbix之三---Zabbix監控Nginx服務及nginx的80端口狀態


實戰一:Zabbix監控Nginx服務

1、官網下載nginx包,並進行源碼編譯安裝

 1、在官網進行下載源碼包,並解壓。

 官網地址:  https://nginx.org/en/download.html,下載14版,16版暫時兼容性較差。

[root@nginx ~]# cd /usr/local/src # 切換到此目錄下
[root@nginx src]# wget http://nginx.org/download/nginx-1.14.2.tar.gz  # 下載nginx源碼包
[root@nginx src]# tar xvf nginx-1.14.2.tar.gz  # 解壓nginx源碼包

2、創建nginx用戶,並以nginx用戶啟動nginx服務

[root@nginx src]# useradd -r -s /sbin/nologin  nginx

3、安裝依賴的包

[root@centos17src]#yum install gcc pcre-devel openssl-devel zlib-devel -y

4、開始configure編譯

[root@nginx nginx-1.14.2]#cd nginx-1.16.1/
 
./configure --prefix=/apps/nginx \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_module

5、開始make && make install 編譯。

[root@nginx nginx-1.14.2]# make -j 2 && make install

6、創建軟鏈接

[root@nginx nginx-1.14.2]# ln -s /apps/nginx/sbin/nginx  /usr/sbin/nginx  # 創建軟鏈接(/usr/sbin/nginx)
[root@nginx nginx-1.14.2]# nginx # 啟動nginx

7、將nginx服務設置為開機啟動

[root@centos17nginx-1.14.2]#vim /etc/rc.d/rc.local 寫入到默認的本地啟動服務位置
/usr/sbin/nginx   將nginx服務的路徑寫上
[root@centos17nginx-1.14.2]#chmod +x /etc/rc.d/rc.local  # 加上執行權限

8、開始配置nginx服務的status狀態頁:vim  /apps/nginx/conf/nginx.conf

        location /nginx_status {  # 訪問網頁的URL
            stub_status on; # 打開狀態頁
            access_log off;
            #allow 127.0.0.1;
            #deny all;
        }

9、驗證nginx服務配置文件是否正確

[root@nginx nginx-1.14.2]# nginx -t  # 檢查此時的nginx配置文件是否正確
nginx: the configuration file /apps/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /apps/nginx/conf/nginx.conf test is successful

10、重新加載nginx服務,然后在網頁上訪問此時的nginx狀態頁

[root@nginx nginx-1.14.2]# nginx -s reload # 重新加載nginx服務

11、訪問網頁上的nginx狀態頁

  

 以上網頁顯示的狀態頁含義:

Active connections: 當前處於活動狀態的客戶端連接數,包括連接等待空閑連接數。
accepts:統計總值,Nginx自啟動后已經接受的客戶端請求的總數。
handled:統計總值,Nginx自啟動后已經處理完成的客戶端請求的總數,通常等於accepts,除非有因worker_connections限制等被拒絕的連接。
requests:統計總值,Nginx自啟動后客戶端發來的總的請求數。
Reading:當前狀態,正在讀取客戶端請求報文首部的連接的連接數。
Writing:當前狀態,正在向客戶端發送響應報文過程中的連接數。
Waiting:當前狀態,正在等待客戶端發出請求的空閑連接數,開啟keep-alive的情況下,這個值等於active–(reading+writing)。

2、傳遞自定義的check_nginx.sh腳本,並配置zabbix-agent服務

(1)將自定義nginx腳本傳遞到此目錄下:/etc/zabbix/zabbix_agentd.d/(在安裝tomcat服務時,已經安裝zabbix-agent包,詳情請看https://www.cnblogs.com/struggle-1216/p/12307115.html)

[root@node2 zabbix_agentd.d]# cat check_nginx.sh 
#!/bin/bash
#
host=${2:-'127.0.0.1'}
port=${3:-'80'}
page=${4:-'nginx_status'}
info=$(/usr/bin/curl --connect-timeout 5 -s http://${host}:${port}/${page} 2>/dev/null)
code=$(/usr/bin/curl --connect-timeout 5 -o /dev/null -s -w %{http_code} http://${host}:${port}/${page})
proc=$(/usr/bin/pgrep nginx | wc -l)

case "$1" in
  status)
    echo "$code $proc" | awk '{code=$1}{proc=$2}END{if(code == "200" && proc != 0){printf("%d\n",1)}else{printf("%d\n",0)}}'
    ;;
  active)
    echo "$info" | awk '/^Active/{var=$NF}END{if(var~/^[0-9]+$/){printf("%d\n",var)}else{printf("%d\n",0)}}'
    ;;
  reading)
    echo "$info" | awk '/Reading/ {print $2}'
    ;;
  writing)
    echo "$info" | awk '/Writing/ {print $4}'
    ;;
  waiting)
    echo "$info" | awk '/Waiting/ {print $6}'
    ;;
  accepts)
    echo "$info" | awk 'NR==3 {print $1}'
    ;;
  handled)
    echo "$info" | awk 'NR==3 {print $2}'
    ;;
  requests)
    echo "$info" | awk 'NR==3 {print $3}'
    ;;
  restimes)
    echo "$info" | awk 'BEGIN{OFMT="%.3f"} NR==3 {print $4/$3}'
    ;;
  *)
    echo "ZBX_NOTSUPPORTED"
    ;;
esac

(2)加上執行權限

[root@node2 zabbix_agentd.d]# chmod +x check_nginx.sh 

(3)在zabbix-server服務端查看是否可以執行

[root@node2 zabbix_agentd.d]# bash check_nginx.sh  writing
1
[root@node2 zabbix_agentd.d]# bash check_nginx.sh  status
1

 (4)配置zabbix-agent文件: vim /etc/zabbix/zabbix_agentd.conf 

 UserParameter=nginx.status[*],/etc/zabbix/zabbix_agentd.d/check_nginx.sh $1  # 指定腳本的絕對路徑

(5)重新啟動zabbix-agent服務,並查看此時監聽的端口、運行狀態

[root@node2 zabbix_agentd.d]# systemctl restart zabbix-agent
[root@node2 zabbix_agentd.d]# ss -nlt
State       Recv-Q Send-Q                           Local Address:Port                                          Peer Address:Port              
LISTEN      0      100                                  127.0.0.1:25                                                       *:*                  
LISTEN      0      128                                          *:10050                                                    *:*                  
LISTEN      0      511                                          *:80                                                       *:*                  
LISTEN      0      128                                          *:22                                                       *:*                  
LISTEN      0      50                                        [::]:15833                                                 [::]:*                  
LISTEN      0      50                                        [::]:12345                                                 [::]:*                  
LISTEN      0      100                                      [::1]:25                                                    [::]:*                  
LISTEN      0      50                                        [::]:16867                                                 [::]:*                  
LISTEN      0      1                           [::ffff:127.0.0.1]:8005                                                  [::]:*                  
LISTEN      0      100                                       [::]:8009                                                  [::]:*                  
LISTEN      0      100                                       [::]:8080                                                  [::]:*                  
LISTEN      0      128                                       [::]:22                                                    [::]:*                  
[root@node2 zabbix_agentd.d]# ps -ef |grep zabbix
zabbix    49615      1  0 22:06 ?        00:00:00 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
zabbix    49616  49615  0 22:06 ?        00:00:00 /usr/sbin/zabbix_agentd: collector [idle 1 sec]
zabbix    49617  49615  0 22:06 ?        00:00:00 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection]
zabbix    49618  49615  0 22:06 ?        00:00:00 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection]
zabbix    49619  49615  0 22:06 ?        00:00:00 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection]
zabbix    49620  49615  0 22:06 ?        00:00:00 /usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec]
root      49630  43185  0 22:06 pts/1    00:00:00 grep --color=auto zabbix

3、在zabbix-server服務端進行測試zabbix-agent配置的腳本  

(1)在zabbix-server服務端用zabbix_get命令查看結果,驗證效果,此時返回數值說明正常

[root@zabbix ~]# zabbix_get -s 192.168.7.102 -p 10050 -k "nginx.status[writing]"
1
[root@zabbix ~]# zabbix_get -s 192.168.7.102 -p 10050 -k "nginx.status[status]"
1
[root@zabbix ~]# zabbix_get -s 192.168.7.102 -p 10050 -k "nginx.status[waiting]"
0

4、開始在zabbix網頁上進行創建nginx監控模板

(1)自定義模板

(2)自定義模板名稱

 (3)點擊剛才創建好的linux_nginx模板,然后點應用集,創建應用集

   將創建的linux_nginx模板名稱關聯到nginx服務器的模板上(node2:192.168.7.102)

 (4)創建監控項

  對監控項進行命名,修改相關配置

 (5)將創建好的監控項關聯到上面的nginx服務器上(也就是node2服務器:192.168.7.102主機)

 (6)點擊剛才創建的linux_nginx模板,在監控其他指標時,就可以直接克隆,不需要再一個一個修改了,節約時間

(7)將上面的writing改為status即可,然后點擊添加。

 (8)再繼續克隆,將writing改為active,以此類推,將剩下腳本里有的所有參數都克隆添加一下即可,這里只做測試,就只添加三個即可。

 (9)創建圖形

 (10)將上面添加的監控項一一對應

 (11)三個圖形已經添加完,如下:

 (12)此時檢查監控創建的圖形情況

在監控的過程中,如果我們遇到了Reading的值很大,怎么辦呢?

答:(1)可以進行增加服務器(2)查看服務器的CPU、磁盤IO是否正常,其他資源是否正常,后端響應時間是否正常,理論上reading很大,writing也會越大,而實際的waiting值比較大,reading和writing小才是正常的現象

創建監控nginx的80端口 

(1)在以上創建linux_nginx的基礎上克隆一個新的監控項,用來監控nginx的80端口

(2)創建圖形即可

(3)查看監控圖形

 

 

  

 

  

  

  

  

  

  

  

  

  

  


免責聲明!

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



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