提到web服务器就不得不说nginx。这款由俄罗斯人开发的小巧的web服务软件近几年来风靡大江南北;成为许多草根站长建设网站的首选。但由于历史原因,nginx在日志分析工具相较于传统的apache、lighthttp等要匮乏的多。
作为性能测试工程师的我,无论在性能分析还是在测试环境维护都离不开日志的分析,所以逼得我必须掌握日志分析的技巧,当然简单的命令必不可少,简单的分析命令足以搞定,但是作为比较复杂的命令分析命令还是有点力不从心,毕竟自己的shell脚本编写能力还没达到那种水平,下面我就介绍一款比较小巧的nginx日志分析工具:goaccess。
目前,这款软件支持Common Log Format (CLF) 和 Combined Log Format(XLF/ELF) 格式的日志。分析传统的apache格式日志当然毫无问题。同时,只要将nginx的日志格式定义为apache格式,对它的分析也不在话下(目前,redhat提供的nginx软件包默认日志格式和apache基本一致)
安装使用:
下载地址:http://download.csdn.net/detail/gzh0222/4230793
tar
zxvf goaccess-0.4.2.
tar
.gz
cd
goaccess-0.4.2
#启动ip归属地查询、和utf8编码格式支持
.
/configure
–enalbe-geoip –
enable
-utf8
make
&&
make
install
GoAccess的基本语法如下:
goaccess [ -b ][ -s ][ -e IP_ADDRESS][ - a ] <-f log_file >
参数说明:
用法示例:
最简单、常用的命令就是直接调用goaccess命令啦,不带任何影响效率的其他参数
goaccess –f access.log
如果需要查看其他信息,我们加入如下参数以显示HTTP响应代码、用户代理、流量消耗
goaccess –f access.log –s –a –b
如果你觉得这样还不能满足你的需求。别急,goaccess支持linux管道(Pipe),我们可以将日志文件预处理后,再交给goaccess去分析。
zcat access.log.1.gz | goaccess
让goaccess去分析已经打包压缩好的日志文件。
或者干脆分析目前下所有日志
zcat access.log* | goaccess
如果需要分析某天的日志,例如10月5号那天的日志,我们让linux管道命令来大显身手^_^。
sed -n ‘/05\/Dec\/2010/,$ p’ access.log | goaccess -s –b
分析从11月5号到12月5号一个月内的日志
sed -n ‘/5\/Nov\/2010/,/5\/Dec\/2010/ p’ access.log | goaccess -s –b
当你不希望在服务器上安装goaccess程序,可以通过调用本地的goaccess程序来分析服务器上的日志(很神奇吧^_^):
ssh user@server ‘cat /var/log/apache2/access.log’ | goaccess -s -a -b
大部分服务器对日志分析的速度都比较敏感,如果在分析日志时造成服务器其他服务的不稳定,那还不如不用呢。据GoAccess官方的说法:使用AMD Sempron 2.31GHz的CPU+2GB内存,开启GoAccess所有功能,该软件每秒可以处理10万行日志。当然,如果使用的CPU更强劲,拥有更多的内存,GoAccess的表现会更加出色。