awstats分析日志

http://bbs.linuxtone.org/forum-viewthread-tid-714-highlight-Awstats%2Bapache.html




修改Apache的配置文件 httpd.conf

CustomLog "logs/access_log" common

默认配置CustomLog的日记格式是common,改为combined,后者是awstats推荐的方式可以用来分析客户端浏览器的类型以及访问来源等。例如:
CustomLog "logs/access_log" combined
这个日志配置让apache每天生成一个新的日志文件,其中%Y%m%d是年月日。

清空下access_log文件内容,确保新的日志格式正确


或者对日志每天分割
CustomLog "| /usr/local/webserver/apache2/logs/access_log /usr/local/webserver/apache2/logs/access_%Y%m%d.log 86400" combined





wget http://jaist.dl.sourceforge.net/sourceforge/awstats/awstats-6.7.tar.gz
cd /etc/local
tar zxvf awstats-6.7.tar.gz
mv awstats-6.7 awstats
cd  awstats
cd tools



/usr/local/webserver/apache2/conf/httpd.conf
www.70cars.tk
/etc/awstats

新建 /usr/local/awstats/data/,设置权限www

----------修改/etc/awstats/下面的
#vi awstats.www.70cars.tk.conf
Include "common.conf"
LogFile="/usr/local/webserver/apache2/logs/access_log"  ---------
LogType=W
SiteDomain="www.bestunix.net.conf"
HostAliases="www.bestunix.net.conf"
DefaultFile="index.html index.php"
DirData="/usr/local/awstats/data/"    -------------------
DirIcons="/icons"
AllowToUpdateStatsFromBrowser=1




-------------vim /usr/local/webserver/apache2/conf/httpd.conf 中加入
Alias /awstatsclasses "/usr/local/awstats/wwwroot/classes/"
Alias /awstatscss "/usr/local/awstats/wwwroot/css/"
Alias /awstatsicons "/usr/local/awstats/wwwroot/icon/"
ScriptAlias /awstats/ "/usr/local/awstats/wwwroot/cgi-bin/"
#
# This is to permit URL access to scripts/files in AWStats directory.
#
<Directory "/usr/local/awstats/wwwroot">
    Options None
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
如果需要帐户验证,则改成:
<Directory "/usr/local/awstats/wwwroot">
    Order deny,allow
    Allow from all
    AuthName "awstats log "
    AuthType Basic
    AuthUserFile /usr/local/awstats/htpasswd

   Require valid-user   #必须账号登陆
</Directory> 然后使用apache自带的工具htpasswd来生成一个用户名和口令

htpasswd -c /usr/local/awstats/htpasswd awstats



-------------------------------------------------------------------生成数据
cd /usr/local/awstats/wwwroot/cgi-bin
./awstats.pl -update -config=www.70cars.tk,因为这个程序是通过分析日志来进行流量统计的,如果你的日志文件很大的话是很耗系统资源的。还好,我的流量不大,我设定的是每个小时运行一次,你如果服务器比较繁忙的话也可以每天夜里运行一次。当然你也可以手工运行上面的命令来进行更新统计信息。


=======????????   清空旧的access_log日志文件
Create/Update database for config "/etc/awstats/awstats.www.70cars.tk.conf" by AWStats version 6.7 (build 1.892)
From data in log file "/usr/local/webserver/apache2/logs/access_log"...
Phase 1 : First bypass old records, searching new record...
Searching new records from beginning of log file...
AWStats did not find any valid log lines that match your LogFormat parameter, in the 50th first non commented lines read of your log.
Your log file /usr/local/webserver/apache2/logs/access_log must have a bad format or LogFormat parameter setup does not match this format.
Your AWStats LogFormat parameter is:
1
This means each line in your web server log file need to have "combined log format" like this:
111.22.33.44 - - [10/Jan/2001:02:14:14 +0200] "GET / HTTP/1.1" 200 1234 "http://www.fromserver.com/from.htm" "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"
And this is an example of records AWStats found in your log file (the record number 50 in your log):
183.14.91.6 - - [09/Oct/2010:22:25:28 -0400] "GET /nagios HTTP/1.1" 401 401
Setup ('/etc/awstats/awstats.www.70cars.tk.conf' file, web server or permissions) may be wrong.
Check config file, permissions and AWStats documentation (in 'docs' directory).

