goaccess 是轻量级开源实时 web 日志分析工具,支持直接解析 nginx combined 格式日志,通过配置日志路径、时间格式、字段分隔符并启用 --real-time-html 与 -f 参数,可实现实时 html 报表秒级更新。

GoAccess 是一款轻量级、开源的实时 Web 日志分析工具,支持直接解析 Nginx 默认日志格式(如 combined),无需预处理或数据库即可生成终端内或 HTML 格式的可视化报表。要实现实时生成可视化流量报表,关键在于正确配置日志路径、时间格式、字段分隔符,并启用实时监控模式。
确认 Nginx 日志格式与 GoAccess 兼容
GoAccess 默认支持 Nginx 的 log_format combined(即标准 Apache 风格日志)。确保你的 nginx.conf 中 access_log 使用的是该格式:
log_format combined '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
access_log /var/log/nginx/access.log combined;
如果自定义了日志格式(比如加了 $request_time 或 JSON),需在 GoAccess 配置中手动指定解析规则,否则会报错或丢数据。
安装并运行 GoAccess 实时分析
以 Ubuntu/Debian 为例:
通过 yarn-threads-cli 与 Threads(Meta)交互。当用户想要阅读首页动态、点赞、收藏的帖子或特定帖子时使用;查看...
- 安装:
sudo apt install goaccess(推荐用官网源安装最新版,避免旧版本不支持 HTTP/2 或新字段) - 实时终端查看:
goaccess /var/log/nginx/access.log -c→ 按提示选择日志格式(通常选 1. Nginx) - 生成实时 HTML 报表:
goaccess /var/log/nginx/access.log --log-format=COMBINED --real-time-html --ws-url=ws://localhost:7890 --output=/var/www/html/report.html
注意:--real-time-html 启用 WebSocket 实时刷新,需额外运行 goaccess --real-time-html --port=7890 启动内置 WebSocket 服务;浏览器访问 report.html 即可看到动态更新的图表。
让报表持续监听新增日志(tail-f 模式)
GoAccess 默认只读一次日志文件。要实现“实时”(即随 Nginx 写入新日志而自动更新),必须加上 --log-file + --watch 或直接使用 -f 参数:
- 推荐命令(后台运行):
goaccess /var/log/nginx/access.log -f --log-format=COMBINED --real-time-html --ws-url=ws://localhost:7890 --output=/var/www/html/report.html --port=7890 -
-f表示持续监听文件末尾(类似tail -f),配合--real-time-html可做到秒级更新 - 若日志按天轮转(如
access.log.1),建议配合logrotate的copytruncate或使用goaccess --log-file指向管道(如tail -F输出)
常见问题与优化建议
遇到空白页、连接失败或解析错误,优先检查:
- 浏览器控制台是否报 WebSocket 连接拒绝?→ 确认
--ws-url和--port一致,且端口未被防火墙拦截 - HTML 页面无数据?→ 查看 GoAccess 启动终端是否有 “Invalid log format” 提示,核对
log_format是否含特殊字符(如双引号未转义) - 想过滤特定路径或状态码?可在启动时加
--filter-host、--filter-status=404等参数,或通过交互式终端按o进入筛选菜单 - 生产环境建议用反向代理(如 Nginx)为
/report.html和/ws路径添加 HTTPS 和基础认证,避免报表暴露在公网










