GoAccess是一个开源且免费的网站日志分析和交互式WEB日志查看器,可在 Linux 系统的终端中或通过浏览器运行。使用它可让系统管理员视化的查看统计报告,这对于SEO以及运维来说非常有价值。
GoAccess支持几乎所有Web 日志格式,包含:Apache、Nginx、Amazon S3、Elastic Load Balancing、CloudFront、Caddy 等
本文环境:
- CentOS 7.5 64bit
- Nginx 1.20.1
- GoAccess v1.7.2
安装依赖
GoAccess可以仅依赖ncurses(CentOS一般默认安装了)
另外可选依赖项有:libmaxminddb、openssl、GeoIP等,其中libmaxminddb与GeoIP仅任选其一,推荐选择前者。
CentOS安装ncurses
yum install ncurses-devel
CentOS安装libmaxminddb
yum install libmaxminddb-devel
查看 openssl 版本号
openssl version
安装GoAccess
官网教程
$ wget https://tar.goaccess.io/goaccess-1.7.2.tar.gz
$ tar -xzvf goaccess-1.7.2.tar.gz
$ cd goaccess-1.7.2/
$ ./configure --enable-utf8 --enable-geoip=mmdb
$ make
$ make install
配置 Web 可视化页面
# 设置中文/英文 (二选一)
LANG="en_US.UTF-8"
LANG="zh_CN.UTF-8"
# goaccess [access.log 文件路径] -o [自行创建的用于存储HTML文件的目录中index.html路径] --log-format=COMBINED
goaccess /usr/local/nginx/logs/access.log -o /usr/local/nginx/html/report/index.html --log-format=COMBINED
自动刷新日志分析HTML
创建一个脚本goaccess.sh
vim /etc/init.d/goaccess.sh
输入脚本内容
脚本中需配置 goaccess 的路径,否则 /var/spool/mail/root 收到邮件提示:
/etc/init.d/goaccess:行4: goaccess: 未找到命令
参考:通过cron运行脚本时“找不到命令”
获取 goaccess 的完整路径
[root@sinolee /]# which goaccess
/usr/local/bin/goaccess
获取 $PATH
[root@sinolee /]# echo "$PATH"
/usr/local/bin:/usr/bin:/bin
脚本内容
#cat /etc/init.d/goaccess.sh
#!/bin/bash
export PATH="/usr/local/bin:/usr/bin:/bin"
LANG="zh_CN.UTF-8"
goaccess /usr/local/nginx/logs/access.log -o /usr/local/nginx/html/report/index.html --log-format=COMBINED
给.sh文件添加x执行权限
chmod u+x goaccess.sh
crontab -e
编辑将脚本加入到crontab中
# 自动刷新 Nginx 日志分析HTML 每小时刷新一次
0 * * * * /bin/bash /etc/init.d/goaccess
访问可视化界面
IP地址或域名/report/index.html
参考链接
- GoAccess进行网站日志分析的最新教程
- 通过cron运行脚本时“找不到命令”
ps:如有错误,欢迎批评指正,谢谢!