日志服务采集到日志数据后,支持将日志数据投递至OSS中进行存储与分析。本文档主要介绍将日志数据投递至OSS的操作步骤。

前提条件

  • 已开通日志服务,创建Project和Logstore,并成功采集到日志数据,请参见操作Project操作Logstore
  • 已开通OSS服务,并在日志服务Project所在的地域创建Bucket,请参见开通OSS服务
  • 已开通访问控制RAM。

背景信息

日志服务可以把Logstore中的数据自动归档到OSS,以发挥日志更多的效用。
  • OSS 数据支持自由设置生命周期,可以对日志进行长期存储。
  • 可以通过自建程序和更多系统(如E-MapReduce和DLA)消费OSS数据。

功能优势

通过日志服务投递日志数据到OSS具有如下优势:

  • 操作简单。仅需在控制台上做简单配置即可将日志服务Logstore的数据投递到OSS。
  • 效率提升。日志服务的日志收集过程已经完成不同机器上的日志集中化,无需在不同机器上重复收集日志导入OSS。
  • 便于管理。投递日志到OSS可以充分复用日志服务内的日志分类管理功能。用户可让日志服务不同项目(Project)、不同类型(Logstore)的日志自动投递到不同的OSS Bucket目录,方便管理OSS数据。

注意事项

  • 日志服务Project和OSS的Bucket必须位于相同Region,不支持跨Region投递数据。
  • 金融云和公共云之间可以投递。

操作步骤

  1. 访问控制(RAM)授权。
    开启投递任务之前,您需要为日志服务授权,允许日志数据写入OSS。

    单击快捷授权,在弹出页面中单击同意授权。成功授权后,日志服务具备OSS的数据写入权限。

    说明
    • 修改授权策略、跨阿里云账号配置投递任务,请参见RAM授权
    • 不涉及跨阿里云账号时,子账号配置投递任务请参见授权RAM用户,为子账号授予权限。
  2. 配置OSS投递规则。
    1. 登录日志服务控制台,单击Project名称。
    2. 单击折叠图标依次展开Lostore名称 > 数据处理 > 导出
    3. 单击OSS(对象存储),打开OSS投递管理页面。
    4. 单击开启投递,设置OSS投递配置并单击确认
      请参考下表设置OSS投递配置。
      配置项 说明 取值范围
      OSS投递名称 您所创建的投递的名称。 只能包含小写字母,数字,连字符(-)和下划线(_),必须以小写字母和数字开头和结尾,且名称长度为3~63字节。
      OSS Bucket OSS Bucket名称。 必须是已存在的Bucket名称,且需要保证OSS的Bucket与日志服务Project位于相同Region。
      OSS Prefix OSS前缀,从日志服务同步到OSS的数据将存放到Bucket的该目录下。 必须是已存在的OSS Prefix名称。
      分区格式 将投递任务创建时间使用%Y、%m、%d、%H、%M等格式化生成分区字符串,以此来定义写到OSS的Object文件所在的目录层次结构,其中斜线/表示一级OSS目录。如下表举例说明OSS Prefix和分区格式如何定义OSS目标文件路径。 格式化参考strptime API
      RAM角色 RAM角色ARN及角色名称,用于访问权限控制,OSS Bucket拥有者创建角色的标识,如何获得ARN请参见图 2 acs:ram::45643:role/aliyunlogdefaultrole
      投递大小 自动控制投递任务创建间隔并设置OSS的一个Object大小(以未压缩计算)上限。 取值范围为5~256,单位为MB。
      存储格式 日志数据投递OSS的存储格式。 支持JSON/Parquet/CSV三种格式,配置细节请单击查看:JSON格式Parquet格式CSV格式
      是否压缩 OSS数据存储的压缩方式。
      • 不压缩:表示原始数据不压缩。
      • 压缩(snappy):表示使用snappy算法对数据做压缩,可以减少 OSS Bucket存储空间使用量。
      是否投递tag 选择是否投递日志的标签。 选择是或者否。
      投递时间 投递任务的间隔时长。 取值范围为300~900,默认值300。单位为秒。
      图 1. 投递日志
      投递日志
      图 2. 获取角色ARN
      获取角色ARN
      说明 日志服务在后端并发执行数据投递,对写入每个shard的数据单独进行服务。每一个Shard都会根据投递大小、投递时间决定任务生成的频率,当任一条件满足时,即会创建投递任务。

分区格式

