Logstash - 在ruby过滤器内导入模块

时间:2017-01-01 12:19:23

标签: ruby logstash logstash-configuration

我正在尝试在logstash过滤器中使用ruby代码,但它会出错:

[
   {
     "field":"value",
     "bookings": null
   }
]

我认为错误是因为我需要导入Enumerable模块(beucase没有行filter { ruby { code => " arr = [ {id: 1, name: 'John' }, {id: 2, name: 'Sam' }, {id: 3, name: 'Bob' }] if arr.any? {|h| h[:name] == "Sam"} event['doc']['userInput']['programName'] = '222222' end" } } 没有抛出错误),但我不知道如何在logstash的ruby过滤器中导入模块?

1 个答案:

答案 0 :(得分:1)

问题是因为Sam在双引号之间,你需要在整个代码块中使用单引号,因为代码本身用双引号括起来。

filter {
ruby {
    code => "
       arr = [ {id: 1, name: 'John' }, {id: 2, name: 'Sam' }, {id: 3, name: 'Bob' }]
       if arr.any? {|h| h[:name] == 'Sam'}
          event['doc']['userInput']['programName'] = '222222'
       end"
     }
  }