前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于腾讯云CLS统计分析nginx的access.log

基于腾讯云CLS统计分析nginx的access.log

原创
作者头像
Vicwan
修改2021-02-07 14:21:51
1.5K0
修改2021-02-07 14:21:51
举报

一、简介

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

1、使用CNZZ之类的方式,在前端页面插入js,用户访问的时候触发js,记录访问请求。

2、分析nginx的access log,从日志中挖掘有用信息。

两种方式各有优缺点:

1、CNZZ使用起来比较简单,各种指标定义清楚。但这种方式只能记录页面的访问请求,像ajax之类的请求是无法记录的,还有爬虫信息也不会记录。

2、access log对所有的请求都有记录,可以说信息非常详细,但需要站长对访问日志具备详细的了解和动手能力。

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

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

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

代码语言:txt
复制
1. remote_addr : 客户端地址
2. remote_user : 客户端用户名
3. time_iso8601 : 服务器本地时间
4. method : HTTP 请求方法
5. url : url地址
6. protocol : 协议类型
7. status : 返回的http状态码
8. body_bytes_sent : 发送给客户端的字节数
9. request_time : 整体请求延时(单位:秒)
10. http_referer : 访问来源的页面链接地址
11. http_user_agent : 客户端信息
12. http_x_forwarded_for : 当前端有代理服务器时,追踪记录客户端真实 IP 地址的配置

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

代码语言:txt
复制
180.171.159.132 - - [2020-02-11T15:34:27+08:00] "GET / HTTP/1.1" 304 0 0.000 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36" "-"

腾讯云日志服务CLS中原始日志展示:

二、利用SQL进行统计样例

1、UV统计:

代码语言:txt
复制
select HISTOGRAM(CAST(time_iso8601 AS TIMESTAMP), INTERVAL 1 MINUTE) AS dt, count(distinct(remote_addr)) as uv group by dt order by dt 

2、PV统计:

代码语言:txt
复制
select HISTOGRAM(CAST(time_iso8601 AS TIMESTAMP), INTERVAL 1 MINUTE) AS dt, count(*) as pv group by dt order by dt

3、状态码占比统计:

代码语言:txt
复制
select count(*) as count, status where url like '/%' group by status

4、TOP URL统计:

代码语言:txt
复制
select url as "t-url", count(*) as uc group by url limit 10
select url as "t-url", count(*) as uc group by url order by uc desc limit 10

5、带宽曲线图:

代码语言:txt
复制
 select HISTOGRAM(CAST(time_iso8601 AS TIMESTAMP), INTERVAL 1 MINUTE) AS dt, round(SUM(body_bytes_sent)*8/1000.0, 2) AS "带宽(Kb/min)" group by dt order by dt limit 50 

select HISTOGRAM(CAST(time_iso8601 AS TIMESTAMP), INTERVAL 1 MINUTE) AS dt, round(SUM(body_bytes_sent) * 1.0 / SUM(request_time),2) AS "下载速度(KB/s)" group by dt order by dt limit 50

代码语言:txt
复制

7、请求类型分布:

代码语言:txt
复制
 select HISTOGRAM(CAST(time_iso8601 AS TIMESTAMP), INTERVAL 1 MINUTE) AS dt, count(*) as pv, method group by dt, method order by dt limit 200

三、日志监控告警

CLS还支持各种监控统计指标,如HTTP状态码等

有任何问题欢迎大家加入企业微信群咨询:【云原生日志服务CLS】技术社区群(或者联系:v_ltvli加入)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、简介
  • 二、利用SQL进行统计样例
  • 三、日志监控告警
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档