如何进行快速的日志分析

2013-04-25
  • 1241
  • 0

什么是网站日志

网站为什么会有日志,日志是用来做什么的呢?网站的日志是记录web服务器,响应用户请求的接受和处理记录,另外,还会包含这些请求是否正常响应的状态信息,也叫做响应状态码,状态码有很多种,分别对应不同的情况,方便我们查询对应状态码,大体确认问题所在。通常来说,原始信息以log作为文件的扩展名,而linux主机的日志文件,会以日志文件创建顺序直接作为完整的文件名存储,以ascii编码存储。

日志记录是什么样子的

下面是一条基本格式的apache日志:

220.181.108.122 [12/Mar/2012:20:11:24 +0800] "GET http://www.xxxxxx.com/list_prouduct.html HTTP/1.1" 200 168484 0.335 "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)"

其中包含客户端IP、日期、时间、时区、访问方式、访问URL、协议版本、状态码、传输字节、响应消耗时间、UserAgent等信息。

分析日志的目的是什么

通过日志分析,我们可以从中得到有多少IP地址来访,又访问了多少页面,以及访问的增长趋势,访客的访问行为特征,通过什么关键词来到网站,停留时间最多的是哪些页面,发现跳出率过高的页面进行改善,甚至可以分析出用户行为特征和习惯,构建模型来提高页面广告的点击,和电商网站帮助促成更多交易等。

有了自动化工具,为什么还要人工分析日志呢

众所周知的分析工具有基于服务器的awstats、Webalizer,通过js脚本获取前端统计数据的GA、CNZZ、百度统计等,有了这些自动化的工具之后,我们为什么还要自己苦哈哈的分析原始日志呢?原因在于,基于服务器的一般数据量太大了,指望软件自动,基本没戏;js脚本的在线分析方式,对于站点最大流量是有一定限制的,很多对于非常大的数据流量会采取采样的解决方式,所以,数据的准确定肯定会有所下降。

说了这么多,你应该明白日志分析的必要性了。但是日志文件那么大,往往我们拿到的日志记录文件,一天的数据就有很多了,而每个文件的大小都会超过GB,对于动辄几十GB甚至上百GB如此大体量的日志进行分析,海量的数据中,怎么样才能最短的时间内,找到对于我们来说有帮助的数据呢,进行快速的日志分析,一定要掌握好分析的思路。

下面来简单说说日志分析的思路:

首先要确定你分析的是什么问题,先把问题明确了,才能知道你需要哪些维度的数据:比如如果是收录大量被搜索引擎K掉了,那么必然会涉及到的维度有

1、日期和时间

2、页面URL

3、抓取状态

4、user-agent

其中页面URL来确定目标页面,抓取状态来标注响应行为,user-agent来区分不同的搜索引擎。但是,并不是所有的页面都丢失,所以,为了缩小分析范围,需要找出是哪些搜索引擎K掉了页面,而被K掉的页面,是不是存在某些页面特征,这样讲特定的记录从海量记录中拆分出来,缩小分析范围和难度。

其次,要明确我们需要什么样的数据,需要的数据周期是多久的才能对问题的分析起到最恰当的帮助,并不是时间跨度越久越好,一定要避免不必要的时间的浪费,只做我们最需要的分析。比如页面丢失的话,通常需要页面的收录状态数据,页面抓取数据量和频率数据,和抓取量趋势数据,如果抓取量趋势负增长,首先就需要5XX系类和4XX系列错误状态趋势数据,5XX系类错误必须要引起警惕,及时发现,马上进行处理,拖延不得。

最后,我们预判的问题结症是什么,得到数据之后,通过分析,是否能够证实我们的推断,作为有力的证据来说明问题的存在和怎么样排除问题。当然了,这个过程中,可能还会发生之前预计的数据无法满足需求,那么就需要重新发起需求,再做分析。

快速的日志分析,必须明确思路,我们面临什么样的问题,我们现有的数据和将需要的数据,预判的问题是否能得到有力证明,如果不行,那么就要重新评估问题。