CDN 访问日志是什么
CDN 日志记录每一条到达边缘节点的请求:客户端 IP、方法、URL、状态码、缓存命中状态、响应大小与回源耗时。它是排障与数据分析的原始素材,也常常是「源站日志里看不到这条请求」时唯一的证据。使用上有两条路径:实时日志秒级投递到日志服务,适合排障与监控告警;离线日志按小时打包投递到对象存储,适合离线分析、对账与长期留档。两者字段与延迟不同,比对时口径要一致。
基本信息
| 实时日志 | 秒级投递到日志服务(SLS/CLS),适合排障与实时告警 |
|---|---|
| 离线日志 | 按小时打包到对象存储(OSS/COS),适合离线分析与对账 |
| 典型字段 | 时间、客户端 IP、方法、URL、状态码、字节数、缓存状态、回源耗时 |
| 时间口径 | 注意日志时间与本地时区差异,取样窗口要对齐 |
| 计费 | 投递与存储通常按量计费,注意保留周期与索引成本 |
| 归属 | 日志在边缘节点生成,回源失败也可能在 CDN 侧看到状态码 |
典型使用场景
- 用户反馈「某地区打不开」,用实时日志确认请求是否到达 CDN、返回了什么状态码
- 统计缓存命中率,评估缓存规则与 TTL 设置是否合理
- 排查源站被打爆:看回源耗时与回源请求量占比
- 安全分析:识别高频 IP、异常 URL 与扫描行为
- 对账与报表:用离线日志统计流量与资源消耗
关键字段读法
| 字段 | 含义 | 正常/异常提示 |
|---|---|---|
| 状态码 | CDN 返回给客户端的状态码 | 5xx 集中在某时段说明回源或边缘异常 |
| 缓存状态 | 命中/回源(Hit/Miss 类标识) | 命中率骤降通常是缓存规则或参数变化 |
| 回源耗时 | 边缘向源站取数据的耗时 | 明显高于响应时间说明瓶颈在源站 |
| 客户端 IP | 发起请求的地址 | 真实 IP 依赖回源头部与代理链 |
| 响应字节 | 返回给客户端的字节数 | 与 URL 预期明显不符提示内容被截断 |
拉取离线日志并做基本统计
拉取离线日志并做基本统计
ossutil64 cp -r oss://my-bucket/cdn-logs/ ./cdn-logs/ --update # 拉取当日日志
zcat ./cdn-logs/example.gz | head -n 3 # 先看字段顺序
zcat ./cdn-logs/*.gz | awk '{print $1}' | sort | uniq -c | sort -rn | head # 状态码分布
zcat ./cdn-logs/*.gz | wc -l # 总请求量
grep -c ' 404 ' ./cdn-logs/example.log 2>/dev/null || true # 指定状态码计数排查「某地区用户反馈异常」时优先用实时日志:比离线日志更快拿到证据。下结论前先核对时间窗与状态码口径(是否含回源失败、是否记录重试请求),否则容易把问题归错方向。
日志保留周期过短是事后排障最大的坑:等业务方报障时数据已被清理。按合规与排障需要设定保留期,重要业务建议同时开启实时投递与长期归档。