logstash nil导入错误

时间:2016-01-05 21:55:05

标签: logstash logstash-configuration

我在尝试在logstash中进行数据导入时遇到了一些错误。我正在为我所拥有的每个“地理”领域看到它。以下是我的一些配置文件

input {
    jdbc {
        jdbc_driver_library => "c:\binaries\driver\ojdbc6.jar"
        jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver"
        jdbc_connection_string => "jdbc:oracle:thin:@random:1521/random"
        jdbc_user => "user"
        jdbc_password => "password"

        statement => "select a.*, myfunc() as geo from foo a"

        type => "sometype"
    }
}

filter{
    if [type] == "sometype" {
        mutate {
            rename => { "sometype_id" => "id" }
            remove_field => ["gdo_geometry"]
            add_field => [ "display", "%{id}" ]
        }

        # parses string to json
        json{
            source => "geo"
            target => "geometry"
        }
    }
}

output {
    if [type] == "sometype" {
        elasticsearch {
            hosts => ["myesbox:80"]
            document_id => "%{id}"
            index => "sjw"
        }
    }
}

这是第二个。

input {
    jdbc {
        jdbc_driver_library => "c:\binaries\driver\ojdbc6.jar"
        jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver"
        jdbc_connection_string => "jdbc:oracle:thin:@random:1521/random"
        jdbc_user => "user"
        jdbc_password => "password"

        statement => "select a.*, myfunc() as geo from foo2 a"

        type => "sometype2"
    }
}

filter{
    if [type] == "sometype2" {
        mutate {
            rename => { "sometype2_id" => "id" }
            remove_field => ["gdo_geometry"]
            add_field => [ "display", "%{id}" ]
        }

        # parses string to json
        json{
            source => "geo"
            target => "geometry"
        }
    }
}

output {
    if [type] == "sometype2" {
        elasticsearch {
            hosts => ["myesbox:80"]
            document_id => "%{id}"
            index => "sjw"
        }
    }
}

这是错误消息(对我的数据库表中的每条记录重复一次)。

{:timestamp=>"2016-01-05T13:33:18.258000-0800", :message=>"Trouble parsing json", :source=>"geo", :raw=>nil, :exception=>java.lang.ClassCastException: org.jruby.RubyNil cannot be cast to org.jruby.RubyIO, :level=>:warn}

现在有趣的是,该领域似乎成功导入。我可以看到按预期填充的数据。但我不知道为什么会产生这个警告。我正在运行logstash

logstash -f /my/logstash/dir

另外有趣的是,如果我修改给定的第一个配置文件并将源json过滤器名称更改为“geom”而不是“geo” - 将不再出现此警告。它似乎只发生在我有多个配置文件具有相同的字段/ json过滤器组合时。所以,如果我然后添加了第三个配置文件并且它有一个由json过滤器解析的“geo”字段 - 问题再次出现 - 尽管我仍然看不到第一个配置文件的任何警告消息 - 只有第二个第三。

1 个答案:

答案 0 :(得分:0)

这里的问题实际上证明是2.0版本的logstash的一个错误。我不确定究竟是什么问题,但升级到2.1为我解决了这个问题。