2017-10-15 12 views
0

Logstash를 사용하여 MS SQL Server에서 탄성 검색으로 데이터를 가져 오려고했습니다. 그러나, 나는 logstash 파이프 라인과 정의되지 않은 메소드`close_jdbc_connection '오류를 얻고있다. 이 문제에 대한 정확한 해결책을 찾지 못했습니다. 다음과 같이 코드 사용 및 오류 메시지는 -# <Sequel :: JDBC :: Database : 0 x764acb8b>

logstash의 설정 -

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> 

주 - 내가 사용하고있는 윈도우 7, ELK 5.4.3 버전. SQL 로그인은 SQL 서버에 연결할 수 있습니다.

답변

0

그것은 버그 https://github.com/logstash-plugins/logstash-input-jdbc/issues/227 있었다처럼 보인다 - 그 7 월에보고되었다 -는 JDBC 플러그인 https://github.com/logstash-plugins/logstash-input-jdbc/blob/v4.2.4/CHANGELOG.md의 4.2.4 버전으로 그것을 만든 것 같습니다 - 당신은 플러그인의 이전 버전을 사용하고 있습니까?

그 말로, 나는 여전히 당신의 연결에 문제가있을 수 있다고 생각합니다. 플러그인은 연결 문제를 제대로 처리하지 못할 수도 있습니다 ... db/server 정보를 현명하게 대체 했으므로, 연결 문자열에 문제가 있습니다 ... 제가 말하고자하는 한 가지는 서버와 포트 사이에 콜론이 필요하다는 것입니다 (쉼표가 있음). 문자열 끝에 세미콜론이 필요할 수도 있습니다. 그러나 나는 반드시 필요한 생각하지 않습니다 :

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

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

+0

내가 MISSE d는 콜론을 사용하고 쉼표로 표시하려고했습니다. 감사 – Mrin