利用GoAccess图形化分析Nginx访问日志

安装 使用编译安装的方式

$ wget http://tar.goaccess.io/goaccess-1.2.tar.gz $ tar -xzvf goaccess-1.2.tar.gz $ cd goaccess-1.2/ $ ./configure --prefix=/usr/local/goaccess --enable-utf8 --enable-geoip=legacy --with-openssl $ make # make install

编译时会遇到两个问题
Q1: configure: error: * Missing development files for the GeoIP library
这是geaccess根据来访ip定位的库,如果没按的话,会报以上错误。解决如下:
$ wget https://github.com/maxmind/geoip-api-c/releases/download/v1.6.11/GeoIP-1.6.11.tar.gz $ tar -xzvf GeoIP-1.6.11.tar.gz $ cd GeoIP-1.6.11 $ ./configure $ make # make install

如果需要
Q2: configure: error: * Missing development libraries for ncursesw
【利用GoAccess图形化分析Nginx访问日志】启用--enable-utf8后,需要安装 ncursesw
$ sudo apt-get install libncursesw5-dev

添加软连接
$ sudo ln -s /usr/local/goaccess/bin/goaccess /usr/local/bin/goaccess

测试成功
$ goaccess --vGoAccess - 1.2. For more details visit: http://goaccess.io Copyright (C) 2009-2016 by Gerardo Orellana

配置 将 /usr/local/goaccess/etc/goaccess.conf 文件中的以下配置取消注释,这一步的目的是为了适配Nginx日志格式
time-format %H:%M:%S date-format %d/%b/%Y log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"

接下来就可以使用了。
使用 输出到终端且生成一个可交互的报告:
goaccess access.log

生成一份 HTML 报告:
goaccess access.log -a -o report.html

支持实时解析和过滤。例如:需要通过监控实时日志来快速诊断问题:
tail -f access.log | goaccess -

如果没有配置 goaccess.conf 也可以在命令时追加 --time-format='%H:%M:%S' --date-format='%d/%b/%Y' --log-format=COMBINED 来设定
指定日期到现在($文件末尾)的日志信息,日志中需存在此时间
sed -n '/26\/Apr\/2020/,$ p' access.log | goaccess -a -

查看指定日期时间到现在($文件末尾)的日志信息,日志中需存在此时间
sed -n '/26\/Apr\/2020:15:11:17/,$ p' access.log | goaccess -a -

如果你担心 goaccess 占用服务器资源,你也可以本机用过 ssh 分析日志
ssh root@server 'cat /home/wwwlogs/access.log' | goaccess -a -

更多用法
PS:
  1. goaccess 手册中有详细的参数说明请仔细阅读;
  2. 如果不想装 goaccess, 可以参考这篇文章使用 https://www.cnblogs.com/coolw...
参考文章
https://www.goaccess.cc/
https://www.cnblogs.com/zkfop...
https://segmentfault.com/a/11...

    推荐阅读