简介
内容分发网络(Content Delivery Network,CDN) 是非常重要的互联网基础设施,用户可以通过 CDN,快速的访问网络中各种图片,视频等资源。在访问过程中,CDN 会产生大量的日志数据,通过对 CDN 访问日志的分析,用户可以挖掘出大量有用的信息用于 CDN 质量和性能的分析、错误诊断、客户端分布,以及用户行为分析。
前提条件
方案优势
当前, 各 CDN 服务提供厂商, 通常会实时提供基础的监控指标,例如请求次数,宽带等信息。 但是,在许多特定的分析场景下, 这些默认的实时指标可能并不能满足用户定制化的分析需求。 因此,通常用户会进一步将 CDN 的原始日志下载下来, 进行离线的深入分析与挖掘。这种情况用户需自行搭建离线分析集群,不仅需要大量的运维开发成本和人力成本;同时在一些基于 CDN 日志的告警,排障等分析场景下,离线日志的实时性难以保证。
腾讯云 CDN 与 CLS 实现打通, 用户可以将 CDN 的数据实时投递至 CLS, 并进一步使用 CLS 的检索和 SQL 分析能力, 来满足不同场景下用户个性化的实时日志分析需求。
日志字段说明
字段名 | 原始日志类型 | 日志服务类型 | 说明 |
app_id | Integer | long | 腾讯云账号 APPID |
client_ip | String | text | 客户端 IP |
file_size | Integer | long | 文件大小 |
hit | String | text | 缓存 HIT / MISS,在 CDN 边缘节点命中、父节点命中均标记为 HIT |
host | String | text | 域名 |
http_code | Integer | long | HTTP 状态码 |
isp | String | text | 运营商 |
method | String | text | HTTP Method |
param | String | text | URL 携带的参数 |
proto | String | text | HTTP 协议标识 |
prov | String | text | 运营商省份 |
referer | String | text | Referer 信息,HTTP 来源地址 |
request_range | String | text | Range 参数,请求范围 |
request_time | Integer | long | 响应时间(毫秒),指节点从收到请求后响应所有回包再到客户端所花费的时间 |
request_port | String | long | 客户端与 CDN 节点建立连接的端口。若无,则为 - |
rsp_size | Integer | long | 返回字节数 |
time | Integer | long | 请求时间,UNIX 时间戳,单位为:秒 |
ua | String | text | User-Agent 信息 |
url | String | text | 请求路径 |
uuid | String | text | 请求的唯一标识 |
version | Integer | long | CDN 实时日志版本 |
预置仪表盘
CLS 已将常用的CDN日志分析方式预置为仪表盘,您可通过该仪表盘快速了解当前 CDN 请求状态。
质量监控分析仪表盘,包括缓存命中率、错误码分布等。
用户行为分析仪表盘,包括 PV、UV 和各地域访问分布等。
在仪表盘右上角单击编辑仪表盘可基于预置仪表盘进行编辑。
可以构建更适用您的专属仪表盘。
场景示例
场景1:监控 CDN 访问延时高于一定阈值告警
使用数学统计中的百分数(例如99%最大延迟)来作为告警触发条件较为准确,使用平均值触发告警会造成一些个体请求延时被平均,无法反映真实情况。 例如针对99%的延时大于100ms 进行告警,并且在告警信息中展示受影响域名、url、client_ip,以便快速判断错误情况。
1. 进入创建告警策略页面,操作步骤详见配置告警策略。
2. 在执行语句中输入以下语句,时间范围选择15分钟,统计近15分钟内的99%延时。
* | select approx_percentile(request_time, 0.99) as p99
3. 触发条件如下,即99%延时大于100ms 时,满足告警条件。
$1.p99 > 100
4. 执行周期:固定频率,每1分钟执行一次。
5. 多维分析:在告警信息中展示受影响的域名,客户端 IP,url,帮助开发人员快速定位问题。
告警触发后,通过微信,企业微信,短信第一时间获取关键信息。
场景2: 资源访问错误激增告警,当同比增数超过一定阈值时, 告警通知用户
当页面访问错误的数量出现激增时,可能说明 CDN 后端服务器出现故障,或者请求过载。 我们可以通过设置告警来对一定时间范围内(eg.一分钟)请求错误数量的同比增数进行监控, 当同比增数超过一定阈值时,告警通知用户。
1. 进入创建告警策略页面,操作步骤详见 配置告警策略。
2. 在执行语句中输入以下语句,时间范围选择1分钟,统计最近1分钟相比上1分钟的错误数增量。
http_code:>=400 | select compare[1]-compare[2] as errorCNTRise from (select compare(errorCNT,60) as compare from(select count(*) as errorCNT))
3. 触发条件如下,即错误数增量大于100时,满足告警条件。
$1.errorCNTRise > 100