全部产品
Search
文档中心

日志服务:创建OSS投递任务(新版)

更新时间:Nov 21, 2024

日志服务采集到数据后,支持将数据投递至OSS Bucket中进行存储与分析。本文介绍创建OSS投递任务(新版)的操作步骤。

前提条件

支持的地域说明

日志服务投递数据到OSS为同地域投递,即日志服务Project所在的地域和OSS Bucket所在地域相同。

重要

目前只支持华东1(杭州)、华东2(上海)、华北1(青岛)、华北2(北京)、华北3(张家口)、华北5 (呼和浩特)、华北6(乌兰察布)、西南1(成都)、华南1(深圳)、华南2(河源)、华南3(广州)、中国香港、新加坡、马来西亚(吉隆坡)、印度尼西亚(雅加达)、菲律宾(马尼拉)、泰国(曼谷)、日本(东京)、美国(硅谷)、美国(弗吉尼亚)

创建投递任务

  1. 登录日志服务控制台

  2. 在Project列表区域,单击目标Project。

    image

  3. 日志存储 > 日志库页签中,单击目标Logstore左侧的>,选择数据处理 > 导出 > OSS(对象存储)

  4. 将鼠标悬浮OSS(对象存储)上,单击+

  5. OSS投递功能面板,配置如下参数,然后单击确定

    选择投递版本新版,重要参数配置说明如下所示。

    重要
    • 创建OSS投递任务后,每个Shard都会根据投递大小、投递时间决定投递的频率。当任一条件满足时,即会执行一次投递。

    • 创建OSS投递任务后,您可以通过投递任务的状态和投递到OSS的数据确认该投递任务是否符合预期结果。

    参数

    说明

    任务名称

    投递任务的唯一名称。

    显示名称

    投递任务的显示名称。

    任务描述

    OSS的任务描述。

    OSS Bucket

    OSS Bucket名称。

    重要
    • 必须是已存在且未开启WORM的Bucket,且该Bucket与日志服务Project位于相同地域。关于WORM的更多信息,请参见保留策略(WORM)

    • 支持投递到标准、低频访问、归档、冷归档、深度冷归档存储类型的Bucket中。投递后,生成的OSS Object的存储类型默认与Bucket一致。更多信息,请参见存储类型概述

    • 非标准存储的Bucket存在最低存储时间和最小计量单位限制,请根据需求合理设置目标Bucket存储类型。更多信息,请参见存储类型对比

    文件投递目录

    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 RAM角色

    授予OSS投递任务读取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秒,范围300~900秒)时开始投递。

    说明

    攒批大小和攒批时间二者满足其一触发投递。

    延迟投递

    投递数据的延迟时间。例如设置为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。

SDK示例

export_oss_sink_demo.py