为什么要用awstats?
1 你需要知道服务器流量都怎么导致的
2 你想查处莫名其妙的流量
awstats会给你很多网页访问统计系统无法告诉你的问题:流量分配,你不需要知道,那就不用它。
怎么做搭建?
下载安装awstats即可,我这里就不重复了,参考文章附录的参考资料。
Nginx怎么记录日志?
Nginx默认的日志格式就是awstats需要的,所以你不需要重新定义即可使用。
加buffer参数估计可以对日志效率有提高。
Nginx的日志切割脚本
别人写的脚本都太简单,不太适应,自己重新整理一下,合用的朋友可以借鉴一下
nginx_log_cut.sh
加入计划任务即可
配置awstats的配置文件
其它就不说了,我这里的脚本是按小时切割的,所以说一下格式:
使用实例
发现了一个网页文件存取次数最多,可网页受访却没有那么多,后来发现是有一个域名设置302跳转到此而导致的。
发现异常流量,可以看到awstats里面的流量比较大的ip,可以确认了那可以用iptables封禁异常的ip。
发现404错误,自己调整好。
安装awstats参考资料
1 awstat实现网站访问信息统计
2 AWStats简介:Apache/Windows IIS的日志分析工具的下载,安装,配置样例和使用
3 AWStats Installation, Configuration and Reporting
4 awstats官网
原创内容如转载请注明:来自 阿权的书房
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错误,自己调整好。
安装awstats参考资料
1 awstat实现网站访问信息统计
2 AWStats简介:Apache/Windows IIS的日志分析工具的下载,安装,配置样例和使用
3 AWStats Installation, Configuration and Reporting
4 awstats官网
原创内容如转载请注明:来自 阿权的书房
收藏本文到网摘
shell笔记_1
Ubuntu9.04体验
