本文由ilanniweb提供友情赞助,首发于烂泥行天下

想要获得更多的文章,可以关注我的微信ilanniweb

昨天把nginx的日志进行了切割,关于如何切割nginx日志,可以查看《烂泥:切割nginx日志》这篇文章。

今天打算分析下nginx日志,要分析nginx日志,我们可以通过shell脚本和第三方软件awstats进行分析,在此我们选择的是通过第三方软件awstats进行分析。

要使用awstats分析nginx日志,我们要安装awstats,而在安装awstats之前,我们需要先来介绍下awstats是什么?

一、awstats是什么

awstats是一个免费非常简洁而且强大有个性的基于Perl语言的WEB日志分析工具。

它可以统计网站的如下信息:

1):访问量、访问次数、页面浏览量、点击数、数据流量等。

2):精确到每月、每日、每小时的数据。

3):访问者国家以及IP。

4):Robots/Spiders的统计。

5):访客持续时间。

6):对不同files type的统计信息。

7):Pages-URL的统计。

8):访客操作系统浏览器等信息。

9):其它信息(搜索关键字等等)

二、准备工作

在介绍完awstats是什么之后,我们再来介绍下安装awstats之前的准备工作。

2.1 安装GeoIP

GeoIP主要用于定位访问者所属的国家以及城市的数据库,可以使用如下命令进行安装:

yum -y install GeoIP GeoIP-devel perl-Geo-IP

查看GeoIP安装的相关组件,如下:

rpm -ql GeoIP-GeoLite-data

rpm -ql GeoIP-GeoLite-data-extra

如果是ubuntu系统,我们可以使用如下命令进行安装:

sudo apt-get -y install geoip-bin geoip-database-contrib php5-geoip python-geoip python-geoip-dbg libgeoip1 libgeoip-dev

在上述截图的安装的文件中,我们只需要关注GeoIP.dat和GeoLiteCity.dat这两个文件即可,其中GeoIP.dat用于定位访问者所属的国家,而GeoLiteCity.dat用于定位访问者所属的城市。

2.2 安装httpd-tools

一般站长都不愿随便让其他人知道自己网站的真实流量,所以要把awstats统计结果页面进行密码保护。

因为nginx使用的是跟apache一样的密码加密格式,所以这里需要用到apache自带的工具htpasswd,而htpasswd包含在httpd-tools组件中的,所以我们要安装httpd-tools。

安装httpd-tools,使用如下命令:

yum -y install httpd-tools

安装httpd-tools时,会自动安装httpd,所以我们需要把httpd禁用。如下:

/etc/init.d/httpd stop

chkconfig httpd off

生成密码文件,使用如下命令:

htpasswd -c -m /usr/local/htpasswd.pass ilanni

三、安装awstats

准备工作做完后,我们现在来安装awstats。

3.1 下载awstats

awstst官网是http://www.awstats.org/,下载最新版本de awstats。如下:

wget http://www.awstats.org/files/awstats-7.5.tar.gz

3.2 安装awstats

awstats下载完毕后,我们现在来安装awstats。解压安装包,并进行相关操作,如下:

tar -C /usr/local/ -xf awstats-7.5.tar.gz

mv /usr/local/awstats-7.5/ /usr/local/awstats

chown root:root -R /usr/local/awstats/

mkdir -p /var/www/awstats/

cd /usr/local/awstats/tools/

