在日常使用 CDN 的过程中, 我们会遇到各种异常的访问情况, 通过查看监控信息能够获取到一些基本的信息, 但是想要细致的了解访问的真实情况, 往往就需要下载访问日志进行分析. 访问日志格式虽然固定, 但是如果遇到访问量比较大的域名, 阅读日志就是一个很漫长而又辛苦的过程, 需要自己编写脚本实现日志的过滤. 本文提供一套平时自己使用的日志过滤工具, 可以简单快捷的对访问日志进行过滤, 进而简化工作效率.
在对工具展开详细介绍之前, 先简单介绍 CDN 的访问日志格式, 具体的信息如下:
日志中对应的字段顺序 (从左到右) 及含义如下表所示:
顺序 | 日志内容 |
---|---|
1 | 请求时间。 |
2 | 访问域名的客户端 IP。 |
3 | 被访问的域名。 |
4 | 文件请求路径。 |
5 | 本次访问字节数大小,包含文件本身大小及请求 header 头部大小,其中请求 header 是否命中,以及是在本节点或集群命中等都有可能会影响到字节数大小。 |
6 | 省份 (省份编号映射请详见下文 & nbsp; 省份映射)。 |
7 | 运营商 (运营商编号映射请详见下文 & nbsp; 运营商映射)。 |
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 https://github.com/suxin1110/CDNClientLog 进行下载或者直接在 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, 后续还会继续跟新该脚本.
来源: https://www.qcloud.com/developer/article/1456546