天天看点

awstats分析apche日志

好吧。之前写过关于apache日志的文章,本意是了解一下apache日志的配置和基础解读为apache日志分析打好基础,应用到生产之后能够对网站的维护和日常生产做出指导作用。

写在前面的话:

因为我的实际生产环境AS4、AS5、AS6都有,所以都做了实验,并且现在都已经应用在生产中了。但实际这个东西三版系统中除了最后jawstats的应用有点问题以外,其它都一样,所以这里用AS4做基础的实验环境。

实验环境:AS4UP4 (AS5、AS6通用)

采用的软件包:

awstats: 采用的是现在为止最新的稳定版(2016-03-03)

本体:http://prdownloads.sourceforge.net/awstats/awstats-7.4.tar.gz

jawstats: 这里要说明一下,这个界面比awstats友好多了,但最新版在09年初就已经停止更新了,所以这里到后面会有一点小问题。

本体:http://static.jawstats.com/src/jawstats-0.7beta.tar.gz

语言包:http://www.jawstats.com/src/languagepack.zip

一、系统设置

由于是实验性质,所以采用了绝对安全环境下进行的一些设置(为了避免软件引起的干涉),在实际环境中请慎重考虑一下:

Selinux关闭,这个不关可能在apache另做的别名和系统默认的apache文件夹以外的文件夹无法被顺得加载。

#setenforce 0

这个是临时关闭,重启之后失效

或者

#vim /etc/selinux/config

把SELINUX=Enforcing 改成 SELINUX=disabled

这个重启之后就永久关闭了。

 perl的安装,这个不多说了,系统光盘里都有。awstats需要这个做支持,7.4版本要求在版本在5以上,这个应该不是难事,AS4自带的就是5。

二、设置

首先说明一下,awstats是基本LAMP的软件,而本身我们也是为了分析apache日志,所以LAMP环境是必须的。实验中我是直接完全安装,现在RPM包全装完了。源码包的安装方式参看:

使用的三个包

awstats这个是从apache日志中提取信息并成生分析数据的软件,这是整个分析系统的核心。

Jawstats直接利用awstats生成的数据,转换到一个更加友好界面展现出来,其实就是awstats的一个插件。

Languagepack是jawstats的语言包

SO,一步步来。

安装awstats

awstats对日志的分析支持的模式是 combined,所以之前做的日志要改变一下。

# vim /etc/httpd/conf/httpd.conf    //编辑apache配置文件

CustomLog 改成

CustomLog "| /usr/sbin/rotatelogs /etc/httpd/logs/access_log%Y%m%d 86400 480" combined

# service httpd restart    //重启apache

打开浏览器访问一下http://IP

#ll /etc/httpd/logs/

awstats分析apche日志

日志文件就已经生成了。

现在可以来处理awstats了

# tar zxvf awstats-7.4.tar.gz

# mv awstats-7.4 /usr/local/awstats

# cd /usr/local/awstats/tools/

# ./awstats_configure.pl

awstats分析apche日志

这里要求的是apache配置文件的完整路径。

awstats分析apche日志

apache配置文件找到之后,会写入和awstats相关的别名设置。

awstats分析apche日志

模板配置文件也会生成,保存在/usr/local/awstats/wwwroot/cgi-bin/awstats.model.conf

awstats分析apche日志

这里是利用模板,直接配置需要分析的模板了。

awstats分析apche日志

这里是网站名称,可以写全域名,我这里直接写localhost了。

awstats分析apche日志

这里说明是配置文件存放路径,默认是/etc/awstats,默认就直接回车了。

awstats分析apche日志

之后apache就会直接重启,之后会提示日志分析命令和web访问路径。基本配置到此完成,现在准备生成分析数据。

这里说明一下,如果找不到libmysql.so.14.0或者以上版本的同名文件重启apache是会失败的,但无伤大雅,可以自己手动重启。AS4系统中内置包名是mysql-4.1.20-1.RHEL4.1.i386.rpm,其它几个系统类同。

# mkdir /var/lib/awstats   //这个是日志分析后数据保存的路径,必须手动新建

# vim /etc/awstats/awstats.localhost.conf  

//修改localhost的配置文件,因为配置文件里的apache源日志文件名是通用的,要改成之前设置的那个

LogFile改成如下:

LogFile="/etc/httpd/logs/access_log%YYYY%MM%DD"

# /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=localhost  

//生成数据,命令照打,如下是成功的。

awstats分析apche日志

# crontab -e       //apache的日志是不断产生的,所以要加入计划任务。

*/1 * * * * /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=localhost

# service crond restart

# chown apache.apache -R /usr/local/awstats/  //把权限改成apache用户,否则无法正常访问

打开浏览器

http://IP/awstats/awstats.pl?config=localhost

awstats分析apche日志

完成。

安装jawstats

# mkdir jawstats

# tar zxvf jawstats-0.7beta.tar.gz -C jawstats   //jawstats解开是文件状态,所以要指定文件夹

# mkdir language

# unzip languagepack.zip -d language      

# cp   language/* ./jawstats/languages/

# mv jawstats /var/www/html/

# cd /var/www/html/jawstats/

# cp config.dist.php config.php

# vim config.php   //编译配置文件

全局变量

