数据湖支持在低存储成本的情况下,更好地满足数据长期存储、查询、分析、读取等需求。本文介绍通过日志服务SLS完成日志数据入湖的操作方式。
前提条件
已在日志服务Project所在的地域创建Bucket。具体操作,请参见控制台创建存储空间。
背景信息
数据湖是一个集中式存储库,允许您以任意规模存储所有结构化、半结构化以及非结构化数据。这些数据包括来源于关系型数据库中的结构化数据(行和列)、半结构化数据(例如CSV、日志、XML、JSON等)、非结构化数据(例如email、文档、PDF等)和二进制数据(例如图像、音频、视频等)。
日志服务集成了数据投递到OSS的功能,以Serverless的方式助力日志数据入湖,支持丰富的日志数据源,一站式的分析查询,多种投递格式,压缩类型,无需运维。
步骤一:选择投递的数据源
(可选)步骤二:加工数据
以下以过滤OSS访问日志为例,介绍过滤后仅保留OSS访问日志中GetObject方法的操作步骤。
单击目标Logstore左侧的>,选择 。
在页面右上角,选择数据的时间范围。
选择时间范围后,请确认原始日志页签中存在日志。
在编辑框中,输入以下数据加工语句。
e_keep(e_search("operation=GetObject"))
预览数据。
创建数据加工任务。
单击保存数据加工。
在创建数据加工任务面板,按如下说明配置相关参数,其他参数保留默认配置,然后单击确定。
参数
说明
任务名称
定义数据加工规则的名称。
授权方式
选择默认角色,表示授予数据加工任务使用阿里云系统角色AliyunLogETLRole来读取源Logstore中的数据。如果您还没有生成默认角色,需单击授权系统角色AliyunLogETLRole,并根据页面提示完成授权。更多信息,请参见通过默认角色访问数据。
存储目标
目标名称
定义存储目标的名称。
目标Project
定义用于存储数据加工结果的目标Project名称。
目标库
定义用于存储数据加工结果的目标Logstore名称。
授权方式
选择默认角色,即授予数据加工任务使用阿里云系统角色AliyunLogETLRole将数据加工结果写入目标Logstore。如果您还没有生成默认角色,需单击授权系统角色AliyunLogETLRole,并根据页面提示完成授权。更多信息,请参见通过默认角色访问数据。
加工范围
时间范围
指定数据加工任务的时间范围,详细说明如下:
说明此处的时间范围依赖日志的接收时间。
所有:从Logstore接收到第一条日志的时间点开始数据加工任务,直到加工任务被手动停止。
某时间开始:指定数据加工任务的开始时间,从该时间点开始加工,直到加工任务被手动停止。
特定时间范围:指定数据加工任务的起止时间,加工任务执行到指定时间后自动停止。
关于创建数据加工任务涉及的各参数详细说明,请参见创建数据加工任务。
步骤三:投递数据到OSS
日志服务投递数据到OSS为同地域投递,即日志服务Project所在的地域和OSS Bucket所在地域相同。您可以选择新版或旧版投递数据到OSS的方式完成日志数据入湖。旧版投递数据到OSS支持日志服务所有已开服地域,而新版投递数据到OSS(新版)仅支持以下地域:
目前只支持华东1(杭州)、华东2(上海)、华东5(南京-本地地域)、华东1金融云、华东2金融云、华北1(青岛)、华北2(北京)、华北3(张家口)、华北5 (呼和浩特)、华北6(乌兰察布)、西南1(成都)、华南1(深圳)、华南2(河源)、华南3(广州)、中国香港、新加坡、马来西亚(吉隆坡)、印度尼西亚(雅加达)、菲律宾(马尼拉)、泰国(曼谷)、日本(东京)、美国(硅谷)、美国(弗吉尼亚)。
其中,华东1金融云仅支持OSS华东1金融云公网的Bucket;华东2金融云仅支持OSS华东2金融云的Bucket。
关于新旧版投递数据到OSS的更多信息,请参见OSS投递新旧版本对比。
创建OSS投递作业。
在OSS投递功能页面,按如下说明配置相关参数,其他参数保留默认配置,然后单击投递。
参数
说明
OSS投递名称
投递作业的名称。
OSS Bucket
OSS Bucket名称。
重要必须是已存在且未开启WORM的Bucket,且该Bucket与日志服务Project位于相同地域。关于WORM的更多信息,请参见保留策略(WORM)。
文件投递目录
指定OSS Bucket中的目录。目录名不能以正斜线(/)或者反斜线(\)开头。如果未指定该目录,则生成的文件将保存在Bucket的根目录下。
创建OSS投递任务后,Logstore中的数据将投递到目标OSS Bucket的此目录中。
文件后缀
指定生成文件的后缀。如果未设置文件后缀,则日志服务会根据存储格式和压缩类型自动生成后缀,例如suffix。
写OSS RAM角色
选择默认角色,表示授权OSS投递作业使用阿里云系统角色AliyunLogDefaultRole将数据写入到OSS Bucket中。如果您还没有生成默认角色,需手动输入AliyunLogDefaultRole的ARN。如何获取ARN,请参见通过默认角色访问数据。
读Logstore RAM角色
选择默认角色,表示授权OSS投递作业使用阿里云系统角色AliyunLogDefaultRole来读取Logstore中的数据。如果您还没有生成默认角色,需手动输入AliyunLogDefaultRole的ARN。如何获取ARN,请参见通过默认角色访问数据。
开始时间范围
选择投递作业开始拉取Logstore中数据的起始时间。
关于创建投递作业涉及的各参数详细说明,请参见创建OSS投递任务(新版)。
可选:查看生成的文件。
将日志投递到OSS成功后,您可以通过OSS控制台、API、SDK或ossutil查看生成的文件。文件格式为:
oss://OSS-BUCKET/OSS-PREFIX/PARTITION-FORMAT_RANDOM-ID
参数说明如下表所示:
参数
说明
示例值
OSS-BUCKET
OSS Bucket名称。
examplebucket
OSS-PREFIX
文件投递目录。
exampledir
PARTITION-FORMAT
分区格式,通过strptime API计算得到的投递作业创建时间。
2022/01/20/19/50_1484913043351525351
RANDOM-ID
随机生成的一次投递行为的唯一标识。
2850008
结合以上示例值,则投递作业创建时间为2022/01/20 19:50:43生成的OSS文件路径为:
oss://examplebucket/exampledir/2022/01/20/19/50_1484913043351525351_2850008.suffix
说明OSS文件路径以投递作业的创建时间动态生成。假设您在2022-01-20 00:00:00创建投递作业,5分钟投递一次数据到OSS Bucket,则此次投递任务投递的是2022-01-19 23:55后写入日志服务的数据。由于写入日志服务的数据可能存在延时,因此当您希望分析2022-01-19全天日志,除了查看2022/01/19目录下的全部Object以外,还需要检查2022/01/20/00/目录下前十分钟的Object是否包含2022-01-19的日志。