每个投递任务会写入OSS一个文件,路径格式是oss:// OSS-BUCKET/OSS-PREFIX/PARTITION-FORMAT_RANDOM-ID。PARTITION-FORMAT是根据投递任务创建时间格式化而得到的,以创建时间为2017/01/20 19:50:43的投递任务为例,说明分区格式的用法:
OSS Bucket OSS Prefix 分区格式 OSS文件路径
test-bucket test-table %Y/%m/%d/%H/%M oss://test-bucket/test-table/2017/01/20/19/50_1484913043351525351_2850008
test-bucket log_ship_oss_example year=%Y/mon=%m/day=%d/log_%H%M%s oss://test-bucket/log_ship_oss_example/year=2017/mon=01/day=20/log_195043_1484913043351525351_2850008.parquet
test-bucket log_ship_oss_example ds=%Y%m%d/%H oss://test-bucket/log_ship_oss_example/ds=20170120/19_1484913043351525351_2850008.snappy
test-bucket log_ship_oss_example %Y%m%d/ oss://test-bucket/log_ship_oss_example/20170120/_1484913043351525351_2850008
test-bucket log_ship_oss_example %Y%m%d%H oss://test-bucket/log_ship_oss_example/2017012019_1484913043351525351_2850008

使用Hive、MaxCompute等大数据平台或阿里云DLA产品分析OSS数据时,如果希望使用Partition信息,可以设置每一层目录上为key=value格式(Hive-style partition)。

例如:oss://test-bucket/log_ship_oss_example/year=2017/mon=01/day=20/log_195043_1484913043351525351_2850008.parquet可以设置三层分区列,分别为:year、mon、day。

日志投递任务管理

在启动OSS投递功能后,日志服务后台会定期启动投递任务。您可以在控制台OSS投递管理界面上看到投递任务的状态。

通过日志投递任务管理,您可以:
  • 查看过去两天内的所有日志投递任务,了解其状态。投递任务状态可以是“成功”、“进行中”和“失败”。“失败”状态则表示您的投递任务出现了因外部原因而无法重试的错误,需要您参与解决问题。
  • 一般情况下,日志数据在写入Logstore后的30分钟内同步到OSS。如果投递任务执行失败,控制台上会显示相应的错误信息,系统会按照策略默认为您重试,您也可以手动重试。
    • 日志服务默认会按照退火策略重试最近两天之内的任务,重试等待的最小间隔是15分钟。当任务执行失败时,第一次失败需要等待15分钟再试,第二次失败需要等待30分钟(2 乘以 15)再试,第三次失败需要等待60分钟(2 乘以 30)再试,以此类推。
    • 如需立即重试失败任务,可以通过控制台单击重试全部失败任务或通过API/SDK方式指定任务进行重试。
    常见失败任务的错误信息如下:
    错误信息 错误原因 处理方法
    UnAuthorized 没有权限。 请确认以下配置:
    • OSS 用户是否已创建角色。
    • 角色描述的账号 ID 是否正确。
    • 角色是否授予OSS Bucket写权限。
    • role-arn是否配置正确。
    ConfigNotExist 配置不存在。 一般是由于删除投递规则导致,如又重新创建了规则,可以通过重试来解决。
    InvalidOssBucket OSS Bucket 不存在。 请确认以下配置:
    • OSS Bucket所在Region是否与日志服务Project一致。
    • Bucket名称是否配置正确。
    InternalServerError 日志服务内部错误。 通过重试解决。

OSS 数据存储

可以通过控制台、API/SDK或其它方式访问OSS数据。

如使用Web管理控制台访问,进入OSS服务,选择Bucket,单击 文件管理即可看到有日志服务投递过来的数据。

更多OSS使用步骤请参见OSS文档

Object 地址
oss:// OSS-BUCKET/OSS-PREFIX/PARTITION-FORMAT_RANDOM-ID
  • 路径字段说明
    • OSS-BUCKET、OSS-PREFIX表示OSS的Bucket名称和目录前缀,由用户配置,INCREMENTID是系统添加的随机数。
    • PARTITION-FORMAT定义为%Y/%m/%d/%H/%M,其中%Y,%m,%d,%H,%M分别表示年、月、日、小时、分钟,由本次投递任务的服务端创建时间通过strptime API计算得到。
    • RANDOM-ID是一个投递任务的唯一标识。
  • 目录的时间含义

    OSS数据目录是按照投递任务创建时间设置的,假设5分钟数据投递一次OSS,2016-06-23 00:00:00创建的投递任务,它投递的数据是2016-06-22 23:55后写入日志服务的数据。如需分析完整的2016-06-22全天日志,除了2016/06/22目录下的全部object以外,还需要检查2016/06/23/00/目录下前十分钟的Object是否有包含2016-06-22时间的日志。

Object存储格式