nginx狀態監控統計

2022-06-15 09:54:11 字數 2669 閱讀 3691

nginx是一款很優秀的web伺服器軟體,很多地方都有接觸和使用到他,大部分的場景壓力還沒達到需要調優的地步,而調優的難點其實不在於調,而在於各項狀態的監控,能夠很快的找到資源在什麼時候出現問題,調整前後出現的變化,如果都不知道變化在**所做的調優只能是憑感覺的

之前看到有技術人員用nginx作為rgw的前端的時候,通過優化去實現將nginx的併發提高到很大,而不出現4xx等問題,nginx的access.log裡面是有記錄訪問的狀態碼的,而這個日誌的分析如果是一次次的去看,這樣的分析是無法用精確的資料去展示的

最開始的想法是想根據時間點去統計時間點的狀態碼,後來發現這樣做既複雜,又無法輸出到一些資料展示軟體當中,實際上我只需要統計一定時間的總的狀態值,然後定期去取這個值,然後在資料展示的時候,就可以看到乙個數值的曲線圖,增量即為這個時間區間所產生的狀態值

下面就是我的實現,乙個指令碼就可以統計了,這個是最初的版本,純統計狀態碼,還沒有區分讀寫分離的情況,這個在後面會加入分離的情況

#!/bin/sh

#### begin init info

# provides: nginxstatus

# required-start: $nginx

# short-description: nginxstatus

# description: collectstatus of nginx

### end init info##

# pidfile: /var/run/nginx/nginxstatus.pid

## source function library.

##########################################

#狀態碼一般分為1xx,2xx,3xx,4xx,5xx,total

statucode="2 3 4 5"

##check intervel setting

interval=2

########################################

#check the nginxstatus pid dir if exist

if [ ! -d /var/run/nginxstatus/ ];then

mkdir /var/run/nginxstatus/

fi##check the status of nginx access

check()' |wc -l` > /var/log/nginx/"$code"xx.log

done

sleep $interval

}#start nginx status

start() '`

echo -e pid is "\033[33m $! \033[0m"

echo $! >> /var/run/nginxstatus/nginxstatus.pid

}#stop nginx

stop()

status()

clean ()

case "$1" in

start)

start && exit 0

;;stop)

stop || exit 0

;;status)

status

;;clean)

clean

;;*)

echo $"usage: $0 "

exit 2

esac

exit $?

使用方法:

[root@zhongbo ~]# /etc/init.d/nginxstatus start

starting nginxstatus: [ ok ]

pid is 166534

會生成下面的狀態檔案,週期為2s一更新

[root@zhongbo ~]# ll /var/log/nginx/*xx.log

-rw-r--r-- 1 root root 7 feb 23 00:25 /var/log/nginx/2xx.log

-rw-r--r-- 1 root root 6 feb 23 00:25 /var/log/nginx/3xx.log

-rw-r--r-- 1 root root 7 feb 23 00:25 /var/log/nginx/4xx.log

-rw-r--r-- 1 root root 6 feb 23 00:25 /var/log/nginx/5xx.log

[root@zhongbo ~]# /etc/init.d/nginxstatus status

2xx:21

3xx:1

4xx:10

5xx:0

[root@zhongbo ~]# /etc/init.d/nginxstatus stop

stop nginxstatus collect [ ok ]

[root@zhongbo ~]# /etc/init.d/nginxstatus clean

clean /var/log/nginx/access.log [ ok ]

這個操作會清空/var/log/nginx/access.log日誌的內容重新統計

這個會在後期根據需求進行優化

nginx狀態監控

通過檢視nginx的併發連線,我們可以更清除的知道 的負載情況。nginx併發檢視有兩種方法 之所以這麼說,是因為筆者只知道兩種 一種是通過web介面,一種是通過命令,web檢視要比命令檢視顯示的結果精確一些。下面介紹這兩種檢視方法 no1 通過瀏覽器檢視 通過web介面檢視時nginx需要開啟st...

nginx狀態監控

通過檢視nginx的併發連線,我們可以更清除的知道 的負載情況。nginx併發檢視有兩種方法 之所以這麼說,是因為筆者只知道兩種 一種是通過web介面,一種是通過命令,web檢視要比命令檢視顯示的結果精確一些。下面介紹這兩種檢視方法 no1 通過瀏覽器檢視 通過web介面檢視時nginx需要開啟st...

nginx狀態監控

通過檢視nginx的併發連線,我們可以更清除的知道 的負載情況。nginx併發檢視有兩種方法 之所以這麼說,是因為筆者只知道兩種 一種是通過web介面,一種是通過命令,web檢視要比命令檢視顯示的結果精確一些。下面介紹這兩種檢視方法 no1 通過瀏覽器檢視 通過web介面檢視時nginx需要開啟st...