直接分析 apache access.log 可快速找出热门页面,核心是提取第7列请求路径并统计频次;需先确认日志格式,用 awk 提取、grep 过滤静态资源、sort/uniq 统计排序,再结合时间筛选或 goaccess 实时可视化分析。

直接分析 Apache 的 access.log 就能快速找出热门页面,核心是提取请求路径并统计频次。关键不在于工具多高级,而在于字段准确、过滤合理、结果可读。
确认日志格式再动手
Apache 默认使用 combined 或 common 格式,其中第 7 列(空格分隔)通常是请求的 URL 路径,例如:
192.168.1.100 - - [10/Jun/2026:14:22:33 +0800] "GET /blog/post.html HTTP/1.1" 200 1245
这条里 /blog/post.html 就是目标路径。运行前先用 head -1 /var/log/apache2/access.log 看一眼实际格式,避免字段数错。
用一行命令快速出结果
在 Debian/Ubuntu 上,日志通常位于 /var/log/apache2/access.log。执行以下命令即可列出访问最多的前 10 个页面:
awk '{print }' /var/log/apache2/access.log | grep -v '\.\(css\|js\|png\|jpg\|gif\|ico\|svg\)$' | sort | uniq -c | sort -nr | head -10
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
-
awk '{print $7}'提取请求路径 -
grep -v排除常见静态资源,让结果聚焦 HTML 页面 -
sort | uniq -c | sort -nr统计并按次数倒序排列 -
head -10只看 Top 10,避免刷屏
按日期或时间段筛选更精准
如果只想看某天的热门页,比如 2026-06-09:
grep '09/Jun/2026' /var/log/apache2/access.log | awk '{print $7}' | grep -v '\.\(css\|js\)$' | sort | uniq -c | sort -nr | head -10
注意:日志中时间格式是 [09/Jan/2026:15:30:22 +0800],所以匹配用 09/Jun/2026 即可,不用带方括号和具体时分秒。
进阶建议:用 GoAccess 实时看板
命令行适合快查,但想长期观察趋势或多人共享,推荐 GoAccess:
- 安装:
sudo apt install goaccess - 启动实时分析:
goaccess /var/log/apache2/access.log -c(选格式后回车) - 直接输出终端可视化界面,支持按 URL、IP、状态码等多维下钻
- 加
-o report.html --real-time-html还能生成可刷新的网页报表
它自动识别日志格式、忽略爬虫、支持 IPv6 和压缩日志,比手写脚本省心不少。










