nginx站点访问量统计

PV、UV、IP是我们在运营和网站管理中常用的概念,那么这三个概念究竟是什么意思呢?
PV(访问量):即Page View,即页面浏览量或点击量,用户每次刷新即被计算一次。
UV(独立访客):即Unique Visitor,访问您网站的一台电脑客户端为一个访客。00:00-24:00内相同的客户端只被计算一次。
IP(独立IP):即Internet Protocol,指独立IP数。00:00-24:00内相同IP地址只被计算一次。

(1)、统计站点当天的PV和UV

统计当天某站点的每小时的访问量pv , 脚本如下:

1
2
3
4
#!/bin/bash
currTime=$(date "+%d/%b/%Y")    
var=`cat wms9145.access.log | grep $currTime | awk '{print substr($4, 14, 2)}' | uniq -c | awk '{print $2","$1}'`
echo $var

说明:date "+%d/%b/%Y" 是对当前日期进行格式化, 为了跟nginx 日志文件中的日期格式保持一致。

统计某站点当天总pv

1
2
3
4
5
#!/bin/bash
currTime=$(date "+%d/%b/%Y")
echo $currTime
var=`cat wms9145.access.log | grep $currTime | awk '{print $7}' | wc -l`
echo $var

统计某站点当天的uv

1
2
3
4
#!/bin/bash
currTime=$(date "+%d/%b/%Y")
var=`cat wms9145.access.log | grep $currTime | awk '{print $1}' |sort | uniq -c | wc -l`
echo $var

(2)、统计站点当前或历史访问量
先对网站访问日志进行按天切割,将历史日志存储到一个特定的目录下,并按日期做好归档。

脚本 /home/cutnginx.sh 内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/bin/bash
LOG_PATH=/usr/local/nginx/logs/oldlogs
CUR_LOG_PATH=/usr/local/nginx/logs
YESTERDAY=$(date +%F -d -1day)
mkdir $LOG_PATH/${YESTERDAY}
logfile=(wms9145.access.log)
i=0
while [[ i -lt ${#logfile[@]} ]];
do
mv $CUR_LOG_PATH/${logfile[i]}  $LOG_PATH/${YESTERDAY}/${YESTERDAY}_${logfile[i]}
let i++
done

kill -USR1 $(cat /usr/local/nginx/pid/nginx.pid)

find $LOG_PATH -name *.log -mtime +31 -exec rm -rf {} ;

任务计划
crontab -l
0 0 * * * /bin/bash /home/cutnginx.sh &>/dev/null

统计站点每小时的PV和某天的总PV,脚本如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/bin/bash
if [ -z $1 ];then
fullpath='/usr/local/nginx/logs/wms9145.access.log'
var=`cat $fullpath | awk '{print substr($4, 14, 2)}' | uniq -c | awk '{print $2","$1}'`
echo $var
else
if [ -d "$1" ]; then
currentDate=$1
fullpath=/usr/local/nginx/logs/oldlogs/$currentDate/$currentDate'_wms9145.access.log'
echo $fullpath
var=`awk '{print $7}' $fullpath | wc -l`
echo $var
else
echo -e "\033[41;37m the "$1" directory is not exists, "$1" must be an existing date directory!\033[0m"
fi
fi

脚本说明:
因站点访问日志每天0点做了切割处理, 则 /usr/local/nginx/logs/wms9145.access.log 为当天的日志(即从当天0点到目前的日志);
/usr/local/nginx/logs/oldlogs/ 下面有'年-月-日'格式的目录用来存储历史的日志文件;
直接执行脚本(不传递参数)则统计当天每个小时的PV情况,使用$1来传入日期来查询到特定日期的PV统计情况。

脚本执行结果:
nginx站点访问量统计

相关新闻

联系我们

全国服务热线

400-033-9553

电子邮件:admin@example.com
工作时间:09:00-17:00 周一至周五

在线客服
关注微信
关注微信
分享本页
返回顶部