生命之中的最大错误在于:终日担心犯错误。— 爱尔伯特·哈伯德 (Elbert Hubbard 1856-1915),《笔记》
注:以下代码按history整理,仅供参考
第一步:下载awstats
第二步:安装ip库
第三步:下载js文件方便按天浏览
#download js
http://www.internetofficer.com/awstats/day-by-day/
下载后放js目录吧,懂的
第四步:配置网站文件
第五步:配置网站访问吧,比如lighttpd
$HTTP["host"] == "awstats.aslibra.com" {
server.document-root = "/Data/webapps/awstats/wwwroot/"
cgi.assign = ( ".pl" => "/usr/bin/perl")
}
第六步:配置计划任务?
按你日志的切割方式,定期执行处理任务
参考阅读:
1 AWStats Installation, Configuration and Reporting
2 AWStats简介:Apache/Windows IIS的日志分析工具的下载,安装,配置样例和使用
3 AWStats按天分析日志:databasebreak=day
4 AWStats Day by Day
第一步:下载awstats
wget http://prdownloads.sourceforge.net/awstats/awstats-7.0.tar.gz
tar xfz awstats-7.0.tar.gz
mv awstats-7.0 /Data/webapps/awstats
tar xfz awstats-7.0.tar.gz
mv awstats-7.0 /Data/webapps/awstats
第二步:安装ip库
wget http://geolite.maxmind.com/download/geoip/api/c/GeoIP.tar.gz
tar xfz GeoIP.tar.gz
cd /Data/tgz/awstats/GeoIP-1.4.7/
./configure
make && make install
cd ..
wget http://geolite.maxmind.com/download/geoip/api/perl/Geo-IP-1.39.tar.gz
tar xfz Geo-IP-1.39.tar.gz
cd Geo-IP-1.39
perl Makefile.PL
make && make install
cd ..
wget http://search.cpan.org/CPAN/authors/id/G/GM/GMPASSOS/Geo-IPfree-0.2.tar.gz
tar xfz Geo-IPfree-0.2.tar.gz
cd Geo-IPfree-0.2
perl Makefile.PL
make && make install
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
gunzip GeoLiteCity.dat.gz
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
gunzip GeoIP.dat.gz
mkdir /Data/webapps/awstats/wwwroot/data/
mv *.dat /Data/webapps/awstats/wwwroot/data/
tar xfz GeoIP.tar.gz
cd /Data/tgz/awstats/GeoIP-1.4.7/
./configure
make && make install
cd ..
wget http://geolite.maxmind.com/download/geoip/api/perl/Geo-IP-1.39.tar.gz
tar xfz Geo-IP-1.39.tar.gz
cd Geo-IP-1.39
perl Makefile.PL
make && make install
cd ..
wget http://search.cpan.org/CPAN/authors/id/G/GM/GMPASSOS/Geo-IPfree-0.2.tar.gz
tar xfz Geo-IPfree-0.2.tar.gz
cd Geo-IPfree-0.2
perl Makefile.PL
make && make install
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
gunzip GeoLiteCity.dat.gz
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
gunzip GeoIP.dat.gz
mkdir /Data/webapps/awstats/wwwroot/data/
mv *.dat /Data/webapps/awstats/wwwroot/data/
第三步:下载js文件方便按天浏览
#download js
http://www.internetofficer.com/awstats/day-by-day/
下载后放js目录吧,懂的
第四步:配置网站文件
cd /Data/webapps/awstats/wwwroot/cgi-bin/
mv awstats.model.conf common.conf
### vi common.conf: 启用一些插件
LoadPlugin="decodeutfkeys"
LoadPlugin="geoip GEOIP_STANDARD /Data/webapps/awstats/wwwroot/data/GeoIP.dat"
LoadPlugin="geoip_city_maxmind GEOIP_STANDARD /Data/webapps/awstats/wwwroot/data/GeoLiteCity.dat"
mkdir /Data/webapps/awstats/wwwroot/output
### vi awstats.www.conf 配置网站参数
Include "common.conf"
LogFile="/Data/logs/date/%YYYY-1/%MM-1/%DD-1/%HH-1/www.log"
SiteDomain="www.aslibra.com"
HostAliases="aslibra.com"
DefaultFile="index.html"
DirData="/Data/webapps/awstats/wwwroot/output/"
HTMLHeadSection="<script language=javascript src="/js/day-by-day-head.js"></script>"
HTMLEndSection="<script language=javascript src="/js/day-by-day-end.js"></script>"
mv awstats.model.conf common.conf
### vi common.conf: 启用一些插件
LoadPlugin="decodeutfkeys"
LoadPlugin="geoip GEOIP_STANDARD /Data/webapps/awstats/wwwroot/data/GeoIP.dat"
LoadPlugin="geoip_city_maxmind GEOIP_STANDARD /Data/webapps/awstats/wwwroot/data/GeoLiteCity.dat"
mkdir /Data/webapps/awstats/wwwroot/output
### vi awstats.www.conf 配置网站参数
Include "common.conf"
LogFile="/Data/logs/date/%YYYY-1/%MM-1/%DD-1/%HH-1/www.log"
SiteDomain="www.aslibra.com"
HostAliases="aslibra.com"
DefaultFile="index.html"
DirData="/Data/webapps/awstats/wwwroot/output/"
HTMLHeadSection="<script language=javascript src="/js/day-by-day-head.js"></script>"
HTMLEndSection="<script language=javascript src="/js/day-by-day-end.js"></script>"
第五步:配置网站访问吧,比如lighttpd
$HTTP["host"] == "awstats.aslibra.com" {
server.document-root = "/Data/webapps/awstats/wwwroot/"
cgi.assign = ( ".pl" => "/usr/bin/perl")
}
第六步:配置计划任务?
按你日志的切割方式,定期执行处理任务
/Data/webapps/awstats/wwwroot/cgi-bin/awstats.pl \
-update -databasebreak=day -config=www -lang=cn
-update -databasebreak=day -config=www -lang=cn
参考阅读:
1 AWStats Installation, Configuration and Reporting
2 AWStats简介:Apache/Windows IIS的日志分析工具的下载,安装,配置样例和使用
3 AWStats按天分析日志:databasebreak=day
4 AWStats Day by Day
为什么要用awstats?
1 你需要知道服务器流量都怎么导致的
2 你想查处莫名其妙的流量
awstats会给你很多网页访问统计系统无法告诉你的问题:流量分配,你不需要知道,那就不用它。
怎么做搭建?
下载安装awstats即可,我这里就不重复了,参考文章附录的参考资料。
Nginx怎么记录日志?
Nginx默认的日志格式就是awstats需要的,所以你不需要重新定义即可使用。
加buffer参数估计可以对日志效率有提高。
Nginx的日志切割脚本
别人写的脚本都太简单,不太适应,自己重新整理一下,合用的朋友可以借鉴一下
nginx_log_cut.sh
加入计划任务即可
配置awstats的配置文件
其它就不说了,我这里的脚本是按小时切割的,所以说一下格式:
使用实例
发现了一个网页文件存取次数最多,可网页受访却没有那么多,后来发现是有一个域名设置302跳转到此而导致的。
发现异常流量,可以看到awstats里面的流量比较大的ip,可以确认了那可以用iptables封禁异常的ip。
发现404错误,自己调整好。
1 你需要知道服务器流量都怎么导致的
2 你想查处莫名其妙的流量
awstats会给你很多网页访问统计系统无法告诉你的问题:流量分配,你不需要知道,那就不用它。
怎么做搭建?
下载安装awstats即可,我这里就不重复了,参考文章附录的参考资料。
Nginx怎么记录日志?
Nginx默认的日志格式就是awstats需要的,所以你不需要重新定义即可使用。
加buffer参数估计可以对日志效率有提高。
server {
server_name www.aslibra.com;
location / { proxy_pass http://backend; }
access_log /Data/logs/access.www.aslibra.com.log combined buffer=32k;
}
server_name www.aslibra.com;
location / { proxy_pass http://backend; }
access_log /Data/logs/access.www.aslibra.com.log combined buffer=32k;
}
Nginx的日志切割脚本
别人写的脚本都太简单,不太适应,自己重新整理一下,合用的朋友可以借鉴一下
nginx_log_cut.sh
#!/bin/sh
#日志最小记录
Min_Row=50
Log_Dir=/Data/logs
Nginx_Dir=/Data/apps/nginx
#你的日志格式
Date_Dir="/Data/logs/date/"`date +%Y/%m/%d/%H -d "1 hours ago" `
echo ""
echo "=== "`date`" ==="
echo "Date_Dir: $Date_Dir"
if [ ! -d $Date_Dir ];then
mkdir -p $Date_Dir
fi
#你的所有域名日志
Logs="www.aslibra.com\
test.aslibra.com"
#注意,0.7才支持 -s 参数,否则你需要用 kill -USR1 方式
#把buffer都写入文件
$Nginx_Dir/sbin/nginx -s reopen
for domain in $Logs;do
if [ -f $Log_Dir/access.$domain.log ];then
Row=`wc -l $Log_Dir/access.$domain.log | awk '{print $1}'`
if [ $Row -gt $Min_Row ];then
if [ -f $Date_Dir/$domain.log ];then
echo "Append: "$Log_Dir/access.$domain.log
cat $Log_Dir/access.$domain.log >> $Date_Dir/$domain.log
rm -f $Log_Dir/access.$domain.log
else
echo "Move: "$Log_Dir/access.$domain.log
mv $Log_Dir/access.$domain.log $Date_Dir/$domain.log
fi
else
echo "Delete(less then $Min_Row Rows): "$Log_Dir/access.$domain.log
rm -f $Log_Dir/access.$domain.log
fi
fi
done
#重开日志
$Nginx_Dir/sbin/nginx -s reopen
#日志最小记录
Min_Row=50
Log_Dir=/Data/logs
Nginx_Dir=/Data/apps/nginx
#你的日志格式
Date_Dir="/Data/logs/date/"`date +%Y/%m/%d/%H -d "1 hours ago" `
echo ""
echo "=== "`date`" ==="
echo "Date_Dir: $Date_Dir"
if [ ! -d $Date_Dir ];then
mkdir -p $Date_Dir
fi
#你的所有域名日志
Logs="www.aslibra.com\
test.aslibra.com"
#注意,0.7才支持 -s 参数,否则你需要用 kill -USR1 方式
#把buffer都写入文件
$Nginx_Dir/sbin/nginx -s reopen
for domain in $Logs;do
if [ -f $Log_Dir/access.$domain.log ];then
Row=`wc -l $Log_Dir/access.$domain.log | awk '{print $1}'`
if [ $Row -gt $Min_Row ];then
if [ -f $Date_Dir/$domain.log ];then
echo "Append: "$Log_Dir/access.$domain.log
cat $Log_Dir/access.$domain.log >> $Date_Dir/$domain.log
rm -f $Log_Dir/access.$domain.log
else
echo "Move: "$Log_Dir/access.$domain.log
mv $Log_Dir/access.$domain.log $Date_Dir/$domain.log
fi
else
echo "Delete(less then $Min_Row Rows): "$Log_Dir/access.$domain.log
rm -f $Log_Dir/access.$domain.log
fi
fi
done
#重开日志
$Nginx_Dir/sbin/nginx -s reopen
加入计划任务即可
0 * * * * root /Data/scripts/nginx_log_cut.sh >>/Data/logs/log_cut.log
配置awstats的配置文件
其它就不说了,我这里的脚本是按小时切割的,所以说一下格式:
LogFile="/Data/logs/date/%YYYY-1/%MM-1/%DD-1/%HH-1/www.aslibra.com.log"
使用实例
发现了一个网页文件存取次数最多,可网页受访却没有那么多,后来发现是有一个域名设置302跳转到此而导致的。
发现异常流量,可以看到awstats里面的流量比较大的ip,可以确认了那可以用iptables封禁异常的ip。
发现404错误,自己调整好。




