最近想用goaccess来分析下nginx日志,但是苦于nginx日志配置格式不是按照正常格式来的,完全是我们按照自己的需求来写的,所以导致goaccess分析不了,需要自己重新定义下格式;但是网上虽然介绍goaccess的很多,但是大多都是就重避轻,将格式的自定义忽略掉,因此我就来把自定义这块说下,希望能够帮助到大家。
首先附上goaccess的官方使用说明及参数介绍,直接安装官方文档来配置才最省事。
http://goaccess.io/manual.php#synopsis
1.安装
yum install glib2 glib2-devel GeoIP-devel ncurses-devel
下载源码文件goaccess-0.7.1.tar.gz并编译安装
cd /usr/local/src
tar -zxvf goaccess-0.7.1.tar.gz
cd /usr/local/src/goaccess-0.7.1
./configure –enalbe-geoip –enable-utf8
make && make install
2.下面我们就可以直接使用了
goaccess -f access.20141215-17.log -H -M -a
输入命令后,会出现一个提示框,如下:
我们只需要选定适合nginx日志的第三行的格式,选定后“Log Format”会有相应的日志格式出现,我们只需在此基础上编辑或重新按照我们日志的格式来重新定义即可;而日志格式就直接用“Date Format”中定义的即可,下面我用我的nginx日志格式为例来具体介绍下。
nginx日志格式:
log_format main ‘$time_local - $upstream_addr $server_addr:$server_port ‘
‘$request_method $uri $args ‘
‘- $remote_addr $server_protocol [$http_user_agent] [$http_cookie] $http_referer ‘
‘$host $status 0 0 $bytes_sent $request_length 0‘
‘"$upstream_cache_status"‘;
nginx日志内容为:
10/Dec/2014:16:54:59 +0800 - - 192.168.3.124:80 GET /1.html - - 192.168.3.123 HTTP/1.0 [ApacheBench/2.3] [-] - 192.168.3.124 200 0 0 235 87 0 "-"
我自定义的“Log Format”为:
%d:%^:%^:%^ %^ %^ %^ %^:%^ %m %r %^ %^ %h %H [%u] [%^] %R %^ %s %^ %^ %^ %^ %^ "%^"
其中 %^为忽略此字段
%d为年月日
(1)%d为调用“Date Format”中设定的日期格式,10/Dec/2014
%d:%^:%^:%^对应日志中 10/Dec/2014:16:54:59
%d:%^:%^:%^ %^对应日志中 10/Dec/2014:16:54:59 +0800,也就是配置文件中的$time_local字段
(2)所有的 - 用%^,表示忽略此字段,下面就不再重复
$upstream_addr用%^,表示忽略此字段
$server_addr:$server_port用%^:%^,表示忽略这两个字段,注意保留配置文件中的冒号“:”
(3) GET 用%m,表示$request_method,也就是get,post,head等方法
(4) /1.html用%r,表示$uri 请求的内容
(5) $args用%^,表示忽略此字段
(6)192.168.3.123 用%h,表示$remote_addr 客户端ip地址
(7)HTTP/1.0 用%H,表示$server_protocol
(8) [ApacheBench/2.3]用[%u] ,表示[$http_user_agent] ,注意保留配置文件中的[ ]
(9)[$http_cookie],用[%^],表示忽略此字段,注意保留配置文件中的[ ]
(10)-用%R,表示$http_referer,虽然内容为空,但不能用%^忽略掉字段
(11)200用%s,表示$status,状态码为200
(12)后面的字段全都忽略,用%^,注意有几个字段就用几个%^,注意保留配置文件中的“ ”
上面也就是$time_local字段需要特别注意下,少一段字段就可能导致goaccess分析出的日志有很大区别,例如我少字段后导致无法分析文件和分析出的文件中“Failed Requests 233390” 和总共的请求数差不多,影响我们分析。
设置完毕后,我们就可以回车,让goaccess正常工作了:
快捷键说明:
数字1-9依次对应1-9个模块
0表示第10个模块
shift+1 表示第11个模块
选定模块后,“o”键可以进入模块,查看详细内容
j和k键是在进入模块后,上下选择具体的行
q键退出当前模块和goaccess
好了,就让我们来根据自己的日志格式来查看吧。如有不清楚的参数,直接查看官网文档说明。