日志服务采集到数据后,支持将数据投递至OSS进行存储与分析。本文介绍创建OSS投递任务(旧版)的操作步骤。
投递日志到OSS(旧版)功能已下线,投递日志到OSS请参考投递日志到OSS(新版)。
前提条件
- 已创建Project和Logstore。具体操作,请参见创建Project和Logstore。 
- 已采集到数据。具体操作,请参见数据采集。 
- 已在日志服务Project所在的地域创建Bucket。具体操作,请参见控制台创建存储空间。 
- 已完成云资源访问授权。 - 如果您要跨账号投递或使用RAM用户创建投递任务,需先完成RAM授权。具体操作,请参见投递日志到OSS的RAM授权管理。  
背景信息
日志服务支持将Logstore中的数据自动归档到OSS,以发挥更多的数据价值。
- OSS支持自由设置生命周期,可以长期存储数据。 
- 您可以通过数据处理平台(例如E-MapReduce和DLA)或自建程序消费OSS数据。 
支持的地域说明
日志服务投递数据到OSS为同地域投递,即日志服务Project所在的地域和OSS Bucket所在地域相同。
- 目前华东1(杭州)、华东2(上海)、华东5(南京-本地地域-关停中)、华东1金融云、华东2金融云、华北1(青岛)、华北2(北京)、华北3(张家口)、华北5 (呼和浩特)、华北6(乌兰察布)、西南1(成都)、华南1(深圳)、华南2(河源)、华南3(广州)、中国香港、新加坡、马来西亚(吉隆坡)、印度尼西亚(雅加达)、菲律宾(马尼拉)、泰国(曼谷)、日本(东京)、美国(硅谷)、美国(弗吉尼亚)地域支持OSS投递(新版)。更多信息,请参见创建OSS投递任务(新版)。此处旧版投递以华东2(上海)地域的界面为例。 
- 如果Project属于杭州金融云,则只支持投递到杭州金融云公网地域(oss-cn-hzfinance),不支持华东1金融云地域(oss-cn-hzjbp)。 
投递数据
- 开启投递后,日志服务并发执行投递实例。 
- 生成投递实例后,您可以通过投递任务的状态和投递到OSS的数据确认您所创建的投递任务是否符合预期结果。 
- 登录日志服务控制台。 
- 在Project列表区域,单击目标Project。  
- 在页签中,单击目标Logstore左侧的>,选择。 
- 将鼠标悬浮OSS(对象存储)上,单击+。 
- 在OSS投递功能面板,配置如下参数,然后单击确定。 - 选择投递版本为旧版,重要参数配置说明如下所示。 - 参数 - 说明 - OSS投递名称 - 投递任务的名称。 - OSS Bucket - OSS Bucket名称。 重要- 必须是已存在且未开启WORM的Bucket,且该Bucket与日志服务Project位于相同地域。关于WORM的更多信息,请参见保留策略(WORM)。 
 - 文件投递目录 - OSS Bucket中的目录。目录名不能以正斜线(/)或者反斜线(\)开头。 - 创建OSS投递任务后,Logstore中的数据将投递到目标OSS Bucket的此目录中。 - 分区格式 - 按照投递任务的创建时间动态生成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角色role-b写OSS Bucket的权限。 
 
 - 投递大小 - 每个Shard的投递大小。通过该值控制OSS Object大小(以未压缩计算),取值范围为5~256,单位为MB。 - 当每个Shard投递数据大小达到此处设置的大小时,会自动创建一个新的投递任务。 - 存储格式 - 是否压缩 - OSS数据存储的压缩方式。 - 不压缩:不压缩数据。 
- 压缩(snappy):使用snappy算法压缩数据,可减少OSS Bucket存储空间。 
 - 投递时间 - 每个Shard的投递周期。取值范围为300~900,默认值为300,单位为秒。 - 当每个Shard投递周期达到此处设置的大小时,会自动创建一个新的投递实例。 
查看OSS数据
将数据投递到OSS成功后,您可以通过OSS控制台、API、SDK或其他方式访问OSS数据。更多信息,请参见文件管理。
OSS Object地址格式如下所示:
oss://OSS-BUCKET/OSS-PREFIX/PARTITION-FORMAT_RANDOM-IDOSS-BUCKET为OSS Bucket名称,OSS-PREFIX为目录前缀,PARTITION-FORMAT为分区格式(由投递任务的创建时间通过strptime API计算得到),RANDOM-ID是投递任务的唯一标识。
OSS Bucket目录是按照投递任务创建时间设置的。例如:2016-06-23 00:00:00创建投递任务,投递的是2016-06-22 23:55后写入日志服务的数据,假设5分钟投递一次数据到OSS。如果您要分析2016-06-22全天的数据,除了查看2016/06/22目录下的全部object以外,还需要检查2016/06/23/00/目录下前十分钟的Object是否包含2016-06-22的数据。
分区格式
一个投递任务对应一个OSS Bucket目录,目录格式为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 说明  此格式会导致Hive等平台无法解析对应的OSS内容,建议您不要使用该格式。 | 
| 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信息,可将文件名中的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。
相关操作
创建投递任务后,您可以在OSS投递管理页面,执行修改投递任务、关闭投递、查看投递任务状态及错误信息、重试投递任务等操作。
- 修改投递任务 - 单击投递配置,修改投递任务。参数详情,请参见本文中的投递数据。 
- 关闭投递 - 单击关闭投递,即可关闭投递。 
- 查看投递任务状态及错误信息 - 日志服务支持查看过去两天内的所有投递任务及其投递状态。 - 任务状态 - 状态 - 说明 - 成功 - 投递任务正常运行。 - 进行中 - 投递任务进行中,请稍后查看是否投递成功。 - 失败 - 因外部原因而无法重试的错误导致投递任务失败,请根据错误信息进行排查并重试。 
- 错误信息 - 如果投递任务出现错误,控制台上会显示相应的错误信息。 - 错误信息 - 错误原因 - 处理方法 - UnAuthorized - 没有权限。 - 请确认以下配置: - OSS Bucket拥有者是否已创建AliyunLogDefaultRole角色。 
- 角色描述中配置的阿里云账号ID是否正确。 
- AliyunLogDefaultRole角色是否被授予OSS Bucket写权限。 
- RAM角色标识是否配置正确。 
 - ConfigNotExist - 配置不存在。 - 一般是由于关闭投递导致的。请在重新开启投递任务后,通过重试解决。 - InvalidOssBucket - OSS Bucket不存在。 - 请确认以下配置: - OSS Bucket所在地域与日志服务Project所在地域是否相同。 
- Bucket名称是否配置正确。 
 - InternalServerError - 日志服务内部错误。 - 通过重试解决。 
- 重试任务 - 日志服务会按照策略默认为您重试,您也可以手动重试。日志服务默认重试最近两天之内所有失败的任务,重试等待的最小间隔是15分钟。当任务执行失败时,第一次失败需要等待15分钟再进行重试,第二次失败需要等待30分钟再进行重试,第三次失败需要等待60分钟再进行重试,以此类推。 - 如果您需要立即重试失败任务,请单击重试全部失败任务、目标任务右侧的重试或通过API、SDK指定任务进行重试。