0

J'ai essayé d'importer des données de MS SQL Server vers Elastic Search en utilisant Logstash. Cependant, j'obtiens une erreur de pipeline logstash et de méthode non définie `close_jdbc_connection '. Je n'ai pas trouvé la solution exacte à ce problème. Le code utilisé et les messages d'erreur sont les suivants -Méthode non définie `close_jdbc_connection 'pour # <Sequel :: JDBC :: Base de données: 0 x764acb8b>

config 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 } } 
} 

sortie -

[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> 

Remarque - J'utilise Windows 7, la version 5.4.3 ELK. Le login sql est capable de se connecter au serveur SQL.

Répondre

0

On dirait qu'il y avait un bug https://github.com/logstash-plugins/logstash-input-jdbc/issues/227 - qui a été signalé en Juillet - On dirait qu'il fait dans la 4.2.4 version du plug-in JDBC https://github.com/logstash-plugins/logstash-input-jdbc/blob/v4.2.4/CHANGELOG.md - utilisez-vous une version antérieure du plug-in? Cela dit, je soupçonne que le problème pourrait encore être un problème avec votre connexion, le plugin peut mal gérer un problème de connexion ... Comme vous avez sensiblement remplacé les détails db/server, il est impossible de dire catégoriquement si il y a un problème avec la chaîne de connexion ... La seule chose que je vais dire est que vous avez besoin d'un deux-points entre le serveur et le port (vous avez une virgule), vous pourriez aussi avoir besoin d'un point-virgule à la fin de la chaîne mais je ne pense pas qu'il est strictement nécessaire:

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

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

+0

I Misse d le côlon et essayait d'utiliser une virgule. Merci – Mrin