Log日志数据分析

11个月前 (09-30) dyfwind 个人随记 0评论 已收录 733℃

我特么终于知道错哪了,之前源数据我用的是自己筛选过的,难怪只能监测到28个。。。。

必要说明,这个脚本是本人从自己领导网站荡来的,几经操作测试,老铁没毛病(以后还是老老实实学我的python吧);

首先数据整理,删除本站IP,清除#、空格等无意义内容;

由于一开始将#类似的内容变成了空格,导致存在两个空格,引起筛选出的数据异常,因此我加了一段s/  / /g;;

剩下一切正常,得到日志中所需的内容;


cat aizuna_log.log | grep Baiduspider/ | sed -e 's/##/ /g;s/ / /g;'>baidu.log
cat aizuna_log.log | grep Googlebot/ | sed -e 's/##/ /g;s/ / /g;'>google.log
export LC_ALL=C
mkdir baidu
awk '{print $15}' baidu.log |sort|uniq -c|sort -nr |awk '{print $2 "\t" $1}' >baidu/baiduma.log
awk '($15 ~/200/)' baidu.log | awk '{print $15,$6}' | sort >baidu/baidu200.log
awk '($15 ~/404/)' baidu.log | awk '{print $15,$6}' | sort >baidu/baidu404.log
awk '($15 ~/301/)' baidu.log | awk '{print $15,$6}' | sort >baidu/baidu301.log
awk '($15 ~/302/)' baidu.log | awk '{print $15,$6}' | sort >baidu/baidu302.log
awk '($15 ~/500/)' baidu.log | awk '{print $15,$6}' | sort >baidu/baidu500.log
awk '($15 ~/503/)' baidu.log | awk '{print $15,$6}' | sort >baidu/baidu503.log
awk '($15 ~/504/)' baidu.log | awk '{print $15,$6}' | sort >baidu/baidu504.log
grep ' 200 ' baidu.log | awk '{print $6}' | sort | uniq -c | sort -nr | head -n 100 >baidu/baidu200n.log
awk '{print $6}' baidu.log | awk -F '[^/(a-zA-Z)/$]' '$1=$1' | awk '{print $1}' |sort|uniq -c|sort -nr|head -100 >baidu/baidumulu.log
cat baidu.log | grep Baiduspider/ |awk '{print $6}'|sort |uniq -c >baidu/baiduspiderurl.txt
mkdir google
awk '{print $15}' google.log |sort|uniq -c|sort -nr |awk '{print $2 "\t" $1}' >google/googlema.log
awk '($15 ~/200/)' google.log | awk '{print $15,$6}' | sort >google/google200.log
awk '($15 ~/404/)' google.log | awk '{print $15,$6}' | sort >google/google404.log
awk '($15 ~/301/)' google.log | awk '{print $15,$6}' | sort >google/google301.log
awk '($15 ~/302/)' google.log | awk '{print $15,$6}' | sort >google/google302.log
awk '($15 ~/500/)' google.log | awk '{print $15,$6}' | sort >google/google500.log
awk '($15 ~/503/)' google.log | awk '{print $15,$6}' | sort >google/google503.log
awk '($15 ~/504/)' google.log | awk '{print $15,$6}' | sort >google/google504.log
grep ' 200 ' google.log | awk '{print $6}' | sort | uniq -c | sort -nr | head -n 100 >google/google200n.log
awk '{print $6}' google.log | awk -F '[^/(a-zA-Z)/$]' '$1=$1' | awk '{print $1}' |sort|uniq -c|sort -nr|head -100 >google/googlemulu.log
cat google.log | grep Googlebot/ |awk '{print $6}'|sort |uniq -c >google/googlespiderurl.txt
mkdir perhour
cd perhour
mkdir baidu
mkdir google
cd ../

for((i=0;i<=23;i++))
do
if((i<10))
then
grep -c '17:0'$i:..:.. baidu.log >perhour/baidu/$i.txt
grep -c '17:0'$i:..:.. google.log >perhour/google/$i.txt
else
grep -c '17:'$i:..:.. baidu.log >perhour/baidu/$i.txt
grep -c '17:'$i:..:.. google.log >perhour/google/$i.txt
fi
done
cat perhour/baidu/* >baidu/bdhuizong.log
cat perhour/google/* >google/gghuizong.log
rm -r perhour


文件说明:
rzql.log为日志清理后文件
baiduma.log 百度抓取状态码
googlema.log 谷歌抓取状态码
baidu404.log 百度404
baidu200n.log 提取百度蜘蛛访问码为200的前100个页面及访问次数,并按降序排列
baidumulu.log 提取百度蜘蛛访问数量前100的网站目录及访问次数,并按降序排列
baiduspiderurl.txt 把蜘蛛抓取的不重复URL导出来
bdhuizong.log 为百度分时段统计抓取量
gghuizong.log 为google分时段统计抓取量
其它依次类推。。。

原文参考:sunweiwei.com/889/


另外的需求,区分M端和PC端的数据

so easy,cat的时候,加个grep www.dyfwind.com和m.dyfwind.com做个区分就好;

效果是一样的,就是多几步操作和文件夹,自己稍微整理下就好,至于整合这个功能,暂时没想法。。。

博主

这货来去如风,什么鬼都没留下!!!

相关推荐

嗨、骚年、快来消灭0回复。