Nginx入门教程(五)---访问日志简单分析,统计PV、UV等数据。
发布日期:2021-05-07 17:42:55 浏览次数:17 分类:精选文章

本文共 1243 字,大约阅读时间需要 4 分钟。

1. 概述

Nginx访问日志记录了所有请求的详细信息,默认存储在
nginx/logs/access.log。如果找不到日志文件,可以通过以下命令查询:
# find / -name "access.log"
简单查看日志内容:
less access.log
日志格式大致如下:
183.69.208.21 - - [16/May/2020:10:04:59 +0000] "GET / HTTP/1.1" 200 4230 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36"
主要包含IP、日期、HTTP方法、协议版本、状态码、设备信息等。以下基于
awk命令进行分析。

2. 具体分析

1. PV数

pv表示页面浏览次数,每次请求视为一次访问。统计PV数即统计文件行数:
wc -l access.log
结果:108544次访问。

2. 每天的PV数

将PV数按日期分组:
awk '{print substr($4, 2, 11)}' access.log | sort | uniq -c | sort -rn | head -n 10
结果: 1901 21/May/2020 1755 23/Jun/2020 1667 15/Jul/2020 ... 1274 01/Sep/2020

3. UV数

uv表示唯一访客数,以IP地址为唯一标识:
awk '{print $1}' access.log | sort | uniq | wc -l
结果:12354个唯一访客。

4. 每天的UV数

按日期和IP分组统计UV:
awk '{print substr($4, 2, 11) " " $1}' access.log | sort | uniq | awk '{uv[$1]++;next}END{for(date in uv) print uv[date] " " date}' | sort -rn | head -n 10
结果: 333 16/Oct/2020 321 12/Oct/2020 ...

5. 统计被访问最多的页面

筛选出特定路径的访问次数:
cat access.log | awk '{print $7}' | sort | uniq -c | grep post | sort -rn | head -n 10
结果: 783 /post/etcd/05-watch/ 565 /post/etcd/06-why-mvcc/ ...

3. 小结

主要使用了以下命令: -
wc统计文件行数、字数 -
cat查看文件内容 -
awk文本处理 -
sort排序 -
grep过滤 -
uniq去重 -
head控制输出行数 -
管道操作符结合多个命令
上一篇:史上最细gRPC(Go)入门教程(一)---Protobuf介绍及其编译原理
下一篇:Nginx系列(四)---反向代理与负载均衡

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年04月26日 20时59分48秒