GoAccess是什么?
GoAccess是一款开源、实时,运行在命令行终端下的web日志分析工具。该工具提供快速、多样的HTTP状态统计,可以令管理员不再纠结于统计各类数据,和繁杂的指令以及一大堆管道/正则表达式说byebye。

功能一览
- 生成统计数据,带宽统计等
- 每个请求的时间统计
- 最高访问ip
- 请求的文件统计
- 请求的静态文件、图片、flash、js文件等
- 各HTTP状态码统计
- Hosts,反向DNS,IP所在地
- 操作系统
- 浏览器/蜘蛛
- 引用的网站
- 引用的URLs
- 关键词组
- 地理位置 (大陆、国家、城市)
- 可输出JSON或CSV
- 各种的颜色主题
- 支持大容量数据且支持大容量数据的持续分析
- 支持IPv6
- 可生成HTML报告
开始使用
1 2 3 4 5
| wget http://tar./goaccess-0.8.1.tar.gz tar -xzvf goaccess-0.8.1.tar.gz cd goaccess-0.8.1/ ./configure --enable-geoip --enable-utf8 make && make install
|
Debian/Ubuntu
1
| # apt-get install goaccess
|
CentOS/Fedora
OSX
用Access来分析Nginx日志
然后就可以开始使用GoAccess了。
首先,进入nginx的日志目录,如/var/log/nginx ,输入如下命令让goaccess打开指定文件:
打开之后会跳出选择日志文件类型的界面:

Nginx日志是属于Combined Log Format (XLF/ELF)类型的,所以我们选择第三个。用上下光标移动,空格选中,回车确定。
进入了主界面:

键盘操作:
F1 或h :帮助
F5 :刷新主界面
q :退出程序/当前窗口/折叠当前模块
o 或Enter :展开选中的模块或窗口
0-9 以及Shift + 0 :将选中的模块或窗口激活
k 和j :模块内部移动
c :修改配色
^f 和^b :模块中上下滚屏
tab shift+tab :前后切换模块
s :模块内部排序选择
/ :在所有模块中搜索(支持正则)
n :找到下个匹配
g 和G :跳到第一项/最后一项
命令行下相关:
在使用goaccess命令行前,我们必须配置日志文件的解析格式,因为此处没有界面来让你选择日志格式了。
看一下日志格式:
1 2
| $tail access.log 219.137.254.254 - - [12/Jul/2014:14:55:04 +0800] "GET / HTTP/1.1" 301 185 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36" "-"
|
如果你的日志格式和我一样,那么就不用自己折腾了。请跳过下一小段。
如果你的日志格式和我不同,那么请去http:///man#custom-log 看一下格式的基本规范。以我的log为例:
ip - - [日期] "请求类型" 服务器响应 大小 来源 浏览器信息 "代理"
%h %^[%d:%^] "%r" %s %b "%R" "%u" %^
各项代表的意思可以去http:///man#custom-log 查看。
现在配置一下:
如果有这行:
1 2
| #NCSA Combined Log Format with Virtual Host #log-format %^:%^ %h %^[%d:%^] "%r" %s %b "%R" "%u"
|
那就去掉下面log-format前的# 吧。
如果没有,就写一行。
log-format %h %^[%d:%^] "%r" %s %b "%R" "%u" %^
找到
1 2
| #Any Apache log date format #date-format %d/%b/%Y
|
取消掉date-format的注释。
使用GoAccess生成html报告:
1
| # goaccess -f access.log -a > report.html
|
生成json报告:
1
| goaccess -f access.log -a -d -o json > report.json
|
CSV:
1
| goaccess -f access.log -o csv > report.csv
|
由于nginx会自动压缩日志,一下命令可以直接分析压缩后的日志:
1 2 3
| zcat access.log.*.gz | goaccess #或者 zcat -f access.log* | goaccess
|
支持各种管道:
1
| sed -n '/11\/Dec\/2014/,$ p' access.log | goaccess -a
|
想分析下百度/google对你网站爬了些啥内容?Easy:
1
| grep -E "(google|baidu)"access.log | goaccess -a
|
嗯,辛勤的谷歌今天已经来我的网站爬了4个页面了。:)
有哪些不足?
只支持maxmind的地理数据库。当然maxmind也有免费版本。
其他的缺点实在想不到了。因为支持管道,所以一切都那么方便.
|