全部产品
弹性计算 会员服务 网络 安全 移动云 数加·大数据分析及展现 数加·大数据应用 管理与监控 云通信 阿里云办公 培训与认证 更多
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 智能硬件
日志服务

投递流程

更新时间:2018-04-08 19:03:52

日志服务可以把Logstore中的数据自动归档到OSS,以发挥日志更多的效用。

  • OSS 数据支持自由设置生命周期,可以对日志进行长期存储。
  • 可以通过自建程序和更多系统(如E-MapReduce)消费OSS数据。

功能优势

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

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

前提条件

  1. 开通日志服务,创建Project和Logstore,并成功采集到日志数据。
  2. 开通OSS,在日志服务Project所在的地域创建Bucket。
  3. 开通访问控制RAM。
  4. 日志服务Project和OSS的Bucket必须位于相同Region,不支持跨Region投递数据。

操作步骤

步骤1 访问控制(RAM)授权

开启投递任务之前,您需要为日志服务授权,允许日志数据写入OSS。

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

注意

  • 修改授权策略、跨阿里云账号配置投递任务,请参考RAM进阶

  • 不涉及跨阿里云账号时,子账号配置投递任务请参考RAM用户授权,为子账号授予权限。

步骤 2 日志服务用户配置OSS投递规则

  1. 登录 日志服务管理控制台

  2. 选择所需的项目,单击项目名称。

  3. 选择所需的日志库,单击日志投递列下的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 拥有者创建角色的标识。RAM角色的ARN可以在该角色的基本信息中查看。 acs:ram::45643:role/aliyunlogdefaultrole
    投递大小 自动控制投递任务创建间隔并设置 OSS 的一个 Object 大小(以未压缩计算)上限。 取值范围为5~256,单位为 MB。
    存储格式 日志数据投递OSS的存储格式。 支持JSON/Parquet/CSV三种格式,配置细节请点击查看:JSONParquetCSV
    是否压缩 OSS 数据存储的压缩方式。
    • none:表示原始数据不压缩。
    • snappy:表示使用 snappy 算法对数据做压缩,可以减少 OSS Bucket 存储空间使用量。
    投递时间 投递任务的间隔时长。 取值范围为300~900,默认值300。单位为秒。

    oss-shipper-configshipper-role-arn

    注意:日志服务在后端并发执行数据投递,如果您的数据量较大,可能会多个投递线程进行服务。每一个投递线程都会根据投递大小、投递时间决定任务生成的频率,当任一条件满足时,投递线程即会创建任务。

分区格式

每个投递任务会写入OSS一个文件,路径格式是oss:// OSS-BUCKET/OSS-PREFIX/PARTITION-FROMAT_RANDOM-ID。PARTITION-FROMAT根据投递任务创建时间格式化得到,以创建时间为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/43_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等大数据平台分析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 投递功能后,日志服务后台会定期启动投递任务。您可以在控制台上看到这些投递任务的状态。

通过 日志投递任务管理,您可以:

  • 查看过去两天内的所有日志投递任务,了解其状态。投递任务状态可以是“成功”、“进行中”和“失败”。“失败”状态则表示您的投递任务出现了因外部原因而无法重试的错误,需要您参与解决问题。

  • 对于创建两天内的投递失败任务,您可在任务列表中查看导致失败的外部原因。修复好这些外部原因后,您可以逐一或者整体重试所有失败任务。

操作步骤

  1. 登录 日志服务管理控制台

    选择所需的项目,单击项目名称。

  2. 选择所需的日志库,单击日志投递列下的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,单击 Object管理 即可看到有日志服务投递过来的数据。

更多 OSS 使用细节请参考 OSS 文档

Object 地址

oss:// OSS-BUCKET/OSS-PREFIX/PARTITION-FROMAT_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存储格式

本文导读目录