Log Analysis

日志(log)

1、日志概念:以标准化的格式做的记录。

2、日志的通用格式:"%h %l %u %t \"%r\" %>s %b"

如:127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326

- 127.0.0.1(%h):发起请求的客户端IP地址

- "-"(%l):用户身份(未知)

- frank(%u):作者

-[10/Oct/2000:13:55:36 -0700](%t):日期

      • day = 2 digits
      • month = 3 letters
      • year = 4 digits
      • hour = 2 digits
      • minute = 2 digits
      • second = 2 digits
      • zone = (+ | -) 4 digits

-"GET /apache_pb.gif HTTP/1.0"(\"%r\"):客户端请求字符串,包含三部分:1)请求方式 ( GET、POST ),2)访问路径,3)客户端协议版本

- 200(%>s):状态码,三位数

-2326 (%b):字节数,表示返回数据的大小,如果没有返回任何内容,这个值会是"-" (也有时候会是0)

3、日志分析的重要性:模型训练的数据实质上来自于日志,人们在网上的日常活动大多以日志的形式记录下来,从日志中提取整理出的格式化数据保存于表格或HDFS上,用于建模。因此日志是最重要的数据来源之一。

日志格式化

1、读取数据:读取日志并查看数据格式。

2、明确目标:解析日志的目标是把数据转化为格式化的数据,以表的形式展示。

3、转换方式:将每条日志分拆成多个部分,每个部分有实际的物理含义,即每个item为Row形式。

4、一条日志的分析:

  • 字符串不固定,不能直接拆分。
  • 每部分的数据都有自己本身的实际意义,即有固定的模式,因此可以使用正则表达式提取数据。
  • 用正则表达式可能匹配不到数据,需要做异常处理,还要注意正则的成功率。(数据量过大时可以先随机抽样部分数据,检验正则效率,进行完善。)
  • 日期数据要处理为datetime类型,以便得到星期、假期等更有意义的数据。

日志解析

以上得到格式化的日志数据,开始进行分析。

1、初步解析:对发送请求的客户端、发送请求的访问路径、返回的状态码、数据大小做统计,并做可视化。

  • 目的:了解客户端的地域分布,服务器响应是否正常。
  • 方法:① map() 得到 pair RDD ② reduceByKey() 进行统计。③ takeOrdered( mun:int , implicit ord: Ordering[T] ) 按照一定排序规则(默认升序),返回前num个元素。

2、进一步解析:请求成功及失败最高的访问路径,访问服务器的客户端总个数,每天有多少客户端访问,每个host的平均请求次数,

  • 目的:进一步了解访问最多的host,访问路径,网页链接的有效性。
  • 具体分析内容:总访问量(总host数),每日的访问量(每日host数),每日每位客户端平均访问次数。对状态码404的host,访问路径,访问时段等信息进行分析。(404错误表示链接指向的网页不存在,过多的404错误会影响网站流量,需要及时维护。可能是客户端问题,也可能是服务器端问题。)

猜你喜欢

转载自www.cnblogs.com/colorfulday/p/10850581.html
log
今日推荐