文档

通过函数计算消费日志数据

更新时间:

依托阿里云函数计算服务,日志服务提供流式数据加工服务。您可以通过配置一个函数计算触发器任务,定时获取更新的数据并触发函数的执行,进而增量消费日志服务Logstore的数据,并完成自定义加工任务。日志服务提供的函数模板或者用户自定义函数均可作为数据加工函数。

前提条件

适用场景

  • 数据清洗、加工场景

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

  • 数据投递场景

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

数据加工函数

  • 函数类型

  • 函数计算触发机制

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

    说明

    当存储系统升级时,即使没有新数据写入,也可能发生Cursor变化,在这种情况下,每个Shard会额外空触发一次。针对这种情况,您可以在函数内通过Cursor尝试获取Shard的数据,如果获取不到数据说明是一次空触发,可以在函数内做忽略处理。更多信息,请参见自定义函数开发指南

    函数计算触发器任务触发机制是时间触发。例如:您设置的函数计算触发器任务触发间隔为60秒,Logstore的Shard0一直有数据写入,那么Shard0每60秒就会触发一次函数执行(如果Shard没有新的数据写入则不会触发函数执行),函数执行的输入为最近60秒的Cursor区间。在函数内,可以根据Cursor读取Shard0数据进行下一步处理。

操作步骤

  1. 创建函数计算服务。

    具体操作,请参见创建服务

    说明

    日志服务Project所在地域和函数计算服务所在地域必须一致。

  2. 创建函数。

    具体操作,请参见创建函数

  3. 创建触发器。

    具体操作,请参见配置SLS触发器

相关操作

  • 查询触发器日志

    您可以为触发器日志Logstore创建索引,查看任务执行统计结果。更多信息,请参见创建索引

  • 查看函数运行日志

    您可以通过命令行工具,查看函数执行过程的详细信息。更多信息,请参见查看调用日志

常见问题

  • 当您创建触发器后但未触发函数执行,如何解决?

    您可以从以下两个方面排查。

    • 确认函数计算触发器任务配置的Logstore是否有数据增量修改,当Shard数据有变化时会触发函数执行。

    • 查看触发器日志、函数运行日志查看是否有异常。

  • 为什么函数触发频次有时会高于预期的触发频次?

    每个Shard是单独触发的,您看到的可能是一个Logstore整体触发次数很多,但每个Shard实时触发时间是符合间隔的。

    单个Shard的触发间隔和每次处理的数据范围相同(时间区间)。触发间隔在函数执行时分如下两种情况,假设触发间隔为60秒。

    • 触发没有延迟:按照设定周期触发,每60秒触发一次,处理的数据范围为 [now -60s, now)

      说明

      函数触发是分Shard独立进行的, 假设Logstore有10个Shard,在实时处理数据时(触发无延迟),每60秒对应10次函数触发执行。

    • 触发发生延迟(当前处理到的日志服务Shard位置落后于最新写入数据超过10秒):触发器会进行追赶,可能缩短到2秒触发一次,每次处理的数据范围仍是60秒窗口。

  • 本页导读 (1)