server日志的路径分析

什么是路径分析:

通过对日志文件中目录结构的分析,并统计每个目录出现的次数,最终形成次序的路径数量统计。

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 至于数据可视化方面的东西,也是要好好做的,体验很重要,这对数据分析的结果也是非常重要的,对于可视化这块下次再聊喽,到此为止。

  • 本文来自:Linux学习网
posted @ 2015-01-08 11:20  zdh2015  阅读(238)  评论(0编辑  收藏  举报