阅读88 返回首页    go 阿里云 go 技术社区[云栖]


日志系列---前端访问日志的统计分析

简介

很多个人站长在搭建网站时使用nginx作为服务器,为了了解网站的访问情况,一般有两种手段:

  1. 使用CNZZ之类的方式,在前端页面插入js,用户访问的时候触发js,记录访问请求。
  2. 分析nginx的access log,从日志中挖掘有用信息。

两种方式各有优缺点:

  1. CNZZ使用起来比较简单,各种指标定义清楚。但这种方式只能记录页面的访问请求,像ajax之类的请求是无法记录的,还有爬虫信息也不会记录。
  2. access log对所有的请求都有记录,可以说信息非常详细,但需要站长对访问日志具备详细的了解和动手能力。

两种手段相互补充,才能对网站的状况有更加深入的了解。

阿里云日志服务产品在最新版中增强查询分析功能(LogSearch/Analytics),支持对日志数据实时索引与查询分析,能够在秒级别对亿级别数据完成统计,极大的降低了站长们分析access log的门槛。本文将详细介绍如何使用日志服务分析access log中的各种指标。

一个典型的访问日志,包括了以下几点:

1. remote_addr : 客户端地址
2. remote_user : 客户端用户名
3. time_local : 服务器时间
4. request : 请求内容,包括方法名,地址,和http协议
5. http_host : 用户请求是使用的http地址
6. status : 返回的http 状态码
7. request_length : 请求大小
8. body_bytes_sent : 返回的大小
9. http_referer : 来源页
10. http_user_agent : 客户端名称
11. request_time : 整体请求延时

下面是一段访问日志的样例:

body_byte_sent:  81     hostname:  www.host.com http_user_agent:  Mozilla/5.0 (Linux; U; Android 7.1.1; zh-CN; ONEPLUS A5000 Build/NMF26X) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/40.0.2214.89 UCBrowser/11.6.4.950 Mobile Safari/537.36     method:  GET        referer:  www.host0.com remote_addr:  14.116.141.67 request_length:  196    request_time:  4.68status:  200 upstream_response_time:  3.94725168222  url:  /path9?k0=v7&k1=v1&

保存在日志服务中的日志样例:
image

查询链接

统计样例

  1. 每分钟PV曲线

    *|select from_unixtime( __time__- __time__% 60) as t,       count(1) as pv        
    group by __time__- __time__% 60       order by t limit 60
    

    image

  2. 热门页面

    *|select url,count(1) as pv group by url order by pv desc limit 10
    

    image

  3. 各种HTTP状态码

    *| select status, count(1) as pv group by status
    

    image

  4. 来源页面统计

    *|select referer ,count(1) as pv group by  referer order by pv desc
    

    image

最后更新:2017-08-31 23:32:40

  上一篇:go  日志系列--账单日志的统计分析
  下一篇:go  日志系列--行车轨迹日志的统计分析