logstash - 在过滤器中使用ruby代码

时间:2015-08-19 11:03:30

标签: ruby filter logstash

是否可以在过滤器内使用ruby代码?像这样的东西:

filter {
 csv{
   ruby {
      code => "
            fieldArray = event['message'].split(',')
            for field in fieldArray
                event[field] = field
            end
        "
        }
   }
}

1 个答案:

答案 0 :(得分:1)

不,csv {}是一个过滤器,而ruby {}是一个过滤器,所以当你展示时,它们不会互相嵌套。

你还没有描述这个问题,但也许只是使用ruby {}就是你正在寻找的。

编辑:有关问题的更多信息,这里有一些注释:

Logstash一次运行一个事件,因此对于csv {},它一次处理文件中的一行。即使使用ruby {}过滤器,也无法查看整个输入。

但是,由于标题行是第一个,因此您应该能够放入ruby {},将此行的列隐藏到持久变量中,对于后续行,循环遍历ruby中的字段并重命名它们

您还可以将csv {}过滤器扩展为"标头识别",这将使大量的logstash用户受益。