[nginx]accesslog分析

nginx 产生的Log一般在nginx.conf中进行配置,如默认的Log格式:

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  logs/access.log  main;

一条典型的accesslog:
101.226.166.254 – – [21/Oct/2013:20:34:28 +0800] “GET /movie_cat.php?year=2013 HTTP/1.1” 200 5209 “http://www.baidu.com” “Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MDDR; .NET4.0C; .NET4.0E; .NET CLR 1.1.4322; Tablet PC 2.0); 360Spider”
下面我们来说说这一行记录的意思:
1)101.226.166.254:(用户IP)
2)[21/Oct/2013:20:34:28 +0800]:(访问时间)
3)GET:http请求方式,有GET和POST两种
4)/movie_cat.php?year=2013:当前访问的网页是动态网页,movie_cat.php即请求的后台接口,year=2013为具体接口的参数
5)200:服务状态,200表示正常,常见的还有,301永久重定向、4XX表示请求出错、5XX服务器内部错误
6)5209:传送字节数为5209,单位为byte
7)”http://www.baidu.com”:refer:即当前页面的上一个网页
8)”Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MDDR; .NET4.0C; .NET4.0E; .NET CLR 1.1.4322; Tablet PC 2.0); 360Spider”: agent字段:通常用来记录操作系统、浏览器版本、浏览器内核等信息

通过某些脚本分析Log,就可以获取全站的PV,某个链接的PV,然后进行统计分析

另外某些工具如:goAccess能够很好的分析日志,并且产生可视化的Html图表,比较直观好用
在 CentOS 6.5 上安装编译 GoAccess 时需要的工具和库:
# yum groupinstall ‘Development Tools’
# yum install glib2 glib2-devel ncurses-devel
在 Ubuntu 12.04 上安装编译 GoAccess 时需要的工具和库:
$ sudo apt-get install build-essential
$ sudo apt-get install libglib2.0-dev libncursesw5-dev
下载 GoAccess 的源代码、编译和安装:
$ wget http://downloads.sourceforge.net/project/goaccess/0.7.1/goaccess-0.7.1.tar.gz
$ tar -xzvf goaccess-0.7.1.tar.gz
$ cd goaccess-0.7.1/
$ ./configure –enable-geoip –enable-utf8
$ make
$ sudo make install
最后
vim ~/.goaccessrc
写入

date_format %d/%b/%Y:%T %z
log_format %h - - [%d] "%r" %s %b "%R" "%u"

使用方法:
生成html: goaccess -f access.log -a > report.html
直接查看: goaccess -f access.log

发表评论

电子邮件地址不会被公开。 必填项已用*标注


*