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系统配置中文语言
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中文网 。