1. 程式人生 > >Nginx日誌統計

Nginx日誌統計

nginx

1)按每小時切割Nginx訪問日誌,並且將日誌自動上傳至FTP服務器;

#!/bin/bash

#auto mv nginx log shell

#by author xiaoming

S_LOG=/usr/local/nginx/logs/access.log

D_LOG=/data/backup/`date +%Y%m%d%H%M`

echo -e "\033[32mPlease wait start cutshell scripts...\033[0m"

sleep 2

if [ ! -d $D_LOG ];then

mkdir -p $D_LOG

fi

mv $S_LOG $D_LOG

kill -USR1 `cat/usr/local/nginx/logs/nginx.pid`

echo"-----------------------------------"

echo "The Nginx log Cutting Successfully"

if [ $? -eq 0 ];then

ftp -n << EOF

open x.x.x.x

useradmin admin

binary #使用二進制

cd/home/admin #進入ftp服務器目錄

lcd$D_LOG #進入本地目錄

putaccess.log

close

bye

EOF

fi

if [ $? -eq 0 ];then

echo "Put the ftp is successfully"

else

echo "It is not successfully"

fi

2)分析Nginx日誌,統計網站的IP、UV、PV及早上9點-10點的訪問排前20的URL,並將IP和URL均打印出來;

1)統計網站的IP

awk ‘{print $1}‘ access_20170804.log | sort| uniq -c | sort -nr | wc -l

統計獨立IP00:00-24:00內相同IP地址只被計算一次,網站優化的朋友最關心這個

2)統計網站的UV

awk ‘{print $11}‘ access_20170804.log |sort | uniq -c | sort -nr | wc -l

UV(Unique Visitor):獨立訪客,將每個獨立上網電腦(以cookie為依據)視為一位訪客,一天之內(00:00-24:00),訪問您網站的訪客數量。一天之內相同cookie的訪問只被計算1

3)統計網站的PV

awk ‘{print $7}‘ access_20170804.log | wc-l

PVPage View):訪問量,即頁面瀏覽量或者點擊量,用戶每次對網站的訪問均被記錄1次。用戶對同一頁面的多次訪問,訪問量值累計

4)統計早上9-10點的訪問排前20URL,並將IPURL均打印出來

sed -n "/2017:09:00/,/2017:10:00/"paccess_20170804.log | sort | uniq -c | sort -nr | head -20 | awk ‘{print$2,$12}‘

3)自動每天統計Nginx日誌,打印訪問時間大於5秒的URL,並且把相關信息通過WEB表格線上展示出來,通過瀏覽器可以訪問該數據;
(WEB表格展示內容包括:編號、客戶端IP、訪問URL、訪問狀態碼、訪問時間、備註信息等)

#!/bin/bash

#by author xiaoming

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

NGINX_FILES=/usr/local/nginx/logs/access_20170804.log

NGINX_HTML=/usr/local/nginx/html/index.html

cat>$NGINX_HTML<<EOF

<html>

<body>

<meta charset="UTF-8">

<center><h1>北京時間:`date+%Y%m%d\ %H:%M`Nginx請求時間</h1></center>

<table border="1">

<tr>

<td>編號</td>

<td>IP Address</td>

<td>Nginx URL</td>

<td>狀態碼</td>

<td>處理時間</td>

<td>備註信息</td>

</tr>

EOF

i=0

awk ‘{if($NF>5) print $0}‘ $NGINX_FILES>tmp.html

while read line

do

NUM1=`echo $line | awk ‘{print $1}‘`

NUM2=`echo $line | awk ‘{print $11}‘`

NUM3=`echo $line | awk ‘{print $9}‘`

NUM4=`echo $line | awk ‘{print $4}‘ | sed "s/\[//g"`

i=`expr $i + 1`

echo "

<tr>

<td>$i</td>

<td>$NUM1</td>

<td>$NUM2</td>

<td>$NUM3</td>

<td>$NUM4</td>

<td></td>

</tr> " >>$NGINX_HTML

done <tmp.html

cat>>$NGINX_HTML<<EOF

</table>

</body>

</html>

EOF


本文出自 “蠟筆xiao馨” 博客,謝絕轉載!

Nginx日誌統計