简介
很多个人站长在搭建网站时使用nginx作为服务器,为了了解网站的访问情况,一般有两种手段:
- 使用CNZZ之类的方式,在前端页面插入js,用户访问的时候触发js,记录访问请求。
- 分析nginx的access log,从日志中挖掘有用信息。
两种方式各有优缺点:
- CNZZ使用起来比较简单,各种指标定义清楚。但这种方式只能记录页面的访问请求,像ajax之类的请求是无法记录的,还有爬虫信息也不会记录。
- 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&
保存在日志服务中的日志:
统计样例
每分钟PV曲线
*|select from_unixtime( __time__- __time__% 60) as t, count(1) as pv group by order by t limit 60
热门页面
*|select url,count(1) as pv group by url order by pv desc limit 10
各种HTTP状态码
*| select status, count(1) as pv group by status
来源页面统计
*|select referer ,count(1) as pv group by referer order by pv desc
dashboard
日志服务提供dashboard展示所有的指标:
试用日志服务
以下5个子帐号供试用,请随机选择一个登录,若登录不成功请换一个子帐号尝试:
登录地址 | 用户名 | 密码 |
---|---|---|
链接 | sls_reader1@1654218965343050 | pnX-32m-MHH-xbm |
链接 | sls_reader2@1654218965343050 | pnX-32m-MHH-xbm |
链接 | sls_reader3@1654218965343050 | pnX-32m-MHH-xbm |
链接 | sls_reader4@1654218965343050 | pnX-32m-MHH-xbm |
链接 | sls_reader5@1654218965343050 | pnX-32m-MHH-xbm |