日志服务采集到数据后,支持将数据投递至OSS Bucket中进行存储与分析。本文介绍创建OSS投递任务(新版)的操作步骤。
前提条件
已创建Project和Logstore。具体操作,请参见创建Project和Logstore。
已采集到数据。具体操作,请参见数据采集。
已在日志服务Project所在的地域创建Bucket。具体操作,请参见控制台创建存储空间。
支持的地域说明
日志服务投递数据到OSS为同地域投递,即日志服务Project所在的地域和OSS Bucket所在地域相同。
目前只支持华东1(杭州)、华东2(上海)、华北1(青岛)、华北2(北京)、华北3(张家口)、华北5 (呼和浩特)、华北6(乌兰察布)、西南1(成都)、华南1(深圳)、华南2(河源)、华南3(广州)、中国香港、新加坡、澳大利亚(悉尼)关停中、马来西亚(吉隆坡)、印度尼西亚(雅加达)、菲律宾(马尼拉)、泰国(曼谷)、日本(东京)、美国(硅谷)、美国(弗吉尼亚)。
创建投递任务
登录日志服务控制台。
在Project列表区域,单击目标Project。
在 页签中,单击目标Logstore左侧的>,选择 。
将鼠标悬浮OSS(对象存储)上,单击+。
在OSS投递功能面板,配置如下参数,然后单击确定。
选择投递版本为新版,重要参数配置说明如下所示。
重要创建OSS投递任务后,每个Shard都会根据投递大小、投递时间决定投递的频率。当任一条件满足时,即会执行一次投递。
创建OSS投递任务后,您可以通过投递任务的状态和投递到OSS的数据确认该投递任务是否符合预期结果。
参数
说明
任务名称
投递任务的唯一名称。
显示名称
投递任务的显示名称。
任务描述
OSS的任务描述。
OSS Bucket
OSS Bucket名称。
重要必须是已存在且未开启WORM的Bucket,且该Bucket与日志服务Project位于相同地域。关于WORM的更多信息,请参见保留策略(WORM)。
文件投递目录
OSS Bucket中的目录。目录名不能以正斜线(/)或者反斜线(\)开头。
创建OSS投递任务后,Logstore中的数据将投递到目标OSS Bucket的此目录中。
文件后缀
如果您未设置文件后缀,则日志服务会根据存储格式和压缩类型自动生成后缀。例如
.suffix
。分区格式
按照投递时间动态生成OSS Bucket的目录,不能以正斜线(/)开头,默认值为%Y/%m/%d/%H/%M,相关示例请参见分区格式,参数详情请参见strptime API。
写OSS RAM角色
授予OSS投递任务将数据写入到OSS Bucket的权限。
默认角色:授权OSS投递任务使用阿里云系统角色AliyunLogDefaultRole将数据写入到OSS Bucket中。即输入AliyunLogDefaultRole的ARN。如何获取ARN,请参见通过默认角色访问数据。
自定义角色:授权OSS投递任务使用自定义角色将数据写入到OSS Bucket中。
您需先授予自定义角色将数据写入到OSS Bucket的权限,然后在写OSS RAM角色中输入您自定义角色的ARN。如何获取ARN,请参见如下说明:
如果Logstore和OSS Bucket属于同一阿里云账号,请参见步骤二:授予RAM角色写OSS Bucket的权限。
如果Logstore和OSS Bucket属于不同的阿里云账号,请参见步骤二:授予账号B下的RAM角色b写OSS Bucket的权限。
读Logstore RAM角色
授予OSS投递任务读取Logstore数据的权限。
默认角色:授权OSS投递任务使用阿里云系统角色AliyunLogDefaultRole来读取Logstore中的数据。即输入AliyunLogDefaultRole的ARN。如何获取ARN,请参见通过默认角色访问数据。
自定义角色:授权OSS投递任务使用自定义角色来读取Logstore中的数据。
您需先授予自定义角色读取Logstore数据的权限,然后在读Logstore RAM角色中输入您自定义角色的ARN。如何获取ARN,请参见如下说明:
如果Logstore和OSS Bucket属于同一阿里云账号,请参见步骤一:授予RAM角色读取Logstore数据的权限。
如果Logstore和OSS Bucket属于不同的阿里云账号,请参见步骤一:授予账号A下的RAM角色a读取Logstore数据的权限。
存储格式
数据被投递到OSS后,支持存储为不同的文件格式。更多信息,请参见CSV格式、JSON格式、Parquet格式和ORC格式。
是否压缩
OSS数据存储的压缩方式。
不压缩(none):不压缩数据。
压缩(snappy):使用snappy算法压缩数据,减少OSS Bucket的空间。更多信息,请参见snappy。
压缩(zstd):使用zstd算法压缩数据,减少OSS Bucket的空间。
压缩(gzip):使用gzip算法压缩数据,减少OSS Bucket的空间。
是否投递tag
tag字段为日志服务的保留字段,更多信息,请参见保留字段。
攒批大小
每个Shard积攒日志量达到该值指定的大小开始投递。通过该值控制OSS Object大小(以未压缩计算),取值范围为5~256,单位为MB。说明:攒批大小和攒批时间二者满足其一开始投递。
攒批时间
每个Shard从取到第一日志时间到第n条日志时间差值大于等于该值时开始投递。取值范围为300~900,默认值为300,单位为秒。说明:攒批大小和攒批时间二者满足其一开始投递。
延迟投递
投递数据的延迟时间。例如设置为3600,则表示数据被延迟1小时投递,即2023/06/05 10:00:00的数据不会早于2023/06/05 11:00:00写入到指定的OSSBucket中。相关的限制说明,请参见配置项限制。
开始时间范围
指定OSS投递任务的时间范围,此处的时间范围依赖日志的接收时间。详细说明如下:
所有:从Logstore接收到第一条日志的时间点开始数据投递,直到投递任务被手动停止。
某时间开始:指定OSS投递任务的开始时间,从该时间点开始数据投递,直到投递任务被手动停止。
特定时间范围:指定OSS投递任务的起止时间,投递任务执行到指定结束时间后自动停止。
说明时间范围是指
__tag__:__receive_time__
,更多详情请参考保留字段。时区选择
该时区用于格式化时间。
如果您设置了时区选择和分区格式,系统将根据您的设置生成OSS Bucket的目录。
查看OSS数据
将数据投递到OSS成功后,您可以通过OSS控制台、API、SDK或其他方式访问OSS数据。更多信息,请参见文件管理。
OSS Object地址格式如下所示:
oss://OSS-BUCKET/OSS-PREFIX/PARTITION-FORMAT_RANDOM-ID
其中,OSS-BUCKET
为OSS Bucket名称,OSS-PREFIX
为目录前缀,PARTITION-FORMAT
为分区格式(由投递时间通过strptime API计算得到),RANDOM-ID
是一次投递行为的唯一标识。
OSS投递是攒批进行,每次写一个文件,文件内包括一批数据,文件路径由该批数据中最小的receive_time(数据到达日志服务的时间)决定。投递时需注意如下两种情况:
投递实时数据时(假设5分钟投递一次),例如在2022-01-22 00:00:00进行一次投递,其投递的是2022-01-21 23:55后写入日志服务某Shard的数据,所以如果您要分析2022-01-22全天的数据,需要查看OSS Bucket中2022/01/22目录下的全部Object和确定2022/01/21目录下最后几个Object中是否包含2022-01-22的数据。
投递历史数据时,如果Logstore中的数据量比较少,那么投递任务拉取一次数据,可能包含多天的数据,导致2022/01/22目录下的文件包含了2022-01-23全天的数据,2022/01/23目录下没有文件。
分区格式
一次投递对应一个OSS Object地址,其格式为oss://OSS-BUCKET/OSS-PREFIX/PARTITION-FORMAT_RANDOM-ID。以创建时间为2022/01/20 19:50:43的投递任务为例,介绍分区格式,如下表所示。
OSS Bucket | OSS Prefix | 分区格式 | 文件后缀 | OSS文件路径 |
test-bucket | test-table | %Y/%m/%d/%H/%M | .suffix | oss://test-bucket/test-table/2022/01/20/19/50_1484913043351525351_2850008.suffix |
test-bucket | log_ship_oss_example | year=%Y/mon=%m/day=%d/log_%H%M | .suffix | oss://test-bucket/log_ship_oss_example/year=2022/mon=01/day=20/log_1950_1484913043351525351_2850008.suffix |
test-bucket | log_ship_oss_example | ds=%Y%m%d/%H | .suffix | oss://test-bucket/log_ship_oss_example/ds=20220120/19_1484913043351525351_2850008.suffix |
test-bucket | log_ship_oss_example | %Y%m%d/ | .suffix | oss://test-bucket/log_ship_oss_example/20220120/_1484913043351525351_2850008.suffix 说明 此格式会导致Hive等平台无法解析对应的OSS内容,建议您不要使用该格式。 |
test-bucket | log_ship_oss_example | %Y%m%d%H | .suffix | oss://test-bucket/log_ship_oss_example/2022012019_1484913043351525351_2850008.suffix |
使用Hive、MaxCompute等大数据平台或阿里云DLA产品分析OSS数据时,如果您希望使用Partition信息,可将文件名中的PARTITION-FORMAT设置为key=value格式。例如:oss://test-bucket/log_ship_oss_example/year=2022/mon=01/day=20/log_195043_1484913043351525351_2850008.parquet,设置为三层分区列,分别为:year、mon、day。