GoAccess 最新版自编译与使用记录:从源码安装到实时 HTML 报表

按最新官方仓库整理 GoAccess 自编译与使用过程,侧重 Ubuntu 或 Debian 下从源码安装最新版、验证版本、生成 HTML 报表与实时查看的完整命令。

时间点按 2026-04-29 整理,当前官方 README 里给出的最新稳定版是 1.10.2

1. 先装编译依赖

1
2
3
sudo apt-get update
sudo apt-get install -y build-essential wget tar \
  libncurses-dev libmaxminddb-dev libssl-dev zlib1g-dev

2. 下载最新版源码包

1
2
3
4
cd /usr/local/src
sudo wget https://tar.goaccess.io/goaccess-1.10.2.tar.gz
sudo tar -xzvf goaccess-1.10.2.tar.gz
cd goaccess-1.10.2

3. 配置编译参数

1
sudo ./configure --enable-utf8 --enable-geoip=mmdb --with-zlib

如果你还想给实时 HTML 报表配 TLS,也可以改成:

1
sudo ./configure --enable-utf8 --enable-geoip=mmdb --with-zlib --with-openssl

4. 编译并安装

1
2
sudo make
sudo make install

5. 确认版本

1
2
goaccess --version
which goaccess

6. 直接看终端报表

Nginx 或 Apache 常见 combined 日志可以先这样跑:

1
goaccess /var/log/nginx/access.log --log-format=COMBINED

如果日志路径是 Apache:

1
goaccess /var/log/apache2/access.log --log-format=COMBINED

7. 生成静态 HTML 报表

1
2
3
4
goaccess /var/log/nginx/access.log \
  --log-format=COMBINED \
  -a \
  -o /usr/share/nginx/html/goaccess-report.html

输出到当前目录也可以:

1
2
3
4
goaccess /var/log/nginx/access.log \
  --log-format=COMBINED \
  -a \
  -o report.html

8. 生成实时 HTML 报表

1
2
3
4
5
goaccess /var/log/nginx/access.log \
  --log-format=COMBINED \
  -a \
  -o /usr/share/nginx/html/goaccess-report.html \
  --real-time-html

如果要改端口:

1
2
3
4
5
6
goaccess /var/log/nginx/access.log \
  --log-format=COMBINED \
  -a \
  -o /usr/share/nginx/html/goaccess-report.html \
  --real-time-html \
  --port=7891

如果只绑定本机:

1
2
3
4
5
6
goaccess /var/log/nginx/access.log \
  --log-format=COMBINED \
  -a \
  -o /usr/share/nginx/html/goaccess-report.html \
  --real-time-html \
  --addr=127.0.0.1

9. 持续追日志

1
tail -f /var/log/nginx/access.log | goaccess --log-format=COMBINED -

从文件开头开始并保持实时:

1
2
3
4
tail -f -n +0 /var/log/nginx/access.log | goaccess \
  --log-format=COMBINED \
  -o report.html \
  --real-time-html -

10. 只看某类请求

例如只看带 firefox 的请求:

1
2
tail -f /var/log/nginx/access.log | grep -i --line-buffered 'firefox' | goaccess \
  --log-format=COMBINED -

例如只看 5xx3xx

1
2
3
tail -f -n +0 /var/log/nginx/access.log | awk '$9~/3[0-9]{2}|5[0-9]{2}/' | goaccess \
  --log-format=COMBINED \
  -o out.html -

11. 多个日志一起分析

1
goaccess /var/log/nginx/access.log /var/log/nginx/access.log.1 --log-format=COMBINED

压缩和未压缩一起读:

1
zcat --force /var/log/nginx/access.log* | goaccess --log-format=COMBINED -

12. 开多线程

1
2
3
4
goaccess /var/log/nginx/access.log \
  --log-format=COMBINED \
  -o report.html \
  -j 4

加大 chunk:

1
2
3
4
5
goaccess /var/log/nginx/access.log \
  --log-format=COMBINED \
  -o report.html \
  -j 4 \
  --chunk-size=8192

13. 增量处理

先持久化一份旧日志:

1
goaccess /var/log/nginx/access.log.1 --log-format=COMBINED --persist

再追加当前日志:

1
goaccess /var/log/nginx/access.log --log-format=COMBINED --restore --persist

只读取已持久化数据:

1
goaccess --restore

14. 我自己会先跑的一组命令

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
sudo apt-get update
sudo apt-get install -y build-essential wget tar \
  libncurses-dev libmaxminddb-dev libssl-dev zlib1g-dev

cd /usr/local/src
sudo wget https://tar.goaccess.io/goaccess-1.10.2.tar.gz
sudo tar -xzvf goaccess-1.10.2.tar.gz
cd goaccess-1.10.2
sudo ./configure --enable-utf8 --enable-geoip=mmdb --with-zlib --with-openssl
sudo make
sudo make install

goaccess --version

goaccess /var/log/nginx/access.log \
  --log-format=COMBINED \
  -a \
  -o /usr/share/nginx/html/goaccess-report.html \
  --real-time-html

就这样。
如果你的目标很明确,其实只要把最新版源码编译好,再把 --log-format=COMBINED--real-time-html 这两个参数先跑通,后面基本就是围着日志路径、输出文件和端口在改。

记录并分享
使用 Hugo 构建
主题 StackJimmy 设计