nginx(读作Engine-X)是现在最流行的负载均衡和反向代理服务器之一。如果你是一名中小微型网站的开发运维人员,很可能像我们一样,仅Nginx每天就会产生上百M甚至数以十G的日志文件。如果没有出什么错误,在被logrotate定期分割并滚动删除以前,这些日志文件可能都不会被看上一眼。
实际上,Nginx日志文件可以记录的信息相当丰富,而且格式可以定制,考虑到
$time_local
请求时间字段几乎必有,这是一个典型的基于文件的时间序列数据库。Nginx日志被删除以前,或许我们可以想想,其中是否蕴含着未知的金矿等待挖掘?
goaccess安装
1 | yum install GeoIP GeoIP-devel GeoIP-data |
配置
nginx日志格式1
2
3log_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会弹出这个窗口让你选择日志格式化的配置
这里我们选择第一个空格然后回车就可以了
生成HTML报表
1 | goaccess -f nginx.log > test.html |
生成的HTML报表类似下面这样
后续
goaceess弄好之后可以配合linux定时任务发送nginx访问报表邮件到对应的邮箱。又可以好好装B了~~~
这里有个官方的Demo,可以瞧瞧
http://rt.goaccess.io/?20161005202141
参考: