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 至于数据可视化方面的东西,也是要好好做的,体验很重要,这对数据分析的结果也是非常重要的,对于可视化这块下次再聊喽,到此为止。
建议继续学习:
- AWStats简介:Apache/Windows IIS的日志分析工具的下载,安装,配置样例和使用(含6.9中文定义补丁) (阅读:8833)
- 利用脚本分析日志并利用snmp自定义OID,再通过cacti画图 (阅读:8671)
- tomcat catalina.out日志切割每天生成一个文件 (阅读:8066)
- 分布式日志系统scribe使用手记 (阅读:8022)
- AWStats是一个基于Perl的WEB日志分析工具。 (阅读:6089)
- 使用nginx记日志 (阅读:5047)
- 大于2GB的Listener.log和运行超过198天的主机上的Oracle实例 (阅读:4841)
- 在 shell 脚本里打日志 (阅读:4767)
- Sentry: 错误日志集中管理 (阅读:4335)
- 多服务器的日志合并统计――apache日志的cronolog轮循 (阅读:4177)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:数据抓取 来源: 数据抓取
- 标签: 日志
- 发布时间:2014-12-29 00:07:57
- [66] Go Reflect 性能
- [66] Oracle MTS模式下 进程地址与会话信
- [65] 如何拿下简短的域名
- [59] IOS安全–浅谈关于IOS加固的几种方法
- [59] android 开发入门
- [59] 图书馆的世界纪录
- [58] 【社会化设计】自我(self)部分――欢迎区
- [53] 视觉调整-设计师 vs. 逻辑
- [47] 界面设计速成
- [47] 读书笔记-壹百度:百度十年千倍的29条法则