GoAccess安装及配置
之前网站在阿里云虚拟主机,自带日志分析工具,利用的是开源的AWStats,当时觉得还挺好用,后来转用服务器后,其配置对与不懂编程的人来说有点难度,后来又发现了一个开源的日志分析工具GoAccess,安装配置都很简单,数据报告页面也比AWStats更好看,对于我来说唯一的缺点就是在数据报告页面不支持选择制定日期,不过这都是小事。
安装步骤
如果服务器为 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
配置使用
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"
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(填写要生成报告的路径)'
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.分析多个.gz的压缩存档
如果网站日志切割成多个压缩包,可以用zcat命令,如下:
zcat access.log.*.gz | goaccess -o report.html
日志名称支持通配符,可实现查看某月某天等数据,比较灵活。(建议提前按天分隔日志)
5.过滤指定ip地址
如果不想在数据报告页面看到自己本地的访问数据,可以在配置文件里填写以下内容,多个ip就添加多行。
exclude-ip 127.0.0.1
或者在终端指令后面加上--exclude-ip=xx.xx.xx.xx
即可。
6.查看指定ip数据
终端指令如下
grep 'xx.xx.xx.xx' access.log | goaccess -o report.html
grep 不止可以查看 ip,可以查看日志里任何想看的数据。grep 是一个在 Unix 和类 Unix 操作系统中常用的命令行工具,用于搜索文件中匹配指定模式的行。比如查看指定状态码数据grep "404"
或grep 404
,而且grep还支持正则写法,可以让指令更精准。
7.查看指定状态码数据
如果是查看 gz 压缩包的日志,写法略有不同,要先有日志数据,然后通过管道符将 zcat 的输出作为 grep 的输入,具体如下:
zcat access.log.*.gz | grep 404 | goaccess -o report.html
8.查看最近N天数据
在终端指令后面加上--keep-last 7
即可。数字为天数,可任意修改。
更多功能和设置,请查看 GoAccess官方 或 GoAccess中文网 。