面试的时候一定会被面到的问题是:给出web服务器的访问日志,请写一个脚本来统计访问前10的IP有哪些?访问前10的请求有哪些?当你领略过goaccess之后,你就明白,这些问题,除了考验你的脚本背诵记忆能力以外,唯一的作用只有装A或者装C了。
对于nginx日志分析,有很多工具,衡量好坏的标准大概就是三快:安装快,解析快,上手快。满足这三点的goaccess确实是居家必备良药。
话说这个标题其实有点委屈GoAccess了,它是一个日志分析工具,并不只是为nginx使用的。你也可以用它来分析apache,IIS的日志,甚至你自己写的web服务,当然前提是你需要定义好解析的日志格式。诚如见到一个美女,你会一眼喜欢上它的几个功能有:
1 解析速度快
2 使用简单
3 能生成html,json,csv
安装GoAccess如果你是CentOS,使用yum:
yum install goaccess
如果你的yum找不到goaccess,就先安装epel
wget http://dl.Fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm sudo rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm
GoAccess有两种使用方法,一种是直接在控制台显示和操作。
当你要立马分析出今天早上10点到12点的IP访问情况的时候,直接在控制台敲命令是最快的。
另外一种就是生成html文件或者数据文件。
如果你希望每天管理的服务器集群能给你发送一个昨天访问日志的情况,这个就是不二选择了。
控制台使用GoAccessgoaccess的参数:
-f <input-file> : 需要解析的日志文件 -a --agent-list : 在host模块是不是能点击IP出现这个IP的user-agentlist,就是出现如图的功能 -c --conf-dialog: 是否显示log和format配置对话窗口。就是下面的这个窗口
这个窗口有很多可以研究的。
首先,goaccess支持的日志格式有哪些?
Common Log Format (CLF)
通用日志格式,例子:
127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326 主机 用户身份 作者 [日期] "请求方法 请求路径 请求协议" 状态码 字节数