使用GoAccess分析Nginx访问日志

  GoAccess是一个Web服务器访问日志分析工具,可以通过CLI查看分析报告,或生成报告网页,更直观的分析。这里有一个GoAccess Demo,是关于呉真的博客的日志分析报告,是不是非常的酷炫。

安装

  这里以CentOS 7系统为例,EPEL源自带GoAccess的1.2版本,但是目前官方最新的是1.3版本,且仅1.3版本支持中文翻译,因此在这里考虑编译安装GoAccess。

  在编译GoAccess前需要先安装一些编译的依赖,完整的依赖列表,可以在这里找到。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 安装一些依赖
yum -y install ncurses-devel geoip-devel libmaxminddb-devel tokyocabinet-devel \
openssl-devel bzip2-devel

# 编译GoAccess
cd /usr/local/src
wget https://tar.goaccess.io/goaccess-1.3.tar.gz -O goaccess-1.3.tar.gz
tar -xzvf goaccess-1.3.tar.gz
cd goaccess-1.3

./configure --enable-utf8 \
--enable-geoip=legacy \
--with-openssl \
--enable-tcb=btree

make
make install

# 验证是否安装成功
goaccess -V
> GoAccess - 1.3.
> For more details visit: http://goaccess.io
> Copyright (C) 2009-2016 by Gerardo Orellana

配置

  使用GoAccess前需要确认你的Web服务器访问日志格式,如果你使用的是Nginx且没有修改配置的话,则默认格式为COMBINED。若要使生成的网页显示的语言为中文,需要设置环境变量LANG=zh_CN.UTF-8,因此我们考虑编写一个脚本来运行GoAccess,注意修改为你自己的日志路径、报告生成路径及日志格式。

1
2
3
4
5
6
7
8
9
#!/bin/sh

LOG_PATH=/var/log/nginx/access.log
REPORT_PATH=/usr/share/nginx/html/report.html
LOG_FORMAT=COMBINED

LANG=zh_CN.UTF-8

/usr/local/bin/goaccess $LOG_PATH -o $REPORT_PATH --log-format=$LOG_FORMAT > /dev/null 2>&1

  我们将其加入至crontab,使脚本可以定时执行,自动更新访问报告。

1
2
3
4
chmod +x goaccess.sh

# crontab
*/10 * * * * /your/path/goaccess.sh

参考文献