原文链接:
http://click.aliyun.com/m/22119/
摘要: 个人站长如何分析自己的网站,这里有第一手的经验
简介
很多个人站长在搭建网站时使用nginx作为服务器,为了了解网站的访问情况,一般有两种手段:
使用CNZZ之类的方式,在前端页面插入js,用户访问的时候触发js,记录访问请求。
分析nginx的access log,从日志中挖掘有用信息。
两种方式各有优缺点:
CNZZ使用起来比较简单,各种指标定义清楚。但这种方式只能记录页面的访问请求,像ajax之类的请求是无法记录的,还有爬虫信息也不会记录。
access log对所有的请求都有记录,可以说信息非常详细,但需要站长对访问日志具备详细的了解和动手能力。
两种手段相互补充,才能对网站的状况有更加深入的了解。
日志服务新推出来SQL分析功能,极大的降低了站长们分析access log的门槛,本文将详细介绍如何使用日志服务分析access log中的各种指标。
Nginx访问日志格式
一个典型的nginx访问日志配置:
log_format main '$remote_addr - $remote_user [$time_local] "$request" $http_host '
'$status $request_length $body_bytes_sent "$http_referer" '
'"$http_user_agent" $request_time';
access_log access.log main;
字段解释:
remote_addr : 客户端地址
remote_user : 客户端用户名
time_local : 服务器时间
request : 请求内容,包括方法名,地址,和http协议
http_host : 用户请求是使用的http地址
status : 返回的http 状态码
request_length : 请求大小
body_bytes_sent : 返回的大小
http_referer : 来源页
http_user_agent : 客户端名称
request_time : 整体请求延时
收集访问日志到日志服务
首先把日志收集到日志服务
请参考文档5分钟快速文档
把日志收集到日志服务后,设置每一列的类型:
index_attribute
注:其中request拆分城method 和uri两列
日志样例:
sample_log
分析访问日志
通常,对access log的访问需求有,查看网站的pv,uv,热点页面,热点方法,错误请求,客户端类型,来源页面等等。下文将逐个介绍各个指标的计算方法。
PV统计不仅可以一段时间总的PV,还可以按照小的时间段,查看每段时间的,比如每5分钟pv
统计代码
*|select from_unixtime( __time__- __time__% 300) as t,
count(1) as pv
group by __time__- __time__% 300
order by t limit 60
统计结果
pv
统计一小时内每5分钟的UV
统计代码:
*|select from_unixtime( __time__- __time__% 300) as t,
approx_distinct(remote_addr) as uv
group by __time__- __time__% 300
order by t limit 60
uv_5min
统计一小时内总的UV
统计代码:
*|select approx_distinct(remote_addr)
统计结果:
uv
最近一小时访问最多的10个页面
*|select url,count(1) as pv group by url order by pv desc limit 10
top10page
最近一小时各种请求方法的占比
*| select method, count(1) as pv group by method
method
最近一小时各种http状态码的占比
*| select status, count(1) as pv group by status
status
最近一小时各种浏览器的占比
*| select user_agent, count(1) as pv group by user_agent
user_agent
最近一小时referer来源于不同域名的占比
*|select url_extract_host(http_referer) ,count(1) group by url_extract_host(http_referer)
注:url_extract_host为从url中提取域名
referer
最近一小时用户访问不同域名的占比
*|select http_host ,count(1) group by http_host
host
一些高级功能
除了一些访问指标外,站长常常还需要对一些访问请求进行诊断,查看一下处理请求的延时如何,有哪些比较大的延时,哪些页面的延时比较大。
通过每5分钟的平均延时和最大延时, 对延时的情况有个总体的把握
*|select from_unixtime(__time__ -__time__% 300) as time,
avg(request_time) as avg_latency ,
max(request_time) as max_latency
group by __time__ -__time__% 300
limit 60
avg_max_latency
知道了最大延时之后,我们需要知道最大延时对应的请求页面是哪个,方便进一步优化页面响应。
*|select from_unixtime(__time__ - __time__% 60) ,
max_by(url,request_time)
group by __time__ - __time__%60
top_latency_req
从总体把握,我们需要知道网站的所有请求的延时的分布, 把延时分布在十个桶里边,看每个延时区间的请求个数
*|select numeric_histogram(10,request_time)
latency_histogram1
除了最大的延时,我们还需要知道最大的十个延时,对应的值是多少
*|select max(request_time,10)
top_10_latency
当我们知道了/0这个页面的访问延时最大,为了对/0页面进行调优,接下来需要统计/0这个页面的访问PV,UV,各种method次数,各种status次数,各种浏览器次数,平均延时,最大延时
url:"/0"|select count(1) as pv, approx_distinct(remote_addr) as uv, histogram(method) as method_pv,histogram(status) as status_pv, histogram(user_agent) as user_agent_pv, avg(request_time) as avg_latency, max(request_time) as max_latency
url0
url0method
url0useragent
url0status
同时,我们也可以限定只查看request_time 大于1000的请求的pv,uv,以及各个url的请求次数
request_time > 1000 |select count(1) as pv, approx_distinct(remote_addr) as uv, histogram(url) as url_pv
url_pv
latency1000url
原文链接:
http://click.aliyun.com/m/22119/
分享到:
相关推荐
汽车产品数据https://tianchi.aliyun.com/?spm=5176.12281973.J_3941670930
http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-7
此内容主要用于CentOS7.6、CentOS7.9操纵系统中,并且操作系统不能够链接外网无法使用yum安装httpd服务,所以只能使用离线安装包进行安装。...阿里云:http://mirrors.aliyun.com/ 网易云:http://mirrors.163.com/
幸福感分析-机器学习项目 https://tianchi.aliyun.com/competition/entrance/231702/introduction 幸福感是一个古老而深刻的话题,是人类世代追求的方向。与幸福感相关的因素成千上万、因人而异,大如国计民生,...
wget -O /etc/yum.repos.d/epel-7.repo https://mirrors.aliyun.com/repo/epel-7.repo wget -O /etc/yum.repos.d/CentOS7-Base-163.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo 二、清除系统所有的 ...
一、准备 确认在预拉取yum包的机子关于网络...[root@mini2 /]# wget -O /etc/yum.repos.d/base.repo http://mirrors.aliyun.com/repo/Centos-7.repo //base源 [root@mini2 /]# wget -O /etc/yum.repos.d/epel.repo h
阿里云 NPM 镜像:https://npm.aliyun.com 腾讯云 NPM 镜像:https://mirrors.cloud.tencent.com/npm/ 华为云 NPM 镜像:https://mirrors.huaweicloud.com/repository/npm/ 网易 NPM 镜像:...
centos7.0 sso下载地址:http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-Everything-1804.iso 方案二: centos7.0已经做好的镜像(包含图形化): 链接:...
- 进入阿里云开源镜像站:[https://mirrors.aliyun.com/centos/](https://mirrors.aliyun.com/centos/) - 按照与官方站点相同的方式找到你需要的版本和架构。 - 点击下载链接,同样会提供.torrent文件。 3. 网易...
输入命令wget http://mirrors.aliyun.com/repo/Centos-7.repo 如果wget命令不生效,说明还没有安装wget工具,输入yum -y install wget 回车进行安装。 当前目录是/etc/yum.repos.d/,刚刚下载的Centos-7.repo也在这...
阿里云视频点播转码SDK,文档地址https://helpcdn.aliyun.com/product/29932.html?spm=a2c4g.11186623.6.540.57403893NeEgPt
wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo ``` 4. 清理缓存并生成新的缓存: ``` yum clean all yum makecache ``` **3.2 关闭防火墙** 在某些情况下,可能需要暂时关闭CentOS...
<url>https://maven.aliyun.com/repository/central</url> </mirror> * 在settings.xml文件中添加阿里云Maven仓库镜像的配置,例如: <id>aliyunmaven</id> <id>aliyunmaven</id> <url>...
Maven更新问题 今天Maven在更新的时候发现... http://maven.aliyun.com/nexus/content/repositories/central/ central junit junit Address/ http://jcenter.bintray.com/ central alimaven aliyun maven htt
CIKM-AnalytiCup-2020是由阿里云主办的数据分析竞赛,旨在促进信息检索(IR)和知识管理(KM)领域的技术创新与实践应用。这个比赛为参赛者提供了运用机器学习、深度学习和数据分析技能的机会,挑战可能涉及到数据...
NULL 博文链接:https://xiaorao.iteye.com/blog/476577
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse # 更多其他版本的源配置... ``` 4. **更新apt源**: 完成更改后,需要更新apt源以确保系统能够识别新的软件源地址: ...
http://mirrors.aliyun.com/pypi/simple/ 阿里 http://pypi.hustunique.com/simple/ 华中理工大学 http://pypi.sdutlinux.org/simple/ 山东理工大学 http://pypi.mirrors.ustc.edu.cn/simple/ 中国科学技术大学 ...
-- https://mvnrepository.com/artifact/com.aliyun.ams/emas-services --> <groupId>com.aliyun.ams</groupId> <artifactId>emas-services</artifactId> <version>1.0.1</version> </dependency> mvn ...
阿里云java源码 说明:支持阿里Teambition网盘的webdav协议,后续的2.x版本仅支持阿里云盘,不再维护Teambition网盘版本 webdav-aliyundriver 本项目实现了阿里云盘的.../etc/aliyun-driver/:/etc/aliyun-driver/ -e