GoAccess 是一款开源的网站日志实时分析工具。可以读取和解析 Apache/Nginx/Lighttpd 的访问日志文件 access log,然后以更友好的方式把统计信息显示出来。统计的内容包括:访问概况、动态页面请求、静态页面请求(如图片、样式表、脚本等)、访客排名,访客使用的操作系统,访客使用的浏览器,来路域名,404 错误,搜索爬虫,搜索关键词等等。
GoAccess的安装在goaccess官网 上有详细的教程,推荐使用APT/YUM的方式进行安装,比较简单。按照官网的教程试了一下,发现功能确实很强大,分析速度也很快,我使用:

1
zcat access*.gz|cat access.log -|goaccess -a >/var/www/tongji.html

来分析所有的nginx日志,几十万条日志分分秒就分析完了,并且生成了精美的html页面,很方便,如果你想查看当天的日志,可以用:

1
cat access.log|goaccess -a >/home/log/tongji.html

需要说明的是在终端模式下直接运行

1
goaccess -f /var/log/nginx/access.log 

这样的方式是实时分析的,但是生成html页面的方式不是实时的,所以我们需要定期更新,可以加入cron定期运行,比如这样:

1
2
MAILTO=""
50 */1 * * *  cat /var/log/nginx/access.log|goaccess -a >/var/www/log/tongji-`date +%Y%m%d`.html

可以每小时更新一次,至于全部的日志我们可以每天分析一次:

1
50 23 * * * zcat access*.gz|cat access.log -|goaccess -a >/var/www/log/tongji.html

这个工具有一点我不太满意的地方就是搜索关键词它只能查到google搜索的,其他的都统计不到,希望未来能支持更多的搜索引擎吧。
我们可以新建一个静态站点来专门放置goaccess生成的html文件:

server {
	listen 80;
	server_name log.yoursite.com;
#	index index.htm index.html;
	autoindex on;
	autoindex_exact_size off;
	autoindex_localtime on;
	auth_basic "Restricted";
        auth_basic_user_file /etc/nginx/passwd;
	root /var/www/log/;
	access_log off;
	error_log off.log;
}

里面的/etc/nginx/passwd文件是用apache的htpasswd生成的,里面记录的是一个用户名和密码,因为这个站点我们不想让谁都能看到,所以用了auth_basic目录加密了,如果没有安装apache,也可以用其他的方法生成的,具体可以搜一下。

OK,以后我们就可以访问log.yoursite.com来查看网站的日志,可以时时掌握自己的网站。
PS:无意中看到404中有很多有趣的东西,呵呵,网上的闲人不少啊。 2014-08-16_123109