CDN访问日志分析工具

在日常使用CDN的过程中,我们会遇到各种异常的访问情况,通过查看监控信息能够获取到一些基本的信息,但是想要细致的了解访问的真实情况,往往就需要下载访问日志进行分析。访问日志格式虽然固定,但是如果遇到访问量比较大的域名,阅读日志就是一个很漫长而又辛苦的过程,需要自己编写脚本实现日志的过滤。本文提供一套平时自己使用的日志过滤工具,可以简单快捷的对访问日志进行过滤,进而简化工作效率。

在对工具展开详细介绍之前,先简单介绍CDN的访问日志格式,具体的信息如下:

日志中对应的字段顺序(从左到右)及含义如下表所示:

顺序

日志内容

1

请求时间。

2

访问域名的客户端 IP。

3

被访问的域名。

4

文件请求路径。

5

本次访问字节数大小,包含文件本身大小及请求 header 头部大小,其中请求 header 是否命中,以及是在本节点或集群命中等都有可能会影响到字节数大小。

6

省份(省份编号映射请详见下文 省份映射)。

7

运营商(运营商编号映射请详见下文 运营商映射)。

8

HTTP 状态码。

9

Referer 信息。

10

响应时间(毫秒)。

11

User-Agent 信息。

12

Range 参数。

13

HTTP Method。

14

HTTP协议标识。

15

缓存 HIT/MISS。

具体的日志详细字段的解释说明以及下载方法可以参见 https://cloud.tencent.com/document/product/228/6316

日志分析工具介绍

下载日志可以直接访问 github 进行下载或者直接在Linux运行如下命令进行下载
git clone https://github.com/suxin1110/CDNClientLog.git
目前已近有如下分析内容,会不定期跟新:
1. 统计日志状态码

2. 请求命中率

3. 统计特定状态码对应访问URL

4. 统计特定状态码对应访问URL(去除参数)

5. 统计特定状态码对应Refere

6. 统计特定状态码对应客户端IP

7. 统计特定状态码对应的前N行日志

8. 统计特定客户端IP访问日志

下载后有一个clog.sh文件,该文件为CDN日志分析的简单shell脚本文件。

将CDN的访问日志下载下起来,方便起见可以将clog.sh和访问日志存放在一个文件夹下。CDN访问日志模式下载下来就会做gz压缩,运行该脚本不需要将CDN日志进行解压操作。脚本运行方法非常简单,具体如下:
sh clog.sh CDNClientLogFileName.gz

脚本运行界面展示

脚本提供几个简单的日志过滤选择,按照需求选择需要的过滤方法。

1.统计日志状态码
选择1后,会直接进行日志状态码的分析并将分析的结果打印出来。

统计日志状态码

2.请求命中率

选择2后,会直接进行请求命中率的统计界面,展示信息如下:

请求命中率

3.统计特定状态码访问的url,在输入选项后需要输入对应的状态码。

统计特定状态码访问的url

其他日志过滤方法可以参考步骤3,后续还会继续跟新该脚本。

正文完