Nginx日志统计

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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日志统计的主要内容,如果未能解决你的问题,请参考以下文章

Nginx日志统计

Nginx日志统计

通过nginx日志统计qps

多维度分析统计nginx访问日志

统计nginx日志

python统计nginx日志域名下载量