全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 钉钉智能硬件
日志服务

自定义ETL

更新时间:2017-11-27 16:03:14

依托于函数计算服务,日志服务提供流式的全托管数据加工服务。

您可以配置一个ETL Job,日志服务将定时获取数据更新并触发函数执行:增量消费日志服务Logstore的数据,在函数里完成自定义加工任务。用于数据加工的函数可以是日志服务提供的模板或者用户自定义函数。

适用场景

数据清洗、加工场景

通过日志服务,快速完成日志采集、加工、查询、分析。

log-inner-etl

数据投递场景

为数据的目的端落地提供支撑,构建云上大数据产品间的数据管道。

log-shipper-etl

工作原理

触发机制

日志服务的ETL Job对应于函数计算的一个触发器,创建ETL Job后,日志服务将根据该Job配置启动定时器,定时器轮询Logstore的shard信息,当发现有新日志写入时,生成的< shard_id, begin_cursor, end_cursor >三元组信息作为函数event,触发函数执行。

日志服务的ETL任务触发机制是时间触发,例如:ETL Job触发间隔为60秒,Logstore的Shard 0一直有数据写入,那么对于Shard 0每1分钟就会触发一次函数执行(如果Shard没有新的数据写入则不会触发函数执行),函数执行的输入为最近60秒的cursor区间。在函数内,可以根据cursor读取Shard 0数据进行处理。

etl-trigger-model

ETL函数

您可以选择使用函数模板或者自己实现函数,开始前建议先了解函数计算服务的几个基本概念

  • 日志服务维护的函数模板

    函数模板维护在GitHub上,请访问aliyun-log-fc-functions

  • 用户自定义函数

    由您自行实现,函数配置的格式与函数的具体实现有关,请参考ETL函数开发指南

使用指南

创建ETL Job

  1. 快捷授权页面单击同意授权,为日志服务触发函数执行授权。

  2. 确定日志服务Project和函数过程日志Logstore。

    如您之前从未创建过Project和Logstore,请参考创建Project创建Logstore创建。

    注意:日志服务Project于函数服务Service所属区域必须相同。

  3. 函数服务控制台右上角单击新建服务

  4. 填写服务名称功能描述,并单击确认

  5. 服务列表页面单击服务名称,进入服务详情页面。

  6. 展开高级配置项目,单击修改,修改高级配置并单击保存

    正确选择角色角色名称策略模板

    fc-log-config

  7. 单击新建函数,并选择函数模板

    在函数创建向导中,您可以选择与您业务模型相似的业务模板进行修改并创建函数,也可以选择空白函数模板自定义函数。

    • 日志服务模板。例如logstore_replicationip_lookup是日志服务提供的业务模板,您可以基于此模板创建函数及触发器。
    • 空白模板。空白函数模板会创建一个空白函数,通过引导页面进行触发器配置、函数参数配置和代码开发,完成函数的创建。
  8. 填写触发器配置,并单击下一步

    如果您选择了日志服务提供的模板,您可以直接配置触发器;如果您选择了空白模板,请先选择触发器类型,再配置触发器。

    请填写触发器名称、Project名称、Logstore名称必选项,配置触发器。一个函数服务的LOG类型触发器对应一个日志服务的ETL Job。

    • 触发器名称。触发器的名称只能包含字母,数字、下划线和中划线,不能以数字、中划线开头,且长度范围为1~256字节。
    • Project名称。日志服务Project名称。
    • Logstore名称。日志服务Logstore名称(数据源)。本触发器会定时从该Logstore订阅数据到函数服务进行自定义加工,该参数在ETL Job创建后不允许修改。
    • 触发器日志。日志服务会定时触发函数服务的的函数执行,在触发过程中发生的异常、函数执行统计信息会记录到该 Logstore, 您可以为这个Logstore创建索引以备查看。
    • 触发间隔。日志服务触发函数运行的间隔,定义日志服务触发函数执行的间隔,例如每60秒将logstore的每个shard最近60秒数据位置读出作为函数event调用函数执行,在函数内有用户逻辑读取shard数据做计算。如果logstore的shard流量较大(超过1MB/s或者更高),建议缩短函数的触发间隔,使得每次函数运行所处理的数据量是合理大小。
    • 重试次数。日志服务根据触发间隔每次触发函数执行时,如果遇到错误(例如权限不足、网络失败、函数执行异常返回等),该参数定义本次触发所允许的最大重试次数。对于本次触发,如果超过最大重试次数仍无法成功的,需要等到下一次触发间隔到来时,由日志服务再次触发函数执行。重试对业务造成的影响,因具体的函数代码实现逻辑而异。
    • 函数配置。日志服务将该配置内容作为函数event一部分传入函数,如何使用该函数由函数自定义逻辑决定。每一种函数实现所要求的函数配置可能是不同的,绝大部分默认提供的函数模板也需要参考说明填写您的参数。默认不传入任何参数时请填写:{}

    注意您已经拥有了让日志服务调用您的函数和读写Logstore的的权限。

    fc-log-trigger

  9. 填写基础管理配置。填写函数名称、运行环境等基础配置项,输入您的代码,并单击下一步

  10. 核对您的函数信息触发器信息,并单击完成

查看触发器日志

登录日志服务控制台,为Job配置的触发器日志Logstore创建索引,查看任务执行统计结果。

查看函数运行日志

登录日志服务控制台,查看函数执行过程的详细信息,详细信息请参考日志记录

常见问题

创建触发器后未触发函数执行?

  1. 确认已经使用快捷授权为日志服务触发函数执行授权。
  2. 确认Job配置的Logstore是否有数据增量修改,当Shard数据有变化时会触发函数执行。
  3. 登录日志服务控制台查看触发器日志、函数运行日志查看是否有异常。
本文导读目录