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

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

适用场景

数据清洗、加工场景
通过日志服务,快速完成日志采集、加工、查询、分析。
图 1. 数据清洗、加工场景


数据投递场景
为数据的目的端落地提供支撑,构建云上大数据产品间的数据管道。
图 2. 数据投递场景


工作原理

触发机制

日志服务的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数据进行处理。
图 3. 触发机制


ETL函数

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

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

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

  • 用户自定义函数

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

使用指南

步骤1 授权与准备资源

  1. 快捷授权页面单击同意授权,为日志服务触发函数执行授权。
  2. 创建日志服务Project和函数过程日志Logstore。

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

    说明
    日志服务Project和函数计算Service所属区域必须相同。

步骤2 创建服务

  1. 在函数计算控制台右上角单击新建服务
  2. 填写服务名称功能描述,并展开高级配置
    配置项 说明
    服务名称 为您新建的函数计算服务命名。命名规则:
    • 由英文字符(a-z)或(A-Z),数字(0-9),下划线(_)和中划线(-)组成
    • 首字母必须为英文字母(a-z)、(A-Z)或下划线(_)
    • 大小写敏感,且长度为1-128字符
    功能描述 新建服务的描述内容。
    日志项目 日志服务Project名称。必须与您新建函数计算服务的项目位于同一Region。
    日志仓库 日志服务Logstore名称。必须与您新建函数计算服务的项目位于同一Region。
    角色创建方式 创建服务角色,根据选择的系统模板创建对应的权限。授予函数计算推送日志到指定的仓库。您可以新建角色或是选择已有角色。如您选择使用已有角色,需要选定一个已经存在的角色。
    系统模板授权 选择系统授权策略。日志服务支持AliyunLogFullAccessAliyunLogReadOnlyAccess两个系统授权策略。
    图 4. 创建服务


    确定系统授权策略之后,单击点击授权。此时会跳出角色快捷创建弹窗,您需要在弹窗中确认角色信息权限信息,包括策略名称策略描述策略详情。如果是新建策略,您还需要确认角色名称角色描述。在策略详情中,您可以细化授权策略,为该角色自定义一个合适的授权策略。

    服务授权成功后,单击确定,进入服务概览界面。

步骤3 创建函数和触发器

  1. 服务概览界面,单击新建函数

    选择函数模板

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

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

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

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

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


    说明
    您已经拥有了让日志服务调用您的函数和读写Logstore的的权限。
  3. 填写基础管理配置

    填写函数名称、函数入口等基础管理配置信息,并单击下一步

  4. 填写权限配置

    确认模版授权触发器角色授权,并单击下一步

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

查看触发器日志

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

查看函数运行日志

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

常见问题

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