使用goaccess分析nginx日志

nginx(读作Engine-X)是现在最流行的负载均衡和反向代理服务器之一。如果你是一名中小微型网站的开发运维人员,很可能像我们一样,仅Nginx每天就会产生上百M甚至数以十G的日志文件。如果没有出什么错误,在被logrotate定期分割并滚动删除以前,这些日志文件可能都不会被看上一眼。

实际上,Nginx日志文件可以记录的信息相当丰富,而且格式可以定制,考虑到$time_local请求时间字段几乎必有,这是一个典型的基于文件的时间序列数据库。Nginx日志被删除以前,或许我们可以想想,其中是否蕴含着未知的金矿等待挖掘?

goaccess安装

1
2
3
4
5
6
7
yum install GeoIP GeoIP-devel GeoIP-data
wget http://tar.goaccess.io/goaccess-1.0.2.tar.gz
tar -xzvf goaccess-1.0.2.tar.gz
cd goaccess-1.0.2/
./configure --prefix=/usr/local/goaccess --enable-geoip --enable-utf8
make
make install

配置

nginx日志格式

1
2
3
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" "$uri" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';

对应的format

1
2
3
4
5
 tee -a /usr/local/goaccess/etc/goaccess.conf << EOF
time-format %H:%M:%S
date-format %d/%b/%Y
log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"
EOF

在终端显示

1
goaccess -f nginx.log

如果之前没有在goaccess.conf设置默认的format会弹出这个窗口让你选择日志格式化的配置

image

这里我们选择第一个空格然后回车就可以了

生成HTML报表

1
goaccess   -f nginx.log   > test.html

生成的HTML报表类似下面这样
image

后续

goaceess弄好之后可以配合linux定时任务发送nginx访问报表邮件到对应的邮箱。又可以好好装B了~~~
这里有个官方的Demo,可以瞧瞧
http://rt.goaccess.io/?20161005202141

参考:

https://goaccess.io/

http://www.cnblogs.com/yjf512/p/3640346.html

坚持原创技术分享,您的支持将鼓励我继续创作!