chmod +x /usr/local/awstats/tools/*.pl

chmod +x /usr/local/awstats/wwwroot/cgi-bin/*.pl

开始安装awstats,如下:

./awstats_configure.pl

因为在此我们使用的是nginx,所以以上截图填写none。

创建一个新的统计配置文件。

在这输入自己的网站域名,也可以进行自定义。

使用默认配置,生成配置文件。

安装程序执行结束后,会在/etc/awstats/目录下生成相应的配置文件。如下:

ll /etc/awstats/awstats.www.ilanni.com.conf

3.3 编辑配置文件

awstats安装完毕后,我们现在来修改其配置文件awstats.www.ilanni.com.conf。在该配置文件中,我们主要修改的是awstats分析nginx日志的路径,以及日志格式,当然还有其它的一些插件。如下:

vim /etc/awstats/awstats.www.ilanni.com.conf

LogFile="/var/log/nginx/ilanni.com_%YYYY-24%MM-24%DD-24.log"

#配置显示国家和地区

LoadPlugin="geoip GEOIP_STANDARD /usr/share/GeoIP/GeoIP.dat"

LoadPlugin="geoip_city_maxmind GEOIP_STANDARD /usr/share/GeoIP/GeoLiteCity.dat"

#解决搜索关键字的乱码

LoadPlugin="decodeutfkeys"

注意:LogFile路径中日志文件中的日期格式“%YYYY-24%MM-24%DD-24”,是指24小时之前的年月日,也就是昨天的日期。-24表示一天前的,-0表示当前。

3.4 安装纯真IP数据库插件

如果要详细显示国内访客的具体来源信息,我们可以使用纯真IP数据库插件。

纯真IP地址数据库下载地址:http://update.cz88.net/soft/setup.zip

在windows机器上下载安装后,安装目录下的qqwry.dat文件即是最新版IP地址数据库。

下载awstats纯真IP数据库解析插件,下载地址如下:

http://down.51cto.com/data/1888530

注意,附件qqhostinfo.pm、qqwry.pl里的文件路径已经修改好。

下载完毕后,把qqhostinfo.pm、qqwry.pl、qqwry.dat这三个文件,放到awstats的wwwroot/cgi-bin/plugins目录下,并且给予qqhostinfo.pm文件可执行权限。如下:

最后修改awstats的配置文件awstats.www.ilanni.com.conf添加LoadPlugin="qqhostinfo"选项,如下:

到此awstats安装和配置已经全部完成。

四、配置nginx日志格式

awstats安装完毕后,我们要配置nginx日志的格式,因为awstats是按照指定的格式对nginx日志文件进行分析的,所以我们要进行对应的配置。

nginx日志的配置方法如下:

vim /etc/nginx/nginx.conf

log_format  site  '$remote_addr - $remote_user [$time_local] "$request" '

'$status $body_bytes_sent "$http_referer" '

'"$http_user_agent" $http_x_forwarded_for';

五、awstats与nginx进行web集成

Nginx日志格式配置完毕后,我们现在要把awstats与nginx进行集成。

为什么awstats与nginx进行集成?因为awstats的访问是通过web方式进行的。这个集成也分为两种情况 ,一个是awstats单独以nginx虚拟主机的形式存在,一种是awstats与现有nginx虚拟主机进行集成。下面分别把这两种方式的nginx配置贴出来,如下:

awstats单独作为nginx的一个虚拟主机,配置文件:

server {

listen 80;

server_name www.ilanni.com;

root /var/www/awstats/;

index index.html;

#或者

#index  awstats.test.haiyn.com.html;

location ~ ^/cgi-bin/.*.(cgi|pl|py|rb) {

gzip off;

include         fastcgi_params;

fastcgi_pass  unix:/tmp/php-cgi.sock;

#       fastcgi_pass    127.0.0.1:9000;   #注意配置fastcgi_pass为你的php-fpm server.

fastcgi_index   cgi-bin.php;

fastcgi_param   SCRIPT_FILENAME /usr/local/awstats/wwwroot/cgi-bin/fcgi.php;  #注意文件路径

fastcgi_param   SCRIPT_NAME        /cgi-bin/fcgi.php;

fastcgi_param   X_SCRIPT_FILENAME /usr/local/awstats/wwwroot$fastcgi_script_name;  #注意文件路径

fastcgi_param   X_SCRIPT_NAME $fastcgi_script_name;

fastcgi_param   REMOTE_USER        $remote_user;

}

# Static awstats files: HTML files stored in DOCUMENT_ROOT/awstats/

location /classes/ {

alias /usr/local/awstats/wwwroot/classes/;

}

location /css/ {

alias /usr/local/awstats/wwwroot/css/;

}

location /js/ {

alias /usr/local/awstats/wwwroot/js/;

}

location /icon/ {

alias /usr/local/awstats/wwwroot/icon/;

}

}

awstats与现有nginx虚拟主机进行集成

注意:一定要把awstats相关的配置存放到最前面,这是因为nginx的匹配规则是从上到下进行匹配的。

server {

listen 80;

server_name www.ilanni.com ilanni.com;

charset utf-8;

access_log /var/log/nginx/ilanni.com.log main;

location ~ ^/icon/ { #图标目录

root /usr/local/awstats/wwwroot;

index index.html;

access_log off;

charset gb2312;

}

location ~ ^/cgi-bin/.*.(cgi|pl|py|rb) {

root /usr/local/awstats/wwwroot;

gzip off;

include fastcgi_params;

fastcgi_pass 127.0.0.1:9000;

fastcgi_param X_SCRIPT_NAME $fastcgi_script_name;

fastcgi_param SCRIPT_FILENAME $document_root/cgi-bin/fcgi.php;

fastcgi_param X_SCRIPT_FILENAME $document_root$fastcgi_script_name;

#fastcgi_param REMOTE_USER $remote_user;

auth_basic "Restricted";

auth_basic_user_file /usr/local/awstats/htpasswd.pass;

}

location / {

root /www/ilanni.com;

index index.php index.html index.htm;

}

location ~ \.php$ {

root /www/ilanni.com/;

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

include fastcgi_params;

}

}

六、生成awstats数据库

现在开始使用awstats分析日志,使用如下命令:

/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.ilanni.com

生成静态文件,使用如下命令:

/usr/local/awstats/tools/awstats_buildstaticpages.pl -update -config=www.ilanni.com -lang=cn -dir=/var/www/awstats -awstatsprog=/usr/local/awstats/wwwroot/cgi-bin/awstats.pl

为了看到每一天更新的数据,我们可以通过crontab在每天凌晨00:01定时更新静态页面。如下:

vim /etc/crontab

1 0 * * * /usr/local/awstats/tools/awstats_buildstaticpages.pl -update -config=www.ilanni.com -lang=cn -dir=/var/www/awstats -awstatsprog=/usr/local/awstats/wwwroot/cgi-bin/awstats.pl

七、访问awstats

awstats数据库生成完毕后,我们现在来通过web页面访问下。在此我使用的是第二种方式awstats与nginx进行集成。

如下:

http://www.ilanni.com/cgi-bin/awstats.pl

上输入的是我们在第二章准备工作中htpasswd生成的用户名和密码。

上图就是awstats对nginx日志文件分析后,所得到的相关信息。

上图是我们安装的GeoIP和纯真IP数据库显示的用户访问的国家、城市以及来源地址。

上图是awstats根据nginx日志文件分析出来用户是搜索哪些关键词过来的。

烂泥:利用awstats分析nginx日志的更多相关文章

  1. 使用awstats分析nginx日志

    1.awstats介绍 本文主要是记录centos6.5下安装配置awstats,并统计nginx访问日志 1.1 awstats介绍 awstats是一款日志统计工具,它使用Perl语言编写,可统计 ...

  2. 利用python分析nginx日志

    最近在学习python,写了个脚本分析nginx日志,练练手.写得比较粗糙,但基本功能可以实现. 脚本功能:查找出当天访问次数前十位的IP,并获取该IP来源,并将分析结果发送邮件到指定邮箱. 实现前两 ...

  3. Awstats分析Nginx日志

    1.nginx日志格式设定 log_format access '$remote_addr - $remote_user [$time_local] "$request" ' '$ ...

  4. Nginx配置Awstats分析Nginx日志笔记

    1.修改Nginx日志格式: log_format json '$remote_addr - $remote_user [$time_local] "$request" '     ...

  5. 利用ELK分析Nginx日志生产实战(高清多图)

    本文以api.mingongge.com.cn域名为测试对象进行统计,日志为crm.mingongge.com.cn和risk.mingongge.com.cn请求之和(此二者域名不具生产换环境统计意 ...

  6. 利用ELK分析Nginx日志

    本文以api.mingongge.com.cn域名为测试对象进行统计,日志为crm.mingongge.com.cn和risk.mingongge.com.cn请求之和(此二者域名不具生产换环境统计意 ...

  7. 利用Hive分析nginx日志

    这里用到的nginx日志是网站的访问日志,比如日志格式: 180.173.250.74 - - [08/Jan/2015:12:38:08 +0800] "GET /avatar/xxx.p ...

  8. awstat分析nginx日志

    awstat分析nginx日志 http://lxw66.blog.51cto.com/5547576/1323712 server{ listen ; server_name localhost; ...

  9. 使用Docker快速部署ELK分析Nginx日志实践

    原文:使用Docker快速部署ELK分析Nginx日志实践 一.背景 笔者所在项目组的项目由多个子项目所组成,每一个子项目都存在一定的日志,有时候想排查一些问题,需要到各个地方去查看,极为不方便,此前 ...

随机推荐

  1. iOS中数据库应用基础

    iOS 数据库入门 一.数据库简介 1.什么是数据库? 数据库(Database) 是按照数据结构来组织,存储和管理数据的仓库 数据库可以分为2大种类 关系型数据库(主流) PC端 Oracle My ...

  2. Code First Migrations

    在MVC开发当中难免会对类进行修改,修改后再次运行就会出现异常,提示上下文的模型已在数据库创建后发生改变. 支持“AppContext”上下文的模型已在数据库创建后发生更改.请考虑使用 Code Fi ...

  3. JSON.stringify()与JSON.parse()

    JSON.stringify()用于把一个对象解析成字符串,如 var student = { age: 23, name: 'wang' } JSON.stringify(student); 结果: ...

  4. 解析大型.NET ERP系统 十三种界面设计模式

    成熟的ERP系统的界面应该都是从模板中拷贝出来的,各类功能的界面有规律可遵循.软件界面设计模式化或是艺术性的创作,我认可前者,模式化的界面客户容易举一反三,降低学习门槛.除了一些小部分的功能界面设计特 ...

  5. Log4net入门(日志文件篇)

    在上一篇Log4net入门(控制台篇)中,我们将日志信息输出到控制台中,在这一篇中,我们将描述如何将日志信息写到文件中.要将日志信息写入文件非常简单,只需要在Log4net.config配置文件中添加 ...

  6. TortoiseGit:记住用户名和密码

    1.背景: 我们在使用 tortoisegit 工具时会无可避免的经常性 pull 和 push,这时通常要输入用户名和密码,由于麻烦,就有人提出了记住用户名和密码的需求... ... 2.设置: [ ...

  7. 设计模式(九): 从醋溜土豆丝和清炒苦瓜中来学习"模板方法模式"(Template Method Pattern)

    今天是五.四青年节,祝大家节日快乐.看着今天这标题就有食欲,夏天到了,醋溜土豆丝和清炒苦瓜适合夏天吃,好吃不上火.这两道菜大部分人都应该吃过,特别是醋溜土豆丝,作为“鲁菜”的代表作之一更是为大众所熟知 ...

  8. 利用Python进行数据分析(5) NumPy基础: ndarray索引和切片

    概念理解 索引即通过一个无符号整数值获取数组里的值. 切片即对数组里某个片段的描述. 一维数组 一维数组的索引 一维数组的索引和Python列表的功能类似: 一维数组的切片 一维数组的切片语法格式为a ...

  9. JWT实现token-based会话管理

    上文<3种web会话管理的方式>介绍了3种会话管理的方式,其中token-based的方式有必要从实现层面了解一下.本文主要介绍这方面的内容.上文提到token-based的实现目前有一个 ...

  10. Windows下删除.svn文件夹的最简易方法

    建立一个文本文件,取名为kill-svn-folders.reg(扩展名由txt改为reg),内容如下: Windows Registry Editor Version 5.00 [HKEY_LOCA ...