智能日志管理平台

  • lua (自定义脚本)

    最近更新时间:2018-08-28 19:18:08

    lua transformer 的主要功能是支持用户自定义脚本执行对数据的变换,是最为灵活的变换方式。

    顾名思义,lua transformer所支持的语言就是lua脚本语言,目前支持的lua标准库包括 table(对象操作), string(字符串操作), math(数学计算) 三个。其他如系统调用、IO操作则不支持。

    lua transformer 的原理就是允许您自定义一段lua脚本,其中主体为一个函数,这个函数的参数为一个table,我们会将您数据中所有基础类型(string,float,long)的字段注入到这个table中,然后经过函数的计算,返回一个字符串。
    这个返回的字符串会作为一个字段赋值到您的数据中。

    • 新字段名称(new): 经过 lua transformer 变换后生成的新字段名称。
    • Lua脚本代码(script): 填写一段lua脚本,必须包含一个函数,函数的参数为table,返回值为一个字符串。(lua脚本中可以包含多个函数,如在函数内调用其他小函数,应用于数据变换的函数才需要满足该规则。)
    • Lua脚本中的函数名(function_name): 填写您lua脚本中写的函数名称。(lua脚本中可以包含多个函数,如在函数内调用其他小函数,此处填写应用于数据变换的函数名称。)
    • transform运行的阶段(parser前还是parser后)(stage): 默认情况下,transformer运行的阶段都是数据解析后,但是这个transformer也可以运行在数据解析前,及刚读到的字符串就可以只写该lua transformer,再进行解析。次数函数传入的参数不再是table类型,而是字符串类型,返回的同样是字符串。

    我们来看一个实际调用 lua 转换器的例子,示例配置如下所示:

    我们的样例日志已经包含了4个字段,如下所示:

    {
      "f3": "s",
      "f4": "s",
      "f1": "a",
      "f2": "c"
    }
    

    我们编写了一段lua脚本:

    function my_function(param)
        return param['f1']..param['f2']
    end
    

    传入的参数类型是固定的,必须是table,里面已经注入了我们的字段(param['f1']包含的值为"a", param['f2']包含的值为"c"...),函数的功能是把 f1f2 两个字符串拼接串联起来。

    然后我们要将my_function这个函数名称填入"Lua脚本中的函数名"(function_name)配置项中,表示我们要应用这个函数。

    新的字段我们命名为 newfield ,可以看到变换后的结果,出现了newfield字段。

    让我们再来看一个数学计算的例子:

    其中 f1, f2的字段值为数字,然后我们对其进行相加,结果赋值到 newfield 字段中,注意返回的是字符串,如果需要转化为整型,可以使用convert transformer

    若您对lua的语法不是很熟悉,可以参考Lua的官方文档, 我们目前支持的版本为 5.1

    以上内容是否对您有帮助?
  • Icon free helper
    Close