技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 系统运维 --> server日志的路径分析

server日志的路径分析

浏览:9910次  出处信息

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

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

建议继续学习:

  1. AWStats简介:Apache/Windows IIS的日志分析工具的下载,安装,配置样例和使用(含6.9中文定义补丁)    (阅读:8639)
  2. 利用脚本分析日志并利用snmp自定义OID,再通过cacti画图    (阅读:8549)
  3. tomcat catalina.out日志切割每天生成一个文件    (阅读:7951)
  4. 分布式日志系统scribe使用手记    (阅读:7885)
  5. AWStats是一个基于Perl的WEB日志分析工具。    (阅读:5985)
  6. 使用nginx记日志    (阅读:4806)
  7. 大于2GB的Listener.log和运行超过198天的主机上的Oracle实例    (阅读:4675)
  8. 在 shell 脚本里打日志    (阅读:4647)
  9. Sentry: 错误日志集中管理    (阅读:4212)
  10. 多服务器的日志合并统计――apache日志的cronolog轮循    (阅读:4064)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1