我自己的logstash过滤器不能正确提取输入字段值

时间:2016-09-05 09:00:50

标签: ruby logstash

我为logstash构建了自己的插件过滤器。这个过滤器的原理是在坐标系统中形成一些称为“lambertII”的坐标(x,y)并将其转换为gps系统(纬度,经度)。这是一个例子:

lambert {
    convert => ["lambertII", x, y]
    latitude => ["lat"] #return as output latitude
    longitude => ["long"] #return as output longitude
}

我写的时候效果很好:

 convert => ["LambertII", 2478517.33, 547536.68]

但是,当我从json文件中提取数据时,如下所示

{"x":2478517.33, "y":547536.68}
{"x":2699120.65, "y":544959.56}

但是当我写的时候它不起作用:

convert => ["LambertII", "%{[x]}", "%{[y]}"] 

convert => ["LambertII", "%{x}", "%{y}"] 

实际上,我的ruby代码不会从表达式“%{[..]}”或“%{..}”中提取浮点值,但它会像字符串表达式一样解释它们。

我已经看到以下链接,但它没有解决我的问题:https://www.elastic.co/guide/en/logstash/current/event-dependent-configuration.html#event-dependent-configuration

我没有找到如何解决这个问题。我会非常感谢任何帮助。

感谢您的关注和帮助!

1 个答案:

答案 0 :(得分:1)

我认为你没有在lambert.rb中调用event.sprintf()。使用它,它可以工作!