$sDefaultLanguage      = "zh-cn";  //这里只需要把默认的语言改掉就行了

$aConfig["localhost"] = array(

  //这里是指定读取网站的名称,这里写错了会读错日志,和awstats设置一样,即刚刚在awstats中输入的网站名称。

  "statspath"   => "/var/lib/awstats/", 

  //awstats生成的数据文件目录

  "updatepath"  => "/usr/local/awstats/wwwroot/cgi-bin/awstats.pl",

  //也就是awstats.pl文件的目录

  "siteurl"     => "localhost",

  //这个是jawstats进去之后标题的链接

  "sitename"    => "localhost",

  //这个是jawstats进去之后给出的网站标题,主要是标明哪个网站

  "theme"       => "default",

  "fadespeed"   => 250,

  "password"    => "mypassword",

  //更新站点数据的密码,jawstats有个功能,其实感觉用F5刷新就行了,如果你等不急awstats每分钟刷新一次的频率的话,可能试下这个。

  "includes"    => "",

  "language"    => "zh-cn"

  //默认语言

);

关于jawstats第一步就完成了。这里有两个地方要说明一下。

1.jawstat,在09年初就断更了。PHP5.3发布之后很多PHP规则都改变了,它里面很多内置函数因为这个原因都无法使用,所以它是不支持PHP5.3以上的版本的。SO,AS6就失败了。

2.由于awstats的版本一直在更新,所以jawstats是不能完全支持最新版本的awstats的,例如查看浏览器和操作系统就无法完成。要支持的话,可以使用awstats6.95的版本。不过其实这些功能awstats本身都有,看个人取舍。

以上设置完成之后,awstats和jawstats的目录都是不设防的,所有人都可以访问。一般情况下为了安全起见是要做一下访问控制的,网上大多数人用的都是.htpasswd,不过如果有固定IP地址或者VPN的话可以直接用ACL进行控制。

下面分别说明一下:

.htpasswd方法

例awstats在apache配置文件中原始的文件夹权限

<Directory "/usr/local/awstats/wwwroot">

    Options None

    AllowOverride None

    Order allow,deny

    Allow from all

</Directory>

修改为:

<Directory "/usr/local/apache/htdocs/www/awstats">

AuthType Basic

AuthName "Auth Youself"    //这里是提示信息

AuthUserFile /usr/local/awstats/wwwroot/.htpasswd

Require user admin

</Directory>

然后

/usr/bin/htpasswd -c /usr/local/awstats/wwwroot/.htpasswd  用户名  密码

jawstats亦以此类推,复制一下即可。

ACL方法:

例awstats在apache配置文件中原始的文件夹权限

如下

<Directory "/usr/local/awstats/wwwroot">

    Options None

    AllowOverride None

    Order allow,deny

    Allow from all

</Directory>

修改为:

<Directory "/usr/local/awstats/wwwroot">

    Options None

Order deny,allow   

//这里deny,allow的位置要注意,写在后面的覆盖前面的,写反了allow将不会生效

    Deny  from all

Allow from 允许的IP

</Directory>

Jawstats可以以此类推,如下:

Alias /jawstats "/var/www/html/jawstats"      //我这里新建了一个别名

<Directory "/var/www/htmlt/jawstats">

    Options None

    Order deny,allow

    Deny from all

Allow from 允许的IP

</Directory>

awstats分析apche日志

无论哪种方法,不要忘记重启apache服务。

awstats的优化

刚刚建好的awstats最大的问题在于无法通过IP识别来源的国家,这个需要其它插件的支持。

要下三个包

http://geolite.maxmind.com/download/geoip/api/c/GeoIP.tar.gz  主程序

http://www.maxmind.com/download/geoip/api/pureperl/Geo-IP-PurePerl-1.19.tar.gz

http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz 城市信息

先安装GeoIP

# tar zxvf GeoIP.tar.gz

# cd GeoIP-1.4.8/

# ./configure --prefix=/usr/local/geoip

# make

# make install

安装Geo-IP-PurePerl

# tar zxvf Geo-IP-PurePerl-1.19.tar.gz

# cd Geo-IP-PurePerl-1.19

# perl Makefile.PL   

# make

# make test

# make install

更新数据库

# gunzip GeoLiteCity.dat.gz

# mv GeoLiteCity.dat /usr/local/awstats/wwwroot/cgi-bin/ 

//数据库GeoLiteCity.dat移到目标目录

# vim /usr/local/awstats/wwwroot/cgi-bin/awstats.model.conf

做如下修改:

LoadPlugin="decodeutfkeys"

LoadPlugin="graphgooglechartapi"

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

//这里是安装目录,其实是GeoIP数据库GeoIP.dat的路径

LoadPlugin="geoip_city_maxmind GEOIP_STANDARD /usr/local/awstats/wwwroot/cgi-bin/GeoLiteCity.dat"

//这行别搞错了,原来是以GeoIPCity.dat结尾的。如果只注释那么是得不到想要的结果的。

# /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=localhost

更新过后,应该就可以得出结果了

本来GeoIP是有自动更新功能的,但帐号需要购买,所以只能定时下载更新包了。

http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz

http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz

///另,开启了IP来源识别,打开监控网页的整体会变慢,而且统计图片很可能会显示不出来——当然这个和机器的配置还有设置有关系。