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

前提条件

支持的地域说明

日志服务投递数据到OSS为同地域投递,即日志服务Project所在的地域和OSS Bucket所在地域相同。
注意 目前只支持华东1(杭州)、华东2(上海)、华东5(南京-本地地域)、华东1(杭州-金融云)、华东2(上海-金融云)、华北1(青岛)、华北2(北京)、华北3(张家口)、华北5 (呼和浩特)、华北6(乌兰察布)、西南1(成都)、华南1(深圳)、华南2(河源)、华南3(广州)、中国(香港)、新加坡、澳大利亚(悉尼)、马来西亚(吉隆坡)、印度尼西亚(雅加达)、菲律宾(马尼拉)、泰国(曼谷)、日本(东京)、美国(硅谷)、美国(弗吉尼亚)

其中,华东1(杭州-金融云)仅支持OSS杭州金融云公网的Bucket;华东2(上海-金融云)仅支持OSS华东2金融云的Bucket。

创建投递作业

  1. 登录日志服务控制台
  2. 在Project列表区域,单击目标Project。
  3. 日志存储 > 日志库页签中,单击目标Logstore左侧的>,选择数据处理 > 导出 > OSS(对象存储)
  4. 将鼠标悬浮OSS(对象存储)上,单击+
  5. OSS投递功能面板,配置如下参数,然后单击确定
    选择投递版本新版,重要参数配置说明如下所示。
    注意
    • 创建OSS投递作业后,每个Shard都会根据投递大小、投递时间决定投递的频率。当任一条件满足时,即会执行一次投递。
    • 创建OSS投递作业后,您可以通过投递作业的状态和投递到OSS的数据确认投递规则是否符合预期结果。
    参数 说明
    OSS投递名称 投递作业的名称。
    OSS Bucket OSS Bucket名称。
    注意
    • 必须是已存在的Bucket,且该Bucket与日志服务Project位于相同地域。
    • 支持投递到标准、低频访问、归档、冷归档这四种存储类型的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数据的权限。
    投递大小 每个Shard的投递大小。通过该值控制OSS Object大小(以未压缩计算),取值范围为5~256,单位为MB。
    存储格式 数据被投递到OSS后,支持存储为不同的文件格式。更多信息,请参见CSV格式JSON格式Parquet格式ORC格式
    是否压缩 OSS数据存储的压缩方式。
    • 不压缩(none):原始数据不压缩。
    • 压缩(snappy):使用snappy算法压缩数据,减少OSS Bucket的空间。更多信息,请参见snappy
    • 压缩(zstd):使用zstd算法压缩数据,减少OSS Bucket的空间。
    • 压缩(gzip):使用gzip算法压缩数据,减少OSS Bucket的空间。
    投递时间 每个Shard的投递周期。取值范围为300~900,默认值为300,单位为秒。
    开始时间 投递作业从该时间开始拉取Logstore中的数据。
    时区选择 该时区用于格式化时间。

    如果您设置了时区选择分区格式,系统将根据您的设置生成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%s .suffix oss://test-bucket/log_ship_oss_example/year=2022/mon=01/day=20/log_195043_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。