业务场景
虽然CDN日志管理中提供了运营报表的功能,但时间范围仅可以选择2个月范围的。有时我们需要按照季度甚至年度来进行数据分析,并且希望能有趋势图来帮助我们分析网站流量的走向,这时候我们就可以借助OSS和数据湖来帮助我们实现。
准备内容
- 开通OSS
- 开通云原生数据湖分析(这个要提前开通,否则在CDN操作转存日志时会报AliyunServiceRoleForOpenAnalytics 找不到的错误)
操作步骤
1、开通日志转存服务
进入CDN控制台,在日志管理>离线日志>通过数据湖下,点击“立即开通”。
选择转存的域名和需要转存的字段,因为后期不能修改这些字段,所以建议全部勾选。开通后效果如下:
我们可以到OSS的控制台查看每个Bucket的使用情况:
2、查询日志内容
- 登录到云原生数据湖控制台
- 根据第一步CDN转存的OSS区域,选择DLA的区域,此处我们选择 上海
- 账号管理>创建子账号,输入子账号名、密码后点击确定(这一步的账号设置是为了方便后续使用DMS登录查询使用)
- 进入导航 Serverless Presto > SQL执行,可以找到对应的数据湖库 alicdn_offline_log ,里面有一张表 alicdn_offline_log_cdn 就是我们转存日志后的数据表
使用基本的SQL语法就可以查询出表中的数据了。
如果你比较习惯使用 DMS 来进行数据查询等操作,可以参考以下步骤链接DLA:
- 进入导航 Serverless Presto > SQL访问点 ,创建服务访问点
- 选择 虚拟网络、虚拟交换机后点击确定。如果没有的话,你需要到VPC控制台在DLA所在的区域创建一个。
- 创建成功后,会在VPC网络模块,自动生成 VPC内访问链接
- 如果你希望公网访问DLA,那么可以 设置白名单 后开启公网网络,创建成功后会自动分配一个公网地址。如果需要将DMS的白名单加入,详情可参考 DMS设置白名单
- 点击登录到DMS,输入之前我们创建的账号和密码,点击确定即可登录成功
- 如果登录后发现你的实例里面没有 alicdn_offline_log 这个库,说明你的账号没有这个库的权限,需要为账号赋权。赋权需要到DLA控制台下的 Serverless Presto > SQL执行 进行操作,语句如下:
GRANT ALL PRIVILEGES ON alicdn_offline_log.* TO {your_account}
PS:在刚开通文件转存时数据文件同步会需要一定的时间,所以查询会没有数据。转存的数据是从开通转存后才会进入到数据湖中,历史的数据不会同步。
3、转存表文件
对于转存后的日志信息,我们使用比较多的场景是读取分析,所以为了提高读取的效率存放到OSS的文件使用的是ORC列存储的文件类型。
alicdn-offline-log |
数据湖库名 |
cdn |
和库名一同组合成表名 |
ds=YYYYMMddHH |
按照小时做的文件分区 |
batch_id=xxxxx |
同一分区时间内的数据文件的批次,每个批次中会再分多个文件 |
我们查询出来的数据中也是包含 ds 和 batch_id 这两列的:
总结
通过转存日志,我们可以获得访问更详细的数据,再结合一些BI分析工具如阿里云的Quick BI 产品,我们就可以制作更丰富的报表了。