在日常使用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,在输入选项后需要输入对应的状态码。
其他日志过滤方法可以参考步骤3,后续还会继续跟新该脚本。