goaccess 是轻量实时的命令行 web 日志分析工具,支持 nginx 日志解析、交互式终端报告、html 导出及实时监控,无需数据库或 web 服务,几秒即可生成 pv/uv、热门 url、ip、状态码等核心指标。

GoAccess 是一款轻量、实时、命令行界面的 Web 日志分析工具,特别适合快速查看 Nginx 访问日志的核心指标(如 PV/UV、热门 URL、来源 IP、状态码、浏览器分布等),无需部署数据库或 Web 服务。只要日志格式正确、权限到位,几秒就能生成可交互的终端报告。
确认 Nginx 日志格式并配置 GoAccess 识别
GoAccess 默认支持 Common Log Format (CLF) 和 Combined Log Format,而 Nginx 默认的 log_format combined 基本兼容。但为避免解析失败,建议显式指定格式:
- 查看你的 Nginx 配置中
access_log对应的log_format,例如:
对应 GoAccess 的解析参数为:
-
%h:客户端 IP;%^:跳过破折号和远程用户(-);%d:%t拆解时间字段;%r:请求行;%s:状态码;%b:响应体字节数;%R:Referer;%u:User-Agent - 如果日志含毫秒(如
$msec)或使用了自定义字段(如$request_time),需在格式串中添加对应占位符,并启用--real-time-html或自定义解析器
一键生成终端实时报告(最常用场景)
直接运行以下命令,即可进入交互式终端界面,支持键盘导航、排序、筛选:
goaccess access.log -f /var/log/nginx/access.log --log-format=COMBINED- 默认识别
COMBINED格式(等价于 Apache 的 Combined),适用于大多数 Nginx 配置 - 按
q退出,o展开/折叠模块,g跳转到顶部,G到底部,/搜索关键词(如搜索 502 状态码) - 按
1–9可快速切换不同统计视图(如 1=概览,3=请求URL,4=IP地址,6=状态码,8=用户代理)
导出 HTML 报告供分享或存档
适合生成快照报告发给同事或定期归档:
goaccess access.log -f /var/log/nginx/access.log --log-format=COMBINED -o report.html --real-time-html-
-o report.html输出静态 HTML;加--real-time-html后,该 HTML 会自动轮询新日志(需配合--ws-url=ws://your-server:7890和后台 WebSocket 服务) - 若只需静态页,去掉
--real-time-html即可,打开report.html即可见完整可视化面板,含图表、表格、可排序列 - 支持中文需确保系统 locale 为 UTF-8(如
export LANG=en_US.UTF-8),且日志中 Referer/User-Agent 不含乱码
小技巧提升效率
日常使用中几个实用操作:
- 分析最近 1 小时日志:
tail -n 10000 /var/log/nginx/access.log | goaccess -f - --log-format=COMBINED - 过滤特定状态码(如只看 5xx):
awk '$9 ~ /^5/ {print}' access.log | goaccess -f - --log-format=COMBINED - 监控实时日志流:
tail -f /var/log/nginx/access.log | goaccess -f - --log-format=COMBINED(Ctrl+C 停止) - 保存常用参数为别名:
alias nglog='goaccess -f /var/log/nginx/access.log --log-format=COMBINED'











