CDN日志分析全攻略:从访问日志读懂流量、性能与安全

去年一个客户发现CDN账单暴涨,但控制台显示一切正常。我们下载了最近几天的访问日志,按refer_domain字段做了个分组统计。排名第一的不是他自己的域名,而是一个陌生网站——他的图片被那个网站直接引用了,产生了大量盗刷流量。如果只看控制台的总览数据,根本发现不了问题。
控制台的聚合指标适合做健康检查,但真正的故障排查和安全分析,都得靠原始日志。
01 CDN日志里有什么?
CDN访问日志记录了每一次用户请求的完整信息。以华为云实时日志为例,默认提供26个字段,比离线日志的14个字段丰富得多。
性能分析字段:
request_time:请求响应时长(毫秒),反映用户实际体验response_size:返回字节数hit_info:缓存命中状态(HIT/MISS)server_ip:响应的CDN服务端IP
流量分析字段:
安全分析字段:
02 性能分析:从日志中找出慢在哪里
衡量CDN性能的核心指标:字节命中率、P95/P99 TTFB、边缘错误与源站错误等指标,都必须基于原始请求日志计算。预聚合的仪表盘会丢失上下文,让你无法做根因分析。
慢请求定位:按request_time排序找出最慢的请求,结合server_ip判断是否是特定节点的问题。如果慢请求集中在某个节点,可能是该节点的网络或回源链路问题。
缓存命中率分析:统计hit_info字段的HIT/MISS比例。如果命中率低于80%,可以按URL分组找出命中率低的资源,排查缓存策略配置。
字节命中率 vs 请求命中率:两者要分开看。如果网站大部分是小文件缓存命中,但有一个大文件缓存未命中,请求命中率可能很高,但字节命中率可能很低。后者直接影响成本。
03 流量分析:看懂谁在访问、访问什么
热点资源识别:按uri分组统计请求次数和流量,找出被频繁访问的资源。如果有资源突然进入Top列表,可能是被外链引用或者发生了热点事件。
来源分析:按refer_domain分组统计Referer来源,识别流量来自哪里。如果出现陌生域名,说明资源可能被盗链。
客户端分布:按user_agent统计客户端类型分布,了解用户使用的浏览器和设备。
04 安全分析:从日志中发现攻击线索
异常状态码监控:http_code字段是安全分析的第一道防线。大量4xx和5xx说明访问异常,需要及时排查。
盗链识别:如果某个Referer来源(refer_domain)产生了大量请求,但不在你的白名单里,说明资源正在被盗链消耗。
IP集中攻击:按client_ip分组统计访问次数,找出TOP IP。如果某个IP在短时间内产生大量请求,可能是恶意爬虫或CC攻击。
05 分析工具怎么选
实时日志:腾讯云CLS、阿里云SLS、华为云LTS都支持CDN实时日志推送,延迟不超过3分钟。云厂商还提供了开箱即用的分析仪表盘:基础数据、错误分析、热门资源、用户分析四类报表。
离线日志:如果需求简单,用awk、sed、grep就能快速统计。例如统计状态码分布:awk '{print $状态码位置}' access.log | sort | uniq -c | sort -nr。也可以通过ELK或Splunk搭建日志分析平台。
选择建议:日常监控用厂商实时日志+预制仪表盘;深入排查时下载原始日志做二次分析。
写在最后
CDN日志的价值,不在日志本身,在你看完日志之后的动作。查到盗链Referer,去配置防盗链;发现缓存命中率低的资源,去调缓存策略;发现慢请求集中在特定节点,去查回源链路。每一行日志都可能是一次优化机会。
控制台看平均值,日志才能看细节。你的CDN日志多久没看了?