=======正确

[root@localhost logs]# cd /usr/local/awstats/wwwroot/cgi-bin
[root@localhost cgi-bin]# ./awstats.pl -update -config=www.70cars.tk
Create/Update database for config "/etc/awstats/awstats.www.70cars.tk.conf" by AWStats version 6.7 (build 1.892)
From data in log file "/usr/local/webserver/apache2/logs/access_log"...
Phase 1 : First bypass old records, searching new record...
Searching new records from beginning of log file...
Phase 2 : Now process new records (Flush history on disk after 20000 hosts)...
Jumped lines in file: 0
Parsed lines in file: 17
 Found 0 dropped records,
 Found 1 corrupted records,
 Found 0 old records,
 Found 16 new qualified records.



-------------------------------------------------访问
http://www.70cars.tk/awstats/awstats.pl?config=www.70cars.tk

 

 

 

 

 

 

 

 

 

 

 

 

 

给awstats加上了Geo::IPfree插件
用途:用于awsats中关于来访者国家或地区的统计
配置Geo-IP 需要:
Geo-IP C-API (http://www.maxmind.com/download/geoip/api/c/ )
Geo-IP Perl-API (http://www.maxmind.com/download/geoip/api/perl/ )
Geo::IPfree (http://search.cpan.org/author/GMPASSOS/Geo-IPfree-0.2/ )
安装:
Geo-IP C-API:
./configure
make
make install


Geo-IP Perl-API:
perl MakeFile.PL
make
make install


Geo::IPfree
perl MakeFile.PL
make
make install

最后,在/etc/awstats/awstats.yourdomain.conf中开启Geo::IPfree插件。去掉 LoadPlugin="geoipfree" 前面的注释.
更新一下统计
/usr/local/awstats/tools/awstats_updateall.pl now

多网站多日志文件的合并分析和处理用处:

1.用lvs之后,放了多台前端用的Web Server,每台Server有各自的日志.我们分开使用分析软件分析和检查是非常困难的,所以我们使用合并的方法.
2.多个域名,日志分开,使用awstats之类的分析软件进行分析很麻烦,所以需要合并
3.使用google的软件来做sitemap之类的应用,检查也会非常麻烦,所以需要合并
4.象多个节点的CDN日志,要进行流量统计和分析需要合并
5.因为日志文件过大,一个服务器生成多个日志文件.象access_log.1、access_log.2、access_log.3…以此类推,所以要合并.
等等…..

问题
对合并,进行日志排序最麻烦的一个问题就是,容易在跨天过程中生成的非正常数据.用一个前辈的话,这些不正常的日志,对awstats之类,就象吃了虫子一样,还有可能冲掉你以前的所有数据。

解决方法1(多谢东东):
在分析日志前,使用
sort -m -t " " -k 4 -o log_all log1 log2 log3
注释:
-m: 使用 merge优化算法

解决方法2:
使用 awstats 内建的工具logresolvemerge.pl 来合并日志 ,方法非常容易,主要是更改网站的设定档就好了,编辑 /etc/awstats/awstats.php-oa.conf
找到 LogFile 的地方,原来预设单个 log 的设定如下:

LogFile="/var/log/httpd/access_log"(原设置)

修改成
LogFile="/usr/local/awstats/tools/logresolvemerge.pl /var/log/httpd/access_log* |"   (合并分析新的设置)

如上,其实只要 logresolvemerge.pl 的路径还有日志的路径及使用匹配来设置即可,记的后面加一个"|"。注意上面我是要合并 access_log.1、access_log.2、access_log.3 的日志,要是你的日志名为别的,记的使用匹配符来匹配你要一起合并分析的日志.
另外.默认logresolvemerge.pl 是放在 awstats 安装路径的 tools 里面,比如我们的 awstats 是装在/usr/local/awstats 里面,所以完整路径就是 /usr/local/awstats/tools/logresolvemerge.pl 。

编辑保存后,再来执行更新记录的程序即可,如:
#/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -config=xxx -update

再来进去您的网址就可以看到合并后输出的结果了,如:
http://www.yoursite.com/awstats/awstats.pl?config=xxx

其它及美化
1.用Firefox浏览分析结果时,字体会显得很难看(因为Firefox和IE识别11px字体不一样),所以用Firefox浏览器的情况,可以通过修改

awstats.pl输出css的相关字体尺寸进行修改,而达到用Firefox浏览时也和IE一样能够正确显示出适当尺寸的字体。方法就是直接编

辑"/usr/local/awstats/wwwroot/cgi-bin/awstats.pl",将文件中所有“11px”的地方都替换为 “12px。

2.如何修改报表里的文字,如参观者...等等这些信息,其实修改语言报就可以
#vi /usr/local/awstats/wwwroot/cgi-bin/lang/awstats-cn.txt 修改里面的文字就可以.

 

 

 

 

 

 

 

 

 

 

 

 

 

多个日志文件的合并统计:
awstats?建的工具logresolvemerge.pl ?合并access_log.20080606、access_log.20080607、access_log.20080608在配置文件中的LogFile更改如下:
LogFile="/path/to/logresolvemerge.pl /path/to/access_log* |"
或将多个日志文件合并成一个日志文件
ls -t -r -1 access_log.* | xargs cat > access_log

其他需要注意的事项:
AWStats缺省不过滤swf文件,会把.swf算成PageView,所以如果站点上swf文件主要是广告的话最好还是要过滤掉


日志分析:
./awstats.pl -update -config=sitename -lang=cn
比如:./awstats.pl -update -config=qinhao
会自动调用awstats.qinhao.conf这个配置文件

统计输出:
GNU/Linux    http://localhost/cgi-bin/awstats/awstats.pl?config=qinhao

日志统计自动运行:
GNU/Linux上:crontab -e: 每天8点10分运行
#update awstats
10 8 * * * (cd /path/to/apache/cgi-bin/awstats/; ./awstats.pl -update -config=qinhao)

多站点日志统计:
AWStats自带了一个批处理工具:tools/awstats_updateall.pl now -awstatsprog=/awstats/wwwroot/awstats.pl -configdir=/etc/awstats/,可以批量地遍历一个目录下所有地配置文件并运行统计。因此剩下的工作就主要是日志的同步问题了。
针对多个站点,很多配置选项是重复的,如果每个配置文件都修改维护起来会很麻烦,AWStats从5.4版本开始提供了配置文件包含的功能,所以我们可以配置一个通用配置,比如:common.conf
然后其他站点的配置设置为:可以通过后面的选项覆盖和缺省不一致的配置。
awstats.bbs.qinhao.conf
Include "qinhao.common.conf"
LogFile "/path/to/bbs_log"
SiteName "bbs.qinhao.com"
DirData="/home/apache/cgi-bin/awstats/data/"
awstats.www.qinhao.conf
Include "qinhao.common.conf"
LogFile "/path/to/www_log"
SiteName "www.qinhao.com "
HostAliases="qinhao.com"
DefaultFile="index.html"
DirData="/home/apache/cgi-bin/awstats/data/"
多服务器的日志合并统计:
越来越多大型的WEB服务使用DNS轮循来实现负载均衡,使用多个同样角色的服务器做前台的WEB服务,这大大方便了服务的分布规划和扩展性,但多个服务 器的分布使得日志的分析统计也变得有些麻烦。因此,要统计的多个服务器的日志还是:分别记录=>并通过一定方式定期同步到后台=>合并=& gt;后用日志分析工具来进行分析。
合并
sort -m -t " " -k 4 -o log_all log1 log2 log3
注释
-t " ": 日志字段分割符号是空格
-k 4: 按第4个字段排序,也就是[03/Apr/2002:10:30:17 +0800]具体日志格式111.222.111.222 - - [03/Apr/2002:10:30:17 +0800] "GET /index.html HTTP/1.1" 200 419
-o log_all: 输出到log_all这个文件中

你可能感兴趣的:(应用服务器,cgi,perl,Access,firefox)