Nginx 日志分析工具 GoAccess centos 系统安装Goaccess 1. 需要安装 GeoIP, ncurses, glib2 #yum -y install glib2 glib2-devel ncurses ncurses-devel GeoIP GeoIP-devel 2.下载 GoAccess 解压编译安装 $ wget http://tar.goaccess.io/goaccess-1.2.tar.gz $ tar -xzvf goaccess-1.2.tar.gz $ cd goaccess-1.2/ $ ./configure --enable-utf8 --enable-geoip=legacy $ make # make install 3.使用 goaccess -d -f access.log -a > test.html 4.报错了要设置日志 GoAccess - version 1.2 - Dec 12 2017 15:56:52 Config file: /usr/local/etc/goaccess.conf Fatal error has occurred Error occured at: src/parser.c - parse_log - 2705 No time format was found on your conf file. 修改 /usr/local/etc/goaccess.conf 更改一下位置 time-format %H:%M:%S date-format %d/%b/%Y log-format 这三项取消注释 其中log-format 按照你nginx日志格式调整 如果是默认的就不用修改 下面贴出log-format的配置 I.log format默认是按照空格分隔日志信息的,所以,对于包含了特殊字符如空格等信息的字段,必须包含在“”里面。如字段request http_user_agent等 II. nginx日志格式里面,采用空格分隔,但是此处一定注意,只能用一个空格。当时我有个地方用了两个空格,直接导致goaccess结果出错。 III. nginx日志中的每一个字段都要和log format中的一一对应,如果log format中不需要nginx中的某一个信息,则用%^跳过该信息。 IV. 对于nginx日志中的每一个 -, log format都需要一个%^来跳过, 如果是“-”, 则用“%^” V. 如果nginx日志信息中有:, 则需要在log format中也显示出来。例如nginx日志中$time_local就包含了:,所以在log format的相应位置也是 [%d:%t %^]