说明:统计网站访问情况的方法有很多。
1、最常见的是添加站长统计代码实现,比如:cnzz站长统计:http://www.cnzz.com/ 51la站长统计:https://www.51.la/ 百度站长统计:https://tongji.baidu.com/等
2、本次将介绍在通过linux shell命令查看Nginx访问日志中的访问情况,比如访问IP、统计UV、统计PV、访问最多的URL页面、访问最频繁的IP等情况。
之前也有类似教程可参考:https://blog.tag.gg/showinfo-3-36165-0.html
常见说明:
什么是UV:
即:独立访客(Unique Visitor)可以理解成访问某网站的电脑的数量,访问您网站的一台电脑客户端为一个访客。00:00-24:00内相同的客户端只被计算一次。
什么是PV:
即:访问量(Page View)页面浏览量或点击量,用户每次刷新即被计算一次,PV反映的是浏览某网站的页面数,所以同一个页面每刷新一次也算一次。PV并不是页面的来访者数量,而是网站被访问的页面数量。
什么是访问者IP:
即:指独立IP数(Internet Protocol)是指1天内多少个独立的IP浏览了页面,即统计不同的IP浏览用户数量。同一IP不管访问了几个页面,独立IP数均为1;不同的IP浏览页面,计数会加1。 同一个局域网下的多台电脑访问,则被记录为一个独立IP访问者。如果用户不断更换IP,则有被多次统计。
1、通过IP统计UV:
输出结果:awk '{print $1}' blog.tag.gg.log | sort | uniq -c | wc -l
2、通过访问URL统计PV:[root@blog_tag_gg wwwlogs]# awk '{print $1}' blog.tag.gg.log | sort | uniq -c | wc -l
3566377
输出结果:awk '{print $7}' blog.tag.gg.log | wc -l
3、获取访问最多的URL[root@blog_tag_gg wwwlogs]# awk '{print $7}' blog.tag.gg.log | wc -l
6521565
输出结果:awk '{print $7}' blog.tag.gg.log | sort | uniq -c | sort -n -k 1 -r | more
4、获取访问最频繁的前20个IP地址。[root@blog_tag_gg wwwlogs]# awk '{print $7}' blog.tag.gg.log | sort | uniq -c | sort -n -k 1 -r | more
561235 /favicon.ico
454656 /css/iconfont.ttf
468465 /d/file/p/2019/11-18/e8e397189f8b1d40212a634c1042b711.jpg
498456 /robots.txt
54651 /showinfo-7-36256-0.html
44612 /showinfo-36-33717-0.html
44610 /showinfo-36-2985-0.html
......
输出结果:awk '{print $1}' blog.tag.gg.log | sort | uniq -c | sort -n -k 1 -r | head -20
5、通过时间段统计查看日志:[root@blog_tag_gg wwwlogs]# awk '{print $1}' blog.tag.gg.log | sort | uniq -c | sort -n -k 1 -r | head -20
1037 152.32.185.190
251 219.234.4.52
165 61.52.132.188
164 203.119.160.27
140 66.249.69.214
134 3.223.183.74
131 182.119.163.19
112 171.8.171.84
110 54.156.8.33
106 1.192.241.172
方法1:用sed命令:
输出结果:cat blog.tag.gg.log | sed -n '/31\/Dec\/2022:[01-23]/p' | more
方法2:用grep命令:[root@blog_tag_gg wwwlogs]# cat blog.tag.gg.log | sed -n '/31\/Dec\/2022:[01-23]/p' | more
152.32.185.190 - - [31/Dec/2022:10:00:03 +0800] "GET //showinfo-36-30805-0.html HTTP/1.0" 200 72707 "https://blog.tag.gg" "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.5304.115 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
1.192.246.143 - - [31/Dec/2022:10:00:04 +0800] "GET /showinfo-36-28050-0.html HTTP/1.1" 200 14895 "https://blog.tag.gg/tags-%E8%80%81%E5%AD%97%E5%8F%B7-0.html" "Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Mobile Safari/537.36"
输出结果:grep '31\/Dec\/2022:[01-23]' blog.tag.gg.log |more
[root@blog_tag_gg wwwlogs]# grep '31\/Dec\/2022:[01-23]' blog.tag.gg.log |more6、获取当日的PV和UV
66.249.69.214 - - [31/Dec/2022:00:00:04 +0800] "GET /tags-%E8%B0%B7%E7%99%BE%E4%BC%98-0.html HTTP/1.1" 200 12078 "-" "Mo
zilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.5304.115 Mob
ile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
66.249.69.218 - - [31/Dec/2022:00:00:05 +0800] "GET /e/tags/?tagid=4471 HTTP/1.1" 200 11579 "-" "Mozilla/5.0 (Linux; And
roid 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.5304.115 Mobile Safari/537.36 (co
mpatible; Googlebot/2.1; +http://www.google.com/bot.html)"
PV:
输出结果:cat blog.tag.gg.log | sed -n /`date "+%d\/%b\/%Y"`/p | awk '{print $7}' | sort | wc -l
UV:[root@blog_tag_gg wwwlogs]# cat blog.tag.gg.log | sed -n /`date "+%d\/%b\/%Y"`/p | awk '{print $7}' | sort | wc -l
55803
输出结果:cat blog.tag.gg.log | sed -n /`date "+%d\/%b\/%Y"`/p |awk '{print $1}' | sort|uniq -c | wc -l
如果使用以上这两个命令发现统计不出来任何数据时,就要检查一下,系统的语言变量LANG是否配置成中文,如果是则需要配置成英文,这时在执行pv和uv命令就可以统计出来了。[root@blog_tag_gg wwwlogs]# cat blog.tag.gg.log | sed -n /`date "+%d\/%b\/%Y"`/p |awk '{print $1}' | sort|uniq -c | wc -l
3773
7、获取最耗时的请求时间、urlexportLANG="en_US.UTF-8"
获取前十个,若是全部,可以将| head -10去掉。
输出结果:cat blog.tag.gg.log | awk '{print $4,$7,$NF}' | awk -F '"' '{print $1,$2,$3}' | sort -k3 -rn | head -10
8、获取每分钟的请求数量[root@blog_tag_gg wwwlogs]# cat blog.tag.gg.log | awk '{print $4,$7,$NF}' | awk -F '"' '{print $1,$2,$3}' | sort -k3 -rn | head -10
[31/Dec/2022:00:02:00 /showinfo-36-20609-0.html 360SE)
[31/Dec/2022:10:34:08 /css/fontawesome-webfont.woff2?v=4.7.0 7
[31/Dec/2022:10:34:06 /e/tags/?tagid=12231 7
[31/Dec/2022:10:34:06 /e/member/login/loginjs.php 7
[31/Dec/2022:03:13:45 /showinfo-36-21260-0.html 6.0)
[31/Dec/2022:02:01:39 / 3.5.21022)
[31/Dec/2022:11:56:03 /favicon.ico 1.0
[31/Dec/2022:10:48:27 /e/member/login/loginjs.php 1.0
[31/Dec/2022:10:48:27 / 1.0
[31/Dec/2022:10:47:58 /e/member/login/loginjs.php 1.0
输出结果:cat blog.tag.gg.log | awk '{print substr($4,14,5)}' | uniq -c | awk '{print $2","$1}'
[root@blog_tag_gg wwwlogs]# cat access.log | awk '{print substr($4,14,5)}' | uniq -c | awk '{print $2","$1}' |more可以输出到csv格式文件中
19:06,1
19:10,6
19:11,2
20:54,1
02:38,2
02:54,1
03:20,1
04:52,1
05:17,4
09:08,1
10:40,1
输出结果:cat blog.tag.gg.log| awk '{print substr($4,14,5)}' | uniq -c | awk '{print $2","$1}' > blog.tag.gg.csv
9、查看某个时间段之间的ip访问个数[root@blog_tag_gg wwwlogs]# cat blog.tag.gg.log| awk '{print substr($4,14,5)}' | uniq -c | awk '{print $2","$1}' > acces
s.csv
[root@blog_tag_gg wwwlogs]# ll
total 207748
-rw-r--r-- 1 root root 8843 Dec 31 14:42 access.csv
例如查看10点到19点的访问ip数
输出结果:grep "2022:1[0-9]" blog.tag.gg.log | awk '{ips[$1]+=1} END{for(ip in ips) print ips[ip],ip}' | sort -nr | wc -l
查看10点到19点之间的ip访问数>=50的ip[root@blog_tag_gg wwwlogs]# grep "2022:1[0-9]" blog.tag.gg.log | awk '{ips[$1]+=1} END{for(ip in ips) print ips[ip],ip}' | sort -nr | wc -l
1604
输出结果:grep '2022:1[0-19]' blog.tag.gg.log | awk '{ips[$1]+=1}END{for(ip in ips) if(ips[ip]>=50) print ips[ip],ip}' | sort -nr
10、查看某一个IP访问了哪些页面:[root@blog_tag_gg wwwlogs]# grep '2022:1[0-19]' blog.tag.gg.log | awk '{ips[$1]+=1}END{for(ip in ips) if(ips[ip]>=50) print ips[ip],ip}' | sort -nr
195 203.119.160.27
89 66.249.69.214
83 152.32.185.190
51 66.249.69.216
输出结果:grep ^66.249.69.216 blog.tag.gg.log| awk '{print $1,$7}'
11、查看某一个页面被访问的次数:[root@blog_tag_gg wwwlogs]# grep ^66.249.69.216 blog.tag.gg.log| awk '{print $1,$7}'
66.249.69.216 /showinfo-36-16942-0.html
66.249.69.216 /e/extend/lgyPl2.0/api/record.php?orderby=0&id=29118&classid=36
66.249.69.216 /tags-%E5%B9%BF%E5%91%8A%E6%B4%BB%E5%8A%A8%E8%B7%9F%E8%B8%AA-0.html
66.249.69.216 /showinfo-3-36243-0.html
66.249.69.216 /tags-%E5%8A%A0%E6%B9%BF%E5%99%A8-0.html
66.249.69.216 /tags-etagid13860-5.html
66.249.69.216 /tags-%E7%BD%91%E7%AB%99-37.html
66.249.69.216 /showinfo-36-23525-0.html
66.249.69.216 /showinfo-36-21804-0.html
66.249.69.216 /showinfo-8-35798-0.html
输出结果:grep "/index.php" blog.tag.gg.log | wc -l
12、统计网站流量(G)[root@blog_tag_gg wwwlogs]# grep "/index.php" blog.tag.gg.log | wc -l
46546
输出结果:cat blog.tag.gg.log |awk '{sum+=$10} END {print sum/1024/1024/1024}'
[root@blog_tag_gg wwwlogs]# cat blog.tag.gg.log |awk '{sum+=$10} END {print sum/1024/1024/1024}'
0.799466
文章评论 本文章有个评论