代码之家  ›  专栏  ›  技术社区  ›  Mrin

#<Sequel::jdbc::数据库:0 x764acb8b>

  •  0
  • Mrin  · 技术社区  · 7 年前

    我一直在尝试使用Logstash将数据从MS SQL Server导入弹性搜索。然而,我得到了logstash管道和未定义方法“close\u jdbc\u connection”错误。我还没有找到这个问题的确切解决方案。使用的代码和错误消息如下-

    日志存储配置-

    input {
      jdbc {
       jdbc_driver_library => "C:\elasticsearch-5.4.3\elasticsearch-5.4.3\lib\sqljdbc42.jar"
       jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
       jdbc_connection_string => "jdbc:sqlserver://<servername>,<portname>;databaseName=<db_name>"
       jdbc_user => "user"
       jdbc_password => "password"
       statement => "select * from dbo.jobstatus"
       jdbc_paging_enabled => "true"
       jdbc_page_size => "50000"
       }
    }
    filter {
        mutate {
            remove_field => [ "message", "path", "score", "@version", "host" ]
        }
        #mutate { convert => ["REGCONNTYPEID","integer"]}
    }
    
    output {
        elasticsearch {
            hosts => "localhost"
            index => "sql_elk_dc_stats"
            document_type => "devices"
        }
        stdout { codec => rubydebug { metadata=> true } }
    }
    

    输出-

    [2017-10-15T18:20:11,768][INFO ][logstash.agent           ] Successfully started
     Logstash API endpoint {:port=>9600}
    [2017-10-15T18:20:40,971][WARN ][logstash.inputs.jdbc     ] Failed test_connecti
    on.
    [2017-10-15T18:20:40,978][ERROR][logstash.pipeline        ] A plugin had an unre
    coverable error. Will restart this plugin.
      Plugin: <LogStash::Inputs::Jdbc jdbc_driver_library=>"C:\\elasticsearch-5.4.3\
    \elasticsearch-5.4.3\\lib\\sqljdbc42.jar", jdbc_driver_class=>"com.microsoft.sql
    server.jdbc.SQLServerDriver", jdbc_connection_string=>"jdbc:sqlserver://<servername>,<port>;databaseName=db_name", jdbc
    _user=>"user", jdbc_password=><password>, statement=>"select * from dbo.jo
    bstatus", jdbc_paging_enabled=>true, jdbc_page_size=>50000, id=>"36bb27ae9af8f6a
    086048a0a0f6a22d4a32b1be6-1", enable_metric=>true, codec=><LogStash::Codecs::Pla
    in id=>"plain_8d7b9383-b58f-4dfe-82c8-20066ced2652", enable_metric=>true, charse
    t=>"UTF-8">, jdbc_validate_connection=>false, jdbc_validation_timeout=>3600, jdb
    c_pool_timeout=>5, sql_log_level=>"info", connection_retry_attempts=>1, connecti
    on_retry_attempts_wait_time=>0.5, parameters=>{"sql_last_value"=>false}, last_ru
    n_metadata_path=>"C:\\Users\\ghosmrin/.logstash_jdbc_last_run", use_column_value
    =>false, tracking_column_type=>"numeric", clean_run=>false, record_last_run=>tru
    e, lowercase_column_names=>true>
      Error: undefined method `close_jdbc_connection' for #<Sequel::JDBC::Database:0
    x764acb8b>
    

    注意-我使用的是windows 7,ELK 5.4.3版本。sql登录可以连接到sql server。

    1 回复  |  直到 7 年前
        1
  •  0
  •   greggers    7 年前

    看起来好像有个bug https://github.com/logstash-plugins/logstash-input-jdbc/issues/227 -这是在7月份报道的——看起来它已经进入了JDBC插件的4.2.4版本 https://github.com/logstash-plugins/logstash-input-jdbc/blob/v4.2.4/CHANGELOG.md -你使用的是早期版本的插件吗?

    话虽如此,我怀疑这可能仍然是你的连接问题,插件可能只是处理连接问题不好。。。由于您明智地替换了数据库/服务器的详细信息,因此无法明确地说连接字符串是否有问题。。。我要说的一件事是,在服务器和端口之间需要一个冒号(你有一个逗号),在字符串的末尾可能还需要一个分号,但我认为这不是绝对必要的:

    jdbc_connection_string => "jdbc:sqlserver://<servername>:<portname>;databaseName=<db_name>;"

    https://docs.microsoft.com/en-us/sql/connect/jdbc/building-the-connection-url

    推荐文章