Nginx日志分析利器GoAccess
Nginx的日志/var/log/nginx/可以直接用tail去看,或者用更高级的GoAccess去看,另外GoAccess也可以生成HTML报告:
http://goaccess.prosoftcorp.com/goaccess_html_report.html
GoAccess 在 CentOS 上的安装方法:
1. 需要安装 GeoIP, ncurses, glib2, 一句搞定
yum -y install glib2 glib2-devel ncurses ncurses-devel geoIP geoIP-devel
2. 下载 GoAccess 解压编译安装
# wget http://jaist.dl.sourceforge.net/project/goaccess/0.6.1/goaccess-0.6.1.tar.gz
# tar zxvf goaccess-0.6.1.tar.gz
# cd goaccess-0.6.1
# ./configure –enable-geoip –enable-utf8
# make && make install
# make clean
3. GoAccess 使用方法
进入 Nginx 日志所在目录
命令行直接查看
# goaccess -f access.log -c -a
出来图了,日志格式选 NCSA
也可以生成 HTML 报告
goaccess -f /var/log/nginx/access.log -a > report.html
zcat -f /var/log/nginx/access.log* | goaccess -a > report.html
zcat access.log.1.gz | 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
最让我兴奋的功能是goaccess支持排序!这样你就可以tab到request这个模块,而后按s,跳出来的对话框选择“Time Serverd” “DESC” 这样你就可以非常清楚的知道你的网站是哪些页面响应很慢了!
附下我的NGINX日志格式:
log_format main ’$remote_addr – $remote_user [$time_local] “$request” ‘
‘$status $body_bytes_sent “$http_referer” ‘
‘”$http_user_agent” $request_time‘;
再附下我的~/.goaccessrc配置:
color_scheme 0
date_format %d/%b/%Y
log_format %h %^[%d:%^] “%r” %s %b “%R” “%u” %T
goaccess高级设定:
for Apache HTTP Server 预设设定:
CustomLog logs/access_log common可选Common Log Format (CLF)
CustomLog logs/access_log combined可选NCSA Combined Log Formatfor Lighttpd mod_accesslog预设格式 : (需于GoAccess设定画面手动编辑Log Format)
Log Format: %h %^ %^ [%d:%^] “%r” %s %b “%R” “%u”
Date Format: %d/%b/%Y完成设定后产生~/.goaccessrc,日后执行goaccess -f /var/log/httpd/access_log不会再跳出这个设定画面;若要修改设定,可加上-c参数,例如: goaccess -c -f / var/log/httpd/access_log或直接编辑设定档案vi ~/.goaccessrc
基本操作
# goaccess -f /var/log/httpd/access_log
t:回到顶端
b:卷到最末
q:关闭视窗或离开程式
上下方向键:卷动画面
数字键0 ~ 9,接着按英文字母o或右方向键:查看某项目的细节(*注)*注: 0 表示第十项; Shift + 1 表示第十一项
排除统计某来源IP
# goaccess -e 123.123.123.123 -f /var/log/httpd/access_log检视Host详细资料的时候显示来自该Host的User-Agents资讯
# goaccess -a -f /var/log/httpd/access_log产生HTML报表(静态报表)
# goaccess -a -f /var/log/httpd/access_log > result.html只统计来自某IP的记录
# grep ^123.123.123.123 /var/log/httpd/access_log | goaccess注:目前GoAccess无法即时统计pipe进来的资料,日后改版或许会补强这部份(Ref: man goaccess )