Logstash - 在 ruby 过滤器中导入模块
Logstash - Import module inside ruby filter
我正在尝试在 logstash 过滤器中使用 ruby 代码,但出现错误:
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"
}
}
我假设错误是因为我需要导入 Enumerable 模块(因为没有行 arr.any? {|h| h[:name] == "Sam"}
不会引发错误),但我不知道如何在 logstash 的 [=17] 中导入模块=]过滤器?
问题是因为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"
}
}
我正在尝试在 logstash 过滤器中使用 ruby 代码,但出现错误:
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"
}
}
我假设错误是因为我需要导入 Enumerable 模块(因为没有行 arr.any? {|h| h[:name] == "Sam"}
不会引发错误),但我不知道如何在 logstash 的 [=17] 中导入模块=]过滤器?
问题是因为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"
}
}