GoAccess安装及使用说明汇总
之前网站在阿里云虚拟主机,自带日志分析工具,利用的是开源的AWStats,当时觉得还挺好用,后来转用服务器后,其配置对与不懂编程的人来说有点难度,后来又发现了一个开源的日志分析工具GoAccess,安装配置都很简单,数据报告页面也比AWStats更好看,对于我来说唯一的缺点就是在数据报告页面不支持选择指定日期,不过这都是小事,可以通过命令操作解决。
GoAccess的优势如下:数据报告页面好看、统计灵活、配置简单、占用资源低、没有后台进程、随用随查、前端页面也不用加载任何追踪代码、读取服务器日志统计数据更准确等等。
安装步骤
如果服务器为 Debian 或 Ubuntu,可直接在其官方仓库下载。为确保GoAccess是最新版本,请在终端输入以下命令:
1.添加 GoAccess 的官方 Debian/Ubuntu 仓库
wget -O - https://deb.goaccess.io/gnugpg.key | gpg --dearmor | sudo tee /usr/share/keyrings/goaccess.gpg >/dev/null
echo "deb [signed-by=/usr/share/keyrings/goaccess.gpg arch=$(dpkg --print-architecture)] https://deb.goaccess.io/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/goaccess.list
2.更新包列表
sudo apt-get update
3.安装 GoAccess
sudo apt-get install goaccess
更新 GoAccess 版本同理,重复操作以上步骤即可。
配置使用
1.匹配日志格式
在配置文件末尾添加如下代码,配置文件一般在/etc/goaccess/goaccess.conf
。
time-format %H:%M:%S
date-format %d/%b/%Y
log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"
不同的 Web 服务器通常有不同的默认日志格式,需要确保这些格式字符串与实际的 Web 服务器日志文件的格式完全匹配,GoAccess 才能正确地分析日志。以上设置是 Nginx 默认的日志格式,一般都通用。
2.生成报告
在终端输入以下命令
LANG=zh_CN.UTF-8 goaccess -f /www/wwwlogs/access.log(要分析的日志路径) -o /www/wwwlogs/index.html(填写要生成报告的路径)
注意:生成报告的路径,一定要提前把相应的文件夹和读写权限设置好。
如果 LANG=zh_CN.UTF-8 不起作用,可以尝试换成 LC_ALL=zh_CN.UTF-8 。
设置宝塔面板计划任务
LANG="zh_CN.UTF-8" bash -c 'goaccess -f /www/wwwlogs/access.log(要分析的日志路径) -o /www/wwwlogs/index.html(填写要生成报告的路径)'
如果你的服务器默认语言已经设置成中文,命令前面的LANG=zh_CN.UTF-8
可以不用写。服务器设置中文的方法见Debian系统配置中文语言
适合解压多日志文件-过滤爬虫,已实测,可正常运行。
#!/bin/bash
log_dir="/www/wwwlogs/history_backups/wangrufei.com"
output="/www/wwwlogs/index.html(填写要生成报告的路径)"
logs=""
for i in $(seq 0 6); do
d=$(date -d "$i day ago" +"%Y-%m-%d")
for f in "$log_dir"/wangrufei.com_access_"${d}"_*.log.gz; do
[ -e "$f" ] && logs="$logs $f"
done
done
if [ -n "$logs" ]; then
gzip -dc $logs > /tmp/all_logs.log
goaccess /tmp/all_logs.log -o "$output" --ignore-crawlers --date-format=%d/%b/%Y --time-format=%T
fi
终端添加定时任务(适合解压多日志文件,没测试)
在终端中运行 crontab -e
后,会打开一个文本编辑器(通常是 vi/vim
或 nano
,取决于系统配置)。
比如定时命令如下
55 23 * * * zcat /www/wwwlogs/access_2025-*.log.gz(要分析的日志路径) | goaccess -o /www/wwwlogs/index.html(填写要生成报告的路径) --keep-last 7 --ignore-crawlers
时间字段说明
55:分钟(第55分钟)
23:小时(23点,即晚上11点)
* * *:任意日、月、星期(每天执行)
以下是保存 crontab 文件的具体步骤,针对常见编辑器:
- 使用 vi/vim 编辑器保存
如果你的默认编辑器是 vi/vim
:
- 输入或粘贴你的命令。
- 按
Esc
键退出编辑模式。 - 输入
:wq
并按Enter
保存并退出。
注意:如果不想保存更改,输入 :q!
并按 Enter
退出。
- 使用 nano 编辑器保存
如果默认编辑器是 nano
:
- 输入或粘贴你的命令。
- 按
Ctrl + O
保存文件(会提示确认文件名,直接按Enter
)。 - 按
Ctrl + X
退出编辑器。
- 确认保存成功
- 运行以下命令检查 crontab 是否包含你的命令:
crontab -l
如果看不到,可能是以下原因:
- 未正确保存(例如直接关闭终端)。
- 使用了错误的用户(尝试
sudo crontab -l
检查 root 用户的 crontab)。 - 编辑器配置问题。
- 删除或修改
vi/vim: 将光标移动到该行,连续按 dd 即可删除当前行。
nano: 将光标移动到该行,按 Ctrl + K 即可删除当前行。
按照您使用的编辑器(vi/vim 或 nano)的保存方式保存并退出。
5.手动查看文件位置
文件目录在/var/spool/cron/crontabs/root
,不建议手动编辑改动。
3.查看报告
方法1:静态文件
在生成报告的目录里下载数据报告静态文件,在本地用浏览器打开查看。
方法2:在线查看
如果想利用域名直接输入地址查看数据报告,可以把生成报告的路径写到网站根目录里。
注意:如果生成的报告不是中文,请参考这篇文章Debian系统配置中文语言
4.特殊需求
1.过滤爬虫
如果想要在数据报告页面过滤爬虫,在生成报告的终端指令后面加上--ignore-crawlers
即可
2.只看爬虫
在生成报告的终端指令后面加上--crawlers-only
即可
3.显示ip归属地
如果想要在数据报告页面显示ip国家和城市,需要下载相应数据文件GeoLite2-City.mmdb,上传到服务器任意目录,然后把文件地址放到 GoAccess 配置文件即可。格式如下:
geoip /usr/share/GeoIP/GeoLite2-City.mmdb
4.输出html隐藏个别数据面板
添加后ip信息后,输出数据页会自动出现相关位置信息是地图分布面板。还会增加一个ASN面板,ASN是互联网服务提供商的信息,需要另外添加数据信息,没啥用,可直接隐藏该面板。操作如下。
在配置文件GoAccess配置文件末尾添加以下内容
ignore-panel ASN
或者在命令行后面加--ignore-panel ASN
也能隐藏,其他面板同理,在配置搜索ignore-panel
,找到相关的面板信息,删除前面的注释符号#
或者在命令行后面加--ignore-panel (面板名字)
均可隐藏。
5.分析多个.gz的压缩存档
如果网站日志切割成多个压缩包,可以用zcat命令,如下:
zcat access.log.*.gz | goaccess -o report.html
日志名称支持通配符,可实现查看某月某天等数据,比较灵活。(建议提前按天分隔日志)
6.过滤指定ip地址
如果不想在数据报告页面看到自己本地的访问数据,可以在配置文件里填写以下内容,多个ip就添加多行。
exclude-ip 127.0.0.1
或者在终端指令后面加上--exclude-ip=xx.xx.xx.xx
即可。
7.查看指定ip数据
终端指令如下
grep 'xx.xx.xx.xx' access.log | goaccess -o report.html
grep 不止可以查看 ip,可以查看日志里任何想看的数据。grep 是一个在 Unix 和类 Unix 操作系统中常用的命令行工具,用于搜索文件中匹配指定模式的行。比如查看指定状态码数据grep "404"
或grep 404
,而且grep还支持正则写法,可以让指令更精准。
8.查看指定状态码数据
如果是查看 gz 压缩包的日志,写法略有不同,要先有日志数据,然后通过管道符将 zcat 的输出作为 grep 的输入,具体如下:
zcat access.log.*.gz | grep 404 | goaccess -o report.html
9.查看最近N天数据
在终端指令后面加上--keep-last 7
即可。数字为天数,可任意修改。
更多功能和设置,请查看 GoAccess官方 或 GoAccess中文网 。