- 浏览: 70797 次
- 性别:
- 来自: 北京
文章分类
最新评论
简介
很多个人站长在搭建网站时使用nginx作为服务器,为了了解网站的访问情况,一般有两种手段:
使用CNZZ之类的方式,在前端页面插入js,用户访问的时候触发js,记录访问请求。
利用流计算、或离线统计分析nginx的access log,从日志中挖掘有用信息。
两种方式各有优缺点:
CNZZ使用起来比较简单,各种指标定义清楚。但这种方式只能记录页面的访问请求,像ajax之类的请求是无法记录的,还有爬虫信息也不会记录。
利用流计算、离线计算引擎可以支持个性化需求,但需要搭建一套环境,并且在实时性以及分析灵活性上比较难平衡。
两种手段相互补充,才能对网站的状况有更加深入的了解。
日志服务在查询基础上新推出来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
很多个人站长在搭建网站时使用nginx作为服务器,为了了解网站的访问情况,一般有两种手段:
使用CNZZ之类的方式,在前端页面插入js,用户访问的时候触发js,记录访问请求。
利用流计算、或离线统计分析nginx的access log,从日志中挖掘有用信息。
两种方式各有优缺点:
CNZZ使用起来比较简单,各种指标定义清楚。但这种方式只能记录页面的访问请求,像ajax之类的请求是无法记录的,还有爬虫信息也不会记录。
利用流计算、离线计算引擎可以支持个性化需求,但需要搭建一套环境,并且在实时性以及分析灵活性上比较难平衡。
两种手段相互补充,才能对网站的状况有更加深入的了解。
日志服务在查询基础上新推出来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
发表评论
-
Python基础语法-常量与变量
2017-11-23 16:44 0摘要: Python是一门强类型的动态语言。 字面常量,变 ... -
【2017DTC精彩重现】Oracle和MySQL DBA的进阶之路
2017-11-23 16:41 789摘要: 分享的初衷 这 ... -
积攒了这么多技术干货_总有一款适合你
2017-11-23 16:39 533摘要: 每天来云栖社区,总会有精彩的技术干货等着你。我们会不 ... -
小蓝退出舞台_谁能挺过O2O的第一个寒冬?
2017-11-23 16:29 572小蓝单车素来以“体验 ... -
展望云计算新时代数据库计算力的进化
2017-11-17 15:38 747从1970年关系数据库理 ... -
11月16日云栖精选夜读:阿里云 oss JavaScript客户端签名文件上传 vue2.0
2017-11-17 15:35 1043热点热议 阿里云 oss JavaScript客户端签名文 ... -
王坚:云计算之后_我为什么要做城市大脑?| 干货
2017-11-17 15:25 552近两年,由于人工智能 ... -
大数据等最核心的关键技术:32个算法
2017-07-27 16:27 544原文链接:http://click.ali ... -
玩转大数据_你需要了解这8种项目类型!
2017-07-27 16:20 479原文链接:http://click.aliyun.com/m/ ... -
大神带你分分钟超越最好结果——基于分布式CPU计算的Deeplearning4j迁移学习应用实例
2017-07-27 16:18 1139原文链接:http://click.ali ... -
5个步骤 & 7个提示 | 一份开启Kaggle竞赛征途的初学者指南
2017-07-27 16:13 1265原文链接:http://click.aliyun.com/m/ ... -
哇塞!原来404还能这么玩!
2017-07-17 11:29 464看起来很眼熟对吧!每个人上网浏览时,一般都是利用网址来找寻你需 ... -
阿里云PAI将神经机器翻译训练效率提升5倍
2017-07-13 17:35 648摘要: 近两年,神经机器翻译(NMT: Neural Mach ...
相关推荐
Nginx日志分析工具2.1.0是一款专为Windows平台设计的软件,用于高效地解析、统计和分析Nginx服务器产生的日志文件。Nginx作为一款高性能的Web服务器和反向代理服务器,广泛应用于各类网站和应用程序中。在日常运维...
nginx访问日志分析脚本,统计某一时段内的日志数据
"nginx网站访问日志可视化"是一个利用Python处理和展示Nginx服务器产生的访问日志的项目。这个项目的核心在于利用Python的强大功能,结合pyecharts库,将复杂的日志数据转化为直观的图表,以实现对网站访问行为的...
介绍几款nginx日志分析图形化工具.zip
在IT行业中,日志分析是监控和调试应用性能的关键环节,尤其对于Web服务器如Nginx来说更是如此。本文将详细介绍如何使用Loki和Grafana构建一个在线的日志分析系统,该系统基于Docker Compose进行一键部署,极大地...
Nginx日志描述 通过访问日志,你可以得到用户地域来源、跳转来源、使用终端、某个URL访问量等相关信息;通过错误日志,你可以得到系统某个服务或server的性能瓶颈等。因此,将日志好好利用,你可以得到很多有价值的...
docker安装goaccess nginx实现nginx日志统计分析,具体操作查看我的博客
Nginx的错误日志和访问日志对于调试和监控至关重要,通过`error_log`和`access_log`指令可以自定义日志记录级别和位置。此外,Nginx的热部署能力使其在不中断服务的情况下完成配置更新,通过`reload`或`restart`命令...
Nginx日志分析工具是SEO优化过程中至关重要的一环,对于网站管理员而言,它能够提供宝贵的洞察力,帮助他们理解搜索引擎如何与他们的网站互动,尤其是百度蜘蛛的抓取行为。Nginx作为一款广泛使用的高性能Web服务器,...
nginx日志分析命令,可以帮你使用命令获取nginx服务器上所需日志内容
GoAccess 是一款开源、快速且轻量级的日志分析工具,专门设计用于实时地分析Apache、Nginx等Web服务器的访问日志。它以终端界面展示,能够生成丰富的统计报告,帮助管理员更好地理解和优化网站的访问情况。 在深入...
《精通Nginx--第2版1》是一本专为有经验的系统管理员和系统工程师设计的书籍,适合那些熟悉服务器安装和配置以满足特定需求的专业人士。即使没有使用Nginx的经验,读者也能通过本书学习到丰富的知识。本书采用模块化...
服务器中的错误记录类似于这种: 124.65.133.242 – – [27/Oct/2014:14:30:51 +0800] “-” 400 0 “-” “-” 124.65.133.242 – – [27/Oct/2014:14:31:45 +0800] “-” 400 0 “-” ...经过分析nginx的log文件,发
Nginx日志主要分为两种:访问日志和错误日志。日志开关在Nginx配置文件(/etc/nginx/nginx.conf)中设置,两种日志都可以选择性关闭,默认都是打开的。 访问日志主要记录客户端访问Nginx的每一个请求,格式可以...
通过分析nginx的日志,我们可以获取到每个访问者的IP地址,进而统计出最频繁的访问者、访问来源地分布以及可能的异常IP,这对于网络安全监控和用户行为分析至关重要。 其次,**页面访问统计**是理解用户行为的关键...
Nginx开发从入门到精通 中文版,入门到精通 Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理...
《精通Nginx》第二版是一本全面深入讲解Nginx服务器配置与管理的专业书籍,旨在帮助读者从零基础开始,逐步掌握Nginx的各项功能和优化技巧。这本书以高清PDF格式呈现,带有详细的目录结构,方便读者快速定位所需内容...
### 精通Nginx:Nginx开发参考知识点详解 #### 一、Nginx概述 **Nginx**是一款开源的Web服务器软件,以其高性能、稳定性、丰富的功能和较低的内存消耗而闻名。它不仅可以作为HTTP服务器用于处理静态文件、索引文件...
精通Nginx(第2版) 来个分少的 Nginx是一个高性能的HTTP服务器和邮件代理,它只需要使用很少的系统资源就能工作。虽然Web上有很多关于如何使用Nginx的指南和配置示例,但是,要正确地配置Nginx以满足需要并不容易。
7. **日志管理**:Nginx的日志记录功能可以帮助分析服务器运行状态,排查问题。学会如何定制日志格式,调整日志级别,甚至使用日志切割和日志分析工具,是运维工作的重要部分。 8. **反向代理与负载均衡结合**:...