GoAccess是一个用C语言编写的Web日志分析工具,具有快速、高效、漂亮且支持多种Web服务端特性的且仍在保持快速进化的特点。它不仅可以在终端展现Web Server的日志分析结果,也可以将结果输出成为具有现代外观的HTML展示页面。

- 09 北京怀柔 日出东方凯宾斯基酒店
功能
- 完全实时:所有指标在终端上每 200 毫秒更新一次,在 HTML 输出上每秒更新一次。
- 跟踪应用程序响应时间:跟踪服务请求所需的时候间。如果你想跟踪减慢了网站速度的网页,则非常有用。
- 访问者:按小时或日期确定最慢运行的请求的点击量、访问者数、带宽数和指标。
- 按虚拟主机的度量标准:如果有多个虚拟主机(
Server),它提供了一个面板,可显示哪些虚拟主机正在消耗大部分 Web 服务器资源。
安装
Goaccess现在已经可以在主流Linux发行版中直接安装了。当然,你也可以获取它的源代码,根据实际需要进行编译部署。
编译
# 默认编译参数 # 下载源码安装 $ wget https://tar.goaccess.io/goaccess-1. 9. 3. tar.gz $ tar -xzvf goaccess-1. 9. 3. tar.gz $ cd goaccess-1. 9. 3/ $ ./configure --enable-utf8 --enable-geoip=mmdb $ make # make install
# git拉取源码安装 $ git clone https://github.com/allinurl/goaccess.git $ cd goaccess $ autoreconf -fi $ ./configure --enable-utf8 --enable-geoip=mmdb $ make # make install
|
包管理
# Fedora 或者 开启epel库 yum install goaccess # Ubuntu apt-get install goaccess
|
Docker
docker pull allinurl/goaccess
# 输出静态页面 cat access.log | docker run --rm -i -e LANG=$LANG allinurl/goaccess -a -o html --log-format COMBINED - > report.html # 动态实时显示 tail -F access.log | docker run -p 7890:7890 --rm -i -e LANG=$LANG allinurl/goaccess -a -o html --log-format COMBINED --real-time-html - > report.html
|
使用
配置参数
# 需要配置的参数 time-format %H:%M:%S date-format %d/%b/%Y log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u" geoip-database /usr/share/GeoIP/dbip-country-lite-2024-11. mmdb
|
需要注意的是地图展示,需要下载mmdb地理信息包。其默认配置表中的地理信息数据库是商用的。因为我们其实没有那么高的需求,使用免费版本即可。下载链接如下:DB-IP国别信息数据库。额外注意,下载的时候候需要点击同意它的使用授权。
效果示意:

终端使用
# 使用tab键来切换标签页 goaccess -c /var/log/access.log
|
- 可以按照日志格式进行输出,可以看到有命令格式提示

- 页面展示

输出页面
# 输出默认界面 goaccess access.log -o report.html --log-format=COMBINED
# 输出中文界面 LC_TIME="zh_CN. UTF-8" bash -c 'goaccess access.log --log-format=COMBINED -o report.html '
# 指定格式输出到指定页面 # -a 指定列出user-agents信息 # -d 输出IP解析信息 # -p 指定配置文件 # -f 指定输入原始日志文件 # -o 指定输出展示页面文件 goaccess -a -d -f /var/log/nginx/blog.access.log -o /opt/blog/source/html/access.html
# 多个日志同时输出 goaccess access.log access.log. 1 access.log. 2 -o report.html --log-format=COMBINED cat access.log. 2 | goaccess access.log access.log. 1 -
# 日志压缩包的输出 zcat access.log.*. gz | goaccess access.log -
|

实时输出
# 将goaccess作为后台进程来持续实时输出 goaccess access.log -o report.html --log-format=COMBINED --real-time-html --daemonize # 指定使用其他端口 goaccess access.log -o report.html --real-time-html --daemonize --port=9870 # 指定其他服务器的goaccess来进行分析 ssh -n root@server 'tail -f /var/log/apache2/access.log' | goaccess - # 多个网卡,指定其中一个或指定仅本地访问 goaccess access.log -o report.html --real-time-html --addr=127. 0. 0. 1
|