一眼看懂网站访问情况:GoAccess日志分析实战

一眼看懂网站访问情况:GoAccess日志分析实战

你是不是也这样:想看看今天网站有多少人访问,哪个页面最火,有没有人在刷你——但面对Nginx的access.log,只会用tail -f看实时滚动,或者用grep统计一下IP?

其实有个工具,装上一分钟,打开浏览器,你的网站访问情况就变成一张张清晰的图表。它叫GoAccess。


先看一个数据

一个日IP 5000的网站,access.log每天增长几十MB。一个月下来,上千万条日志记录。你想在里面找出“哪个页面最慢”“哪个IP在疯狂刷你”,靠手动grep?

有个哥们儿跟我说,他之前用cat access.log | awk '{print $1}' | sort | uniq -c | sort -nr统计IP,每次要跑好几分钟。后来换了GoAccess,命令一敲,报告秒出,还能在浏览器里点着看。

他说:“原来我以前的统计方式,是在用手工挖井。”


GoAccess是什么?

一句话:把Nginx/Apache的日志变成可视化图表的工具

你给它一个access.log,它给你一份HTML报告。里面有什么?

  • 每天/每小时的访问量趋势
  • 热门页面排名(哪个文章最火)
  • 访客IP排名(谁来得最多)
  • HTTP状态码分布(有没有人刷出404)
  • 请求耗时分布(哪些页面慢)
  • 来源网站、浏览器类型、操作系统……

全部自动生成,不用配数据库,不用写代码。

官网https://goaccess.io


一行命令装完

Ubuntu/Debian:

bash

sudo apt update
sudo apt install goaccess -y

CentOS/RHEL:

bash

sudo yum install epel-release -y
sudo yum install goaccess -y

装完之后验证一下:

bash

goaccess --version

看到版本号,说明装好了。


第一个报告:终端里直接看

假设你的Nginx日志在/var/log/nginx/access.log

bash

goaccess /var/log/nginx/access.log

然后会问你“请选择日志格式”,选Common Log Format (CLF)或者NCSA Combined Log Format (COMBINED),看你Nginx配置的是哪种。

选完,终端直接变成一个交互式仪表盘。上下箭头翻页,左右切换面板。CPU、内存、访问量、热门URL……都在里面了。

反常识点:你不需要离开终端就能看报告。对于SSH连服务器的人来说,这太方便了。


第二个报告:生成HTML,浏览器里看

终端报告适合自己看,但如果你想分享给老板、存成文档,或者就是喜欢鼠标点着看,用HTML输出。

bash

goaccess /var/log/nginx/access.log -o /var/www/html/report.html --log-format=COMBINED

然后打开浏览器,访问 http://你的服务器IP/report.html,就能看到图表面板了。

如果Nginx默认网站目录不是/var/www/html,改成你自己的路径就行。


第三个报告:实时模式,自动刷新

如果你想让报告自动刷新,用--real-time-html参数:

bash

goaccess /var/log/nginx/access.log -o /var/www/html/report.html --log-format=COMBINED --real-time-html

每次有人访问你的网站,报告里的数字会实时更新。像个监控大屏,很适合挂在大屏幕上看着玩。


报告里能看到什么?我帮你翻译一下

打开报告,你会看到十几个面板。我挑几个最重要的说:

1. 总体概览:总请求数、总带宽、唯一访客数(基于IP)。一眼知道网站今天热不热。

2. 请求量趋势:按小时/天的柱状图。能看出几点是高峰期——如果你的电商站晚上10点访问量最高,就知道什么时候该备足资源。

3. 热门URL:哪些页面被访问最多。你的爆款文章是哪篇,一目了然。

4. 访客IP排名:哪个IP来得最多。如果某个陌生IP排第一,十有八九是爬虫,可以考虑封掉。

5. 状态码分布:200是正常,404是页面不存在,500是服务器错误。如果某天404突然暴涨,说明有爬虫在乱扫。

6. 请求耗时:哪些页面响应慢。看到某个API耗时超过1秒,就该去优化了。

7. 来源网站:用户从哪跳过来的。如果某个论坛给你带来大量流量,你就知道该去那里多互动。


实战场景1:网站被攻击,找出元凶

有一天你的网站突然变慢,带宽打满。你怀疑被CC攻击了。

打开GoAccess报告,看访客IP排名。如果某个IP的请求量是第二名的几十倍,大概率就是它。

拿到IP后,用防火墙封掉:

bash

iptables -A INPUT -s 123.456.789.0 -j DROP

再看报告,流量恢复正常。搞定。


实战场景2:网站变慢,找出慢页面

你的用户反映“有时候打开很慢”。不是每次都慢,很难复现。

GoAccess的请求耗时面板会告诉你:哪些请求的平均响应时间最长。

看到/api/order/list耗时2.3秒,其他页面都正常。你就知道问题出在这个接口上,去优化它。

反常识点:很多人一遇到慢就怪服务器,其实是某个页面或者某个SQL写得烂。日志会告诉你真相。


实战场景3:看SEO效果

你上周发了篇文章,想看看有没有带来流量。

打开热门URL面板,看新文章的访问量排名。如果进了前十,说明SEO有效。如果排不进去,就知道标题或者推广渠道有问题。


让GoAccess每天自动生成报告

你不想每天手动敲命令?用crontab。

写个脚本/root/gen_report.sh

bash

#!/bin/bash
goaccess /var/log/nginx/access.log -o /var/www/html/report.html --log-format=COMBINED

给执行权限:

bash

chmod +x /root/gen_report.sh

加到crontab,每天凌晨1点跑一次:

bash

0 1 * * * /root/gen_report.sh

每天早上打开浏览器,就能看到昨天的访问报告了。


最后一句:日志不是废纸,是金矿

很多人把服务器日志当成“出事了才翻”的东西。但其实它是你网站的体检报告、用户行为记录、性能监控仪。

GoAccess就是那个把“废纸”变成“金矿”的工具。装一个试试,你会惊讶:原来我的网站每天有这么多人看?原来这个页面这么慢?原来这个IP一直在偷我图片?

数据不会骗人。你的网站到底怎么样,日志里全写着。你只需要一把看得懂的钥匙。

知识库

网站备份与恢复实战:数据库+文件,一份脚本全搞定

2026-4-8 14:10:04

知识库

WebSocket 心跳失败率暴增应对指南:精细化监控与自动化告警实战

2025-7-22 11:38:57

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