什么是路径分析:
通过对日志文件中目录结构的分析,并统计每个目录出现的次数,最终形成次序的路径数量统计。
web服务器包括很多,iis,apache,nginx等等。首先要搞清楚什么是服务器日志,因为今天小伙伴问我,日志是什么来的,是不是从数据库中来的?我想很多不懂技术的人对这个都不是很清楚,他是搞数据分析的,自然对技术不了解。
服务器日志:客户端(网页,手机端,其他移动端等等)与服务器进行的任何通信,都会被记录记录下来,包括:时间,客户端类型,访问来源,ip地址,访问状态。
例如下面的web service nginx的日志
118.186.156.230 - - [11/Jul/2014:13:20:07 +0800] “POST /business/checkMemberRank HTTP/1.1″ 200 14 “http://oppor.99114.co m/oftenCate/skipProsupplyBasic?code=121105103&category=%25E5%25AE%25B6%25E7%2594%25A8%25E7%2594%25B5%25E5%2599%25A8%2520 %253E%2520%25E5%25AE%25B6%25E7%2594%25B5%2520%253E%2520%25E7%25A9%25BA%25E6%25B0%2594%25E5%2587%2580%25E5%258C%2596%25E5 %2599%25A8%25E3%2580%2581%25E6%25B0%25A7%25E6%25B0%2594%25E6%259C%25BA” “Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5 .1; Trident/4.0)” -
上面看上去很乱,其实是有规则的,如下:
log_format access ‘$remote_addr - $remote_user [$time_local] “$request” ‘‘$status $body_bytes_sent “$http_referer” ‘‘”$http_user_agent” $http_x_forwarded_for’;
其中,各个字段的含义如下:
1.$remote_addr 与$http_x_forwarded_for 用以记录客户端的ip地址;
2.$remote_user :用来记录客户端用户名称;
3.$time_local : 用来记录访问时间与时区;
4.$request : 用来记录请求的url与http协议;
5.$status : 用来记录请求状态;成功是200,
6.$body_bytes_s ent :记录发送给客户端文件主体内容大小;
7.$http_referer :用来记录从那个页面链接访问过来的;
8.$http_user_agent :记录客户端浏览器的相关信息;
既然日志文件本身是有规则的,那么问题来了,到底如何来分析日志呢?
其实方法有很多,不过我用的是sell的 awk和sed,awk是竖向的对数据进行分割,而sed是横向分割。下面是我写的一段代码,也是核心分割部分
for ii in $(ls /data/logs/$i/ -u1 |sed -n 1p)
do
echo /data/logs/$i/$ii
name=`echo $ii|awk -F '.' '{print $1}'`
date=`echo $ii|awk -F '.' '{print $4}'`
tar xvf /data/logs/$i/$ii -C /root/outdata/
mv /root/outdata/* /root/outdata/data.log
awk ' $9 != 444 && $9 != 404 {print $4 "`" $1 "`" $7 "`" $11}' /root/outdata/data.log |grep -v -E '.js|.gif|.ico|.css|.jpg|.png' >out.log
sed -i 's/20[0-9][0-9]:/2014 /g' out.log
sed -i "s/\"//g" out.log
sed -i 's/\[//g' out.log
month=`date +%b --date="-1 day"`
day=`date +%d --date="-1 day"`
#request ur
awk -F '`' '{print $3}' out.log |sort |uniq -c |sort -rn|sed 's/^[ \t]*//'>/root/shell/request/$name-$date.txt
awk负责分割,也是可以进行统计的,所以就可以对文件路劲进行统计,计算每次产生的次数,总是是各种循环了。最后形成一个路径的统计数据。
为了更好的查看,我做成了表格和图装两种形式,参考一下demo版本吧 www.webmapdata.com 至于数据可视化方面的东西,也是要好好做的,体验很重要,这对数据分析的结果也是非常重要的,对于可视化这块下次再聊喽,到此为止。