日志服务采集到数据后,支持将数据投递至OSS进行存储与分析。本文介绍创建OSS投递任务(旧版)的操作步骤。
前提条件
已创建Project和Logstore。具体操作,请参见创建Project和Logstore。
已采集到数据。具体操作,请参见数据采集。
已在日志服务Project所在的地域创建Bucket。具体操作,请参见控制台创建存储空间。
已完成云资源访问授权。
如果您要跨账号投递或使用RAM用户创建投递任务,需先完成RAM授权。具体操作,请参见投递日志到OSS的RAM授权管理。
背景信息
日志服务支持将Logstore中的数据自动归档到OSS,以发挥更多的数据价值。
OSS支持自由设置生命周期,可以长期存储数据。
您可以通过数据处理平台(例如E-MapReduce和DLA)或自建程序消费OSS数据。
投递数据
开启投递后,日志服务并发执行投递实例。每个Shard都会根据投递大小、投递时间决定实例的生成频率,任一条件满足时,即会生成实例。
生成投递实例后,您可以通过投递任务的状态和投递到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角色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-ID
OSS-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指定任务进行重试。