goaccess无需web服务或数据库,一条命令即可启动终端实时视图或导出交互式html报表;关键在于日志格式匹配(如apache用--log-format=combined)、时间格式同步(--date-format与--time-format)及运行模式选择(终端每200ms刷新或html静态/实时模式)。

GoAccess 不需要部署 Web 服务或数据库,一条命令就能启动终端实时视图,或导出带交互图表的 HTML 报表。关键在格式匹配、路径权限和模式选择——不是所有命令都能“开箱即用”,但正确组合后非常轻快。
确认日志格式并选对解析参数
Apache 默认使用 Combined Log Format,对应 GoAccess 的内置别名 --log-format=COMBINED。只要你的 apache2.conf 或虚拟主机中没改过 LogFormat,就直接用它,不用额外写复杂字符串。
时间戳必须同步声明:
--date-format='%d/%b/%Y'--time-format='%H:%M:%S'
如果日志里含时区(如 [10/Jan/2026:14:32:18 +0800]),无需加 %z——GoAccess 的 COMBINED 模式已自动兼容。
终端里秒级查看(适合快速排查)
进到日志目录后运行:
goaccess /var/log/apache2/access.log --log-format=COMBINED --date-format='%d/%b/%Y' --time-format='%H:%M:%S'
界面会每 200ms 刷新一次,按数字键切换模块(1=总览,2=URL 排行,3=IP 分布,4=浏览器,5=状态码),按 / 可搜索关键词,按 o 展开详情。
注意:此模式不依赖网络,也不生成文件,关掉终端就停止;适合 SSH 登录后随手看一眼当前流量热点或异常 404。
使用tbot机器ID身份文件配合tsh CLI,通过Teleport访问控制SSH登录托管主机或执行远程命令。
生成静态 HTML 报表(适合归档/汇报)
运行一次即可输出完整单页报告:
goaccess /var/log/apache2/access.log -o report.html --log-format=COMBINED
生成的 report.html 包含响应时间分布、访客地理热力(需额外配置 GeoIP)、HTTP 状态码饼图等,双击或拖入浏览器即可查看,支持筛选、排序、展开下钻。
小技巧:
- 加
--no-csv-summary减少冗余数据,加快加载 - 加
--real-time-html后需配合--port和tail -F才生效,单独加无效 - 中文显示问题?系统 locale 设为
zh_CN.UTF-8后重跑命令,报表标题和标签会自动变中文
实现浏览器自动刷新(近实时监控)
要让 HTML 页面随新日志动态更新,得靠管道推送 + WebSocket 服务:
sudo tail -F /var/log/apache2/access.log | goaccess -o /tmp/live.html --log-format=COMBINED --real-time-html --port=7890
执行后,在浏览器打开 http://localhost:7890,页面每秒拉取新解析结果。注意三点:
- 必须用
sudo或确保普通用户有日志读权限,否则tail -F失败 -
--real-time-html和--port缺一不可,漏掉就退化成静态页 - 该命令需常驻运行,建议用
screen或 systemd service 管理,避免断连










