1.安装
2.apache日志统计
3.plugin
4.合并日志
5.分析其它日志
5.1.ftp日志
5.1.1.proftp
5.2.mail日志
本文用到的软件 AWStats 6.9 final
网站:http://awstats.sourceforge.net
1.安装
# cd /usr/local/src/tarbag
# tar zxvf awstats-6.9.tar.gz -C ../software
# cp -r ../software/awstats-6.9 /www/awstats
# chown -R root:root /www/awstats
# chmod -R 755 /www/awstats
# cd /www/awstats/tools
# perl awstats_configure.pl
安装过程中会让你回答下列等问题
Do you want me to setup Apache to write ‘combined’ log files [y/N] ? y
Do you want me to build a new AWStats config/profile file (required if first install) [y/N] ? y
Your web site, virtual server or profile name:
> www.test.com
Directory path to store config file(s) (Enter for default):
> /www/awstats
安装过程会自动在httpd.conf文件中添加下面的配置信息
Alias /awstatsclasses “/www/awstats/wwwroot/classes/”
Alias /awstatscss “/www/awstats/wwwroot/css/”
Alias /awstatsicons “/www/awstats/wwwroot/icon/”
ScriptAlias /awstats/ “/www/awstats/wwwroot/cgi-bin/”
Options None
AllowOverride None
Order allow,deny
Allow from all
修改主机配置文件(/www/awstats/awstats.www.test.com.conf),重点检查LogFile、LogType、LogFormat、 SiteDomainin、HostAlias这几个选项
我的配置文件部分内容如下
LogFile=” /var/log/httpd/access_log”
SiteDomain=”www.test.com”
HostAliases=”test.com www.test.com 192.168.50.160″
DirData=”/wwwl/awstats/data”
创建/usr/local/share/awstats目录用于统计数据输出
# mkdir -p /wwwl/awstats/data
修改/usr/local/apache2/conf/httpd.conf配置文件
把
CustomLog "logs/access_log" combined
改成
CustomLog "/var/log/httpd/access_log" combined
2.日志统计
统计主机日志
# cd /www/awstats/wwwroot/cgi-bin/
# perl /www/awstats/wwwroot/cgi-bin/awstats.pl -config=www.test.com -update -lang=cn
如果修改了安装awstats的路径,需要打开awstats.pl修改下configdir的路径
else {
@PossibleConfigDir = (
"$DIR", "/www/awstats",
"/usr/local/etc/awstats", "/etc",
"/etc/opt/awstats"
);
如上,我将/etc修改到/www下,如果不修改路径请注意在/etc下建立个软链接
你可以生成一个静态页面来浏览信息
#mkdir –p /www/awstats/wwwroot/cgi-bin/html
# perl /www/awstats/wwwroot/cgi-bin/awstats.pl -config=www.test.com -output -staticlinks -lang=cn> /www/awstats/wwwroot/cgi-bin/html/awstats.www.test.com.html
定时统计主机日志
#update awstats
30 7 * * * root /www/awstats/wwwroot/cgi-bin/awstats.pl -config=www.test.com -update -lang=cn
测试
http://192.168.50.160/awstats/awstats.pl?config=www.test.com
3.plugin
安装GeoIP
需要
GeoIP C Library
Geo::IP Perl Module (faster, but requires C library)
Geo::IP::PurePerl Module (slower, but does not require C library)
C Library和Perl Module是一组,必须先编译安装C的,再编译安装perl,或者直接装PurePerl Module,我就是这种方式
安装GeoIP C Library
# tar zxvf GeoIP-1.4.6.tar.gz
# cd GeoIP-1.4.6
# ./configure; make; make install
安装 Geo::IP Perl Module
# tar zxvf Geo-IP-1.38.tar.gz
# cd Geo-IP-1.38
# perl Makefile.PL
# make
# make test (在AS4下通不过,放弃,改装PurePerl Module)
# make install
以上两步也可以这样安装
# perl -MCPAN -e shell
cpan> install Geo::IP
安装Geo::IP::PurePerl Module
# tar zxvf Geo-IP-PurePerl-1.24.tar.gz
# cd Geo-IP-PurePerl-1.24
# perl Makefile.PL
# make
# make test
# make install
也可以这样安装
# perl -MCPAN -e shell
cpan> install Geo::IP::PurePerl
修改/etc/awstats/awstats.www.test.com.conf,取消下面这行的注释,启用此插件
LoadPlugin=”geoip GEOIP_STANDARD /usr/local/share/GeoIP/GeoIP.dat”
更新GeoIP库
# cd /usr/local/share/GeoIP/
# gunzip GeoLiteCity.dat.gz
修改/etc/awstats/awstats.www.test.com.conf,取消下面这行的注释,启用此插件
LoadPlugin=”geoip GEOIP_STANDARD /usr/local/share/GeoIP/GeoIP.dat”
定时更新GeoIP库
0 0 * * * root /usr/local/bin/geoipupdate -v
安装XWhois
# perl -MCPAN -e shell
cpan> install Net::XWhois
修改/etc/awstats/awstats.www.test.com.conf,取消下面这行的注释,启用此插件
LoadPlugin=”hostinfo”
安装decodeutfkeys
# perl -MCPAN -e shell
cpan> install URI::Escape
修改/etc/awstats/awstats.www.test.com.conf,取消下面这行的注释,启用此插件
LoadPlugin=”decodeutfkeys”
4.合并日志
更新日志
/www/awstats/wwwroot/cgi-bin/awstats.pl -config=www.test.com -update -lang=cn
多网站多日志文件的合并分析和处理
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
考虑到服务器负载和显示时间的问题,所有考虑要把输出页面静态化
在生成静态页之前应该先要建立/www/log.766.com/zhuanqu.766.com的目录,方能正确执行命令.
/usr/bin/perl /www/awstats/tools/awstats_buildstaticpages.pl -config=www.zhuanqu.766.com -update -awstatsprog=/www/awstats/wwwroot/cgi-bin/awstats.pl -dir=/www/log.766.com/zhuanqu.766.com -lang=cn
5.分析其它日志
以下内容是在网络上寻找到,未经考证:
5.1.ftp日志
5.1.1.proftp
设置proftp
更改proftpd.conf文件,添加如下两行
LogFormat awstats “%t %h %u %m %f %s %b”
# 注意:在%号之间必须用tab键作为分隔符,不能用空格键
ExtendedLog /var/log/xferlog read,write awstats
# WARNING: ExtendedLog directive might need to be placed inside a virtual host context if you use them
然后关闭老的日志格式
TransferLog none
# WARNING: TransferLog directive might need to be placed inside a virtual host context if you use them.
想让你的设置生效,先停止proftp服务,删除旧的日志文件/var/log/xferlog,然后启动proftp服务。登陆ftp,下载一个文件,你的新日志文件会有新的一行,类似如下这个样子:
[01/Jan/2001:21:49:57 +0200] ftp.server.com user RETR /home/fileiget.txt 226 1499
设置AWStats
复制配置文件awstats.model.conf到/usr/local/etc/awstats目录下,并把文件名改成awstats.ftp.conf,修改这个新的配置文件
# mkdir -p /usr/local/share/awstats/ftp
# cp /usr/local/awstats/wwwroot/cgi-bin/awstats.model.conf /usr/local/etc/awstats/awstats.ftp.conf
# vi /usr/local/etc/awstats/awstats.ftp.interpack.cn.conf
LogFile=”/var/log/xferlog”
LogType=F
LogFormat=”%time1 %host %logname %method %url %code %bytesd”
LogSeparator=”/t”
SiteDomain=”ftp.test.com”
HostAliases=”ftp.test.com 192.168.0.3″
DirData=”/usr/local/share/awstats/ftp”
NotPageList=”"
LevelForBrowsersDetection=0
LevelForOSDetection=0
LevelForRefererAnalyze=0
LevelForRobotsDetection=0
LevelForWormsDetection=0
LevelForSearchEnginesDetection=0
ShowLinksOnUrl=0
ShowMenu=1
ShowSummary=UVHB
ShowMonthStats=UVHB
ShowDaysOfMonthStats=HB
ShowDaysOfWeekStats=HB
ShowHoursStats=HB
ShowDomainsStats=HB
ShowHostsStats=HBL
ShowAuthenticatedUsers=HBL
ShowRobotsStats=0
ShowEMailSenders=0
ShowEMailReceivers=0
ShowSessionsStats=1
ShowPagesStats=PBEX
ShowFileTypesStats=HB
ShowFileSizesStats=0
ShowBrowsersStats=0
ShowOSStats=0
ShowOriginStats=0
ShowKeyphrasesStats=0
ShowKeywordsStats=0
ShowMiscStats=0
ShowHTTPErrorsStats=0
ShowSMTPErrorsStats=0
统计主机日志
# /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -config=ftp.test.com -update -lang=cn
你可以生成一个静态页面来浏览信息
# perl awstats.pl -config=ftp.test.com -output -staticlinks -lang=cn> awstats.ftp.test.com.html
定时统计主机日志
#update awstats
30 7 * * * root /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -config=ftp.test.com -update -lang=cn
测试
http://192.168.0.3/awstats/awstats.pl?config=ftp.test.com
5.2.mail日志
适用于Postfix, Sendmail, QMail
复制配置文件awstats.model.conf到/usr/local/etc/awstats目录下,并把文件名改成awstats.mail.conf,修改这个新的配置文件
# mkdir -p /usr/local/share/awstats/mail
# cp /usr/local/awstats/wwwroot/cgi-bin/awstats.model.conf /usr/local/etc/awstats/awstats.mail.conf
# vi /usr/local/etc/awstats/awstats.mail.conf
For standard Postfix, Sendmail, MDaemon and standard QMail logfiles, set
LogFile=”perl /usr/local/awstats/tools/maillogconvert.pl standard < /var/log/maillog |"
If the logfiles are compressed, they can be processed this way
LogFile=”gzip -cd /var/log/maillog.0.gz | /usr/local/awstats/tools/maillogconvert.pl standard |”
And for VAdmin QMail logfiles (multi-host/virtualhost mail servers running vadmin software), set
LogFile=”perl /usr/local/awstats/tools/maillogconvert.pl vadmin < /var/log/maillog |"
Then, whatever is you mail server, you must also change:
LogType=M
LogFormat=”%time2 %email %email_r %host %host_r %method %url %code %bytesd”
SiteDomain=”mail.test.com”
HostAliases=”mail.test.com 192.168.0.3″
DirData=”/usr/local/share/awstats/mail”
LevelForBrowsersDetection=0
LevelForOSDetection=0
LevelForRefererAnalyze=0
LevelForRobotsDetection=0
LevelForWormsDetection=0
LevelForSearchEnginesDetection=0
LevelForFileTypesDetection=0
ShowMenu=1
ShowSummary=HB
ShowMonthStats=HB
ShowDaysOfMonthStats=HB
ShowDaysOfWeekStats=HB
ShowHoursStats=HB
ShowDomainsStats=0
ShowHostsStats=HBL
ShowAuthenticatedUsers=0
ShowRobotsStats=0
ShowEMailSenders=HBML
ShowEMailReceivers=HBML
ShowSessionsStats=0
ShowPagesStats=0
ShowFileTypesStats=0
ShowFileSizesStats=0
ShowBrowsersStats=0
ShowOSStats=0
ShowOriginStats=0
ShowKeyphrasesStats=0
ShowKeywordsStats=0
ShowMiscStats=0
ShowHTTPErrorsStats=0
ShowSMTPErrorsStats=1
统计主机日志
# /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -config=mail.test.com -update -lang=cn
你可以生成一个静态页面来浏览信息
# perl awstats.pl -config=ftp.test.com -output -staticlinks -lang=cn> awstats.mail.test.com.html
定时统计主机日志
#update awstats
30 7 * * * root /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -config=mail.test.com -update -lang=cn
测试
http://192.168.0.1/awstats/awstats.pl?config=mail.test.com