数据湖支持在低存储成本的情况下,更好地满足数据长期存储、查询、分析、读取等需求。本文介绍通过日志服务SLS完成日志数据入湖的操作方式。

前提条件

已在日志服务Project所在的地域创建Bucket。具体操作,请参见控制台创建存储空间

背景信息

数据湖是一个集中式存储库,允许您以任意规模存储所有结构化、半结构化以及非结构化数据。这些数据包括来源于关系型数据库中的结构化数据(行和列)、半结构化数据(例如CSV、日志、XML、JSON等)、非结构化数据(例如email、文档、PDF等)和二进制数据(例如图像、音频、视频等)。

日志服务集成了数据投递到OSS的功能,以Serverless的方式助力日志数据入湖,支持丰富的日志数据源,一站式的分析查询,多种投递格式,压缩类型,无需运维。

步骤一:选择投递的数据源

  1. 登录OSS管理控制台
  2. 在左侧导航栏,选择数据服务 > 数据导入
  3. 在数据导入页面的日志导入区域,单击前往控制台
  4. 选择投递方式。
    • 如果您在SLS中已采集数据:
      1. 选择SLS现有数据投递搭到OSS
      2. 选择已存储数据的Project/Logstore创建OSS投递任务对话框,下拉选择已采集数据所在的项目Project日志库Logstore
    • 如果您在SLS中未采集数据:

      选择数据采集并投递OSS,完成数据采集后再将数据投递到OSS。

      关于采集数据的更多信息,请参见数据采集概述

  5. 选择是否对数据进行加工。
    • 如果选择投递OSS,则跳过步骤二,直接执行步骤三
    • 如果选择加工后投递OSS,需要执行步骤二

      当您对日志数据有以下使用需求时,可以选择对日志数据加工后再投递到OSS:

      • 数据规整:针对混乱格式的日志进行字段提取、格式转换,获取结构化数据以支持后续的流处理、数据仓库计算。
      • 数据富化:对日志(例如订单日志)和维表(例如用户信息表)进行字段连接(JOIN),为日志添加更多维度的信息,用于数据分析。
      • 数据流转:通过跨地域加速功能将海外地域的日志传输到中心地域,实现全球日志集中化管理。
      • 数据脱敏:对数据中包含的密码、手机号、地址等敏感信息进行脱敏。
      • 数据过滤:过滤出关键服务的日志,用于重点分析。

(可选)步骤二:加工数据

以下以过滤OSS访问日志为例,介绍过滤后仅保留OSS访问日志中GetObject方法的操作步骤。

  1. 单击目标Logstore左侧的>,选择数据处理 > 加工
  2. 在页面右上角,选择数据的时间范围。
    选择时间范围后,请确认原始日志页签中存在日志。
  3. 在编辑框中,输入以下数据加工语句。
    e_keep(e_search("operation=GetObject"))
  4. 预览数据。
    1. 单击快速
      日志服务支持快速预览和高级预览。更多信息,请参见预览调试概述
    2. 单击预览数据,查看预览结果。
      log
      • 如果加工语句错误或者权限配置错误,导致数据加工失败,请根据页面提示处理。
      • 如果确认数据加工结果无误,请执行步骤5
  5. 创建数据加工任务。
    1. 单击保存数据加工
    2. 创建数据加工规则页面,按如下说明配置相关参数,其他参数保留默认配置,然后单击确定
      参数说明
      规则名称定义数据加工规则的名称。
      授权方式选择默认角色,表示授予数据加工任务使用阿里云系统角色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杭州金融云公网的Bucket;华东2(上海-金融云)仅支持OSS华东2金融云的Bucket。

关于新旧版投递数据到OSS的更多信息,请参见OSS投递新旧版本对比

  1. 创建OSS投递作业。
    OSS投递功能面板,按如下说明配置相关参数,其他参数保留默认配置,然后单击确定
    参数说明
    OSS投递名称投递作业的名称。
    OSS BucketOSS Bucket名称。
    重要
    • 必须是已存在的Bucket,且该Bucket与日志服务Project位于相同地域。
    • 支持投递到标准、低频访问、归档、冷归档、深度冷归档存储类型的Bucket中。投递后,生成的OSS Object的存储类型默认与Bucket一致。更多信息,请参见存储类型介绍
    • 非标准存储的Bucket存在最低存储时间和最小计量单位限制,请根据需求合理设置目标Bucket存储类型。更多信息,请参见存储类型对比
    文件投递目录指定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投递任务(新版)

  2. 可选:查看生成的文件。
    将日志投递到OSS成功后,您可以通过OSS控制台、API、SDK或ossutil查看生成的文件。文件格式为:
    oss://OSS-BUCKET/OSS-PREFIX/PARTITION-FORMAT_RANDOM-ID

    参数说明如下表所示:

    参数说明示例值
    OSS-BUCKETOSS 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-22的日志。