什么是网站日志
网站为什么会有日志,日志是用来做什么的呢?网站的日志是记录web服务器,响应用户请求的接受和处理记录,另外,还会包含这些请求是否正常响应的状态信息,也叫做响应状态码,状态码有很多种,分别对应不同的情况,方便我们查询对应状态码,大体确认问题所在。通常来说,原始信息以log作为文件的扩展名,而linux主机的日志文件,会以日志文件创建顺序直接作为完整的文件名存储,以ascii编码存储。
网站日志开启
我们常见的是nginx和apache,默认情况下都是开启的,分为access.log
和error.log
两个,分别是访问日志和错误日志。但是如果发现你的网站没有日志文件,那么你也可以配置开启,一般情况下我们都是按照不同的虚拟主机单独配置访问日志,默认是全部放一起的。下面是针对虚拟主机的日志配置。
Nginx日志配置
server { ... #关键字 格式标签 日志格式 #log_format#指定日志保存位置 access_log logs/access.log main; ...}
Apache日志配置
... ErrorLog "logs/test.com_error_log" CustomLog "logs/test.com_access_log" combined # 这里应用 combined 格式的日志 ...
日志记录是什么样子的
下面是一条基本格式的nginx日志:
156.231.81.202 - - [26/Mar/2020:14:47:47 +0800] "GET / HTTP/1.1" 200 11393 "-" "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)"
其中包含客户端IP、日期、时间、时区、访问方式、访问URL、协议版本、状态码、传输字节、响应消耗时间、UserAgent等信息。
分析日志的目的是什么
通过日志分析,我们可以从中得到有多少IP地址来访,又访问了多少页面,以及访问的增长趋势,访客的访问行为特征,通过什么关键词来到网站,停留时间最多的是哪些页面,发现跳出率过高的页面进行改善,甚至可以分析出用户行为特征和习惯,构建模型来提高页面广告的点击提高网站的点击率展现量等。
如何分析日志?自动还是手动?
众所周知的分析工具有基于服务器的awstats、Webalizer、GoAccess,通过js脚本获取前端统计数据的GA、CNZZ、百度统计等,有了这些自动化的工具之后,我们为什么还要自己苦哈哈的分析原始日志呢?原因在于基于服务器的一般数据量都比较大,利用软件分析的效率不太好;而基于js脚本的在线分析方式,对于站点最大流量是有一定限制的,很多对于非常大的数据流量会采取采样的解决方式,所以,数据的准确定肯定会有所下降。
我们伟致信息在网站维护当中用的比较多的工具就是GoAccess,开源的,大家可以试试。
通过上面的介绍,大家应该大致知道日志的作用以及为什么要分析日志。但是日志文件那么大,往往我们拿到的日志记录文件,一天的数据就有很多了,小的几百MB,而大的每个文件会超过GB,对于动辄几十GB甚至上百GB如此大体量的日志进行分析,海量的数据中,怎么样才能最短的时间内,找到对于我们来说有帮助的数据呢,进行快速的日志分析,一定要掌握好分析的思路。针对这种大数据量的日志,分析工具就不靠谱了,至少效率上大大不能满足要求。
下面来简单说说日志分析的思路:
首先要确定你分析的是什么问题,先把问题明确了,才能知道你需要哪些维度的数据。比如如果是收录大量被搜索引擎K掉了,那么必然会涉及到的维度有
-
日期和时间
-
页面URL
-
抓取状态
-
user-agent
其中页面URL来确定目标页面,抓取状态来标注响应行为,user-agent来区分不同的搜索引擎。但是,并不是所有的页面都丢失,所以,为了缩小分析范围,需要找出是哪些搜索引擎K掉了页面,而被K掉的页面,是不是存在某些页面特征,这样讲特定的记录从海量记录中拆分出来,缩小分析范围和难度。
其次,要明确我们需要什么样的数据,需要的数据周期是多久的才能对问题的分析起到最恰当的帮助,并不是时间跨度越久越好,一定要避免不必要的时间的浪费,只做我们最需要的分析。比如页面丢失的话,通常需要页面的收录状态数据,页面抓取数据量和频率数据,和抓取量趋势数据,如果抓取量趋势负增长,首先就需要5XX系类和4XX系列错误状态趋势数据,5XX系类错误必须要引起警惕,及时发现,马上进行处理,拖延不得。
最后,我们预判的问题结症是什么,得到数据之后,通过分析,是否能够证实我们的推断,作为有力的证据来说明问题的存在和怎么样排除问题。当然了,这个过程中,可能还会发生之前预计的数据无法满足需求,那么就需要重新发起需求,再做分析。
快速的日志分析,必须明确思路,我们面临什么样的问题,我们现有的数据和将需要的数据,预判的问题是否能得到有力证明,如果不行,那么就要重新评估问题。
最后一句话,小文件的日志分析,通过工具挺方便,针对上GB的日志文件,还得用Linux命令。不过针对大文件,先用命令过滤,再用工具分析也是不错的选择。