专栏首页腾讯云售中交付解决方案专栏基于腾讯云CLS统计分析nginx的access.log
原创

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

一、简介

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

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

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

两种方式各有优缺点:

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

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

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

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

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

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 地址的配置

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

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统计:

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统计:

select HISTOGRAM(CAST(time_iso8601 AS TIMESTAMP), INTERVAL 1 MINUTE) AS dt, count(*) as pv group by dt order by dt

3、状态码占比统计:

select count(*) as count, status where url like '/%' group by status

4、TOP URL统计:

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、带宽曲线图:

 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 
6、平均下载速度:

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

7、请求类型分布:

 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状态码等

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 基于腾讯云上自建高可用Redis实践

    目前企业生产环境用的主流版本还是3.x,这里我就以redis 3.2.8稳定版来做搭建环境。

    Vicwan
  • 【Elasticsearch系列之四】腾讯云ES数据基本操作

    注意:本教程提供的示例代码仅适用于腾讯云Elasticsearch 7.x版本,不确定是否适用于其他版本,其他版本的示例代码请参见官方文档:https://ww...

    Vicwan
  • 基于腾讯云CVM自建高可用Redis实践

    在企业实际生产环境中为了能够给业务上层应用提供高可靠、低延迟、低数据损失的Redis缓存服务,本文通过对目前主流的几种redis高可用方案进行对比分析,并基于腾...

    Vicwan
  • 【开源】QuickPager ASP.NET2.0分页控件 v2.0.0.2版本。

    下载地址:http://files.cnblogs.com/jyk/Page2.0.0.2_080701.rar 这回只有 dll文件。请把包里的文件拷贝到...

    用户1174620
  • JAVA Swing 学生管理系统

    前段时间用JAVA+Mysql做了一个学生管理信息系统,开始只是对JAVA的练练手,最终实现了用户可在不同电脑上(联网情况)实现登入,并且对学生信息的增删查改操...

    可爱见见
  • 4.FFMPEG-AVFrame

    在ffmpeg中,解码前的数据结构体为AVPacket(参考:3.AVPacket使用),而解码后的数据为AVFrame(视频的YUV, RGB, 音频的PCM...

    张诺谦
  • 数据分析实战:利用python对心脏病数据集进行分析

    今天在kaggle上看到一个心脏病数据(数据集下载地址和源码见文末),那么借此深入分析一下。

    Python进阶者
  • 渗透测试该如何全面检测网站漏洞

    昨天给大家普及到了渗透测试中执行命令漏洞的检测方法,今天抽出时间由我们Sine安全的渗透工程师来讲下遇到文件包含漏洞以及模板注入漏洞的检测方法和防御手段,本文仅...

    网站安全专家
  • 渗透测试该如何全面检测网站漏洞

    昨天给大家普及到了渗透测试中执行命令漏洞的检测方法,今天抽出时间由我们Sine安全的渗透工程师来讲下遇到文件包含漏洞以及模板注入漏洞的检测方法和防御手段,本文仅...

    技术分享达人
  • 编程小知识之协变和逆变

    在 C# 中, 协变 和 逆变 能够实现 数组类型 和 委托类型 的隐式引用转换, .NET Framework 4 (包括)以后, C# 也开始支持在 泛型接...

    用户2615200

扫码关注云+社区

领取腾讯云代金券