我为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
我没有找到如何解决这个问题。我会非常感谢任何帮助。
感谢您的关注和帮助!
答案 0 :(得分:1)
我认为你没有在lambert.rb中调用event.sprintf()。使用它,它可以工作!