web-dev-qa-db-ja.com

Logstash SQL Serverデータインポート

input {
  jdbc {
    jdbc_driver_library => "sqljdbc4.jar"
    jdbc_driver_class => "com.Microsoft.sqlserver.jdbc.SQLServerDriver"
    jdbc_connection_string => "jdbc:sqlserver://192.168.2.126\\SQLEXPRESS2014:1433;databaseName=test
        jdbc_password => "sa@sa2015"
    schedule => "0 0-59 0-23 * * *"
    statement => "SELECT ID , Name, City, State,ShopName FROM dbo.Shops"
        jdbc_paging_enabled => "true"
    jdbc_page_size => "50000"
  }
}
filter {
}
output {
  stdout { codec => rubydebug }
    elasticsearch { 
        protocol => "http"
                index => "shops"
                document_id => "%{id}"
    }
}

JDBC SQL Serverを入力として使用し、Logstashを使用してElasticSearchにデータをインポートしたいのですが、エラークラスパスが正しくありません。

Logstashを使用してsqljdbc FILE WITH CONFIG FILEの正しい場所に接続する方法は誰でも知っています

10
Vivek Gupta

「sqljdbc4.jar」ファイルへのパスが正しくないと思います。これは、SQLデータベースからelasticsearch(logstash.conf)にデータをクエリするために使用している構成です。

input {
  jdbc {
    jdbc_driver_library => "D:\temp\sqljdbc\sqljdbc_4.2\enu\sqljdbc42.jar"
    jdbc_driver_class => "com.Microsoft.sqlserver.jdbc.SQLServerDriver"
    jdbc_connection_string => "jdbc:sqlserver://DBSVR_NAME;user=****;password=****;"
    jdbc_user => "****"
    jdbc_password => "****"
    statement => "SELECT *
FROM [DB].[SCHEMA].[TABLE]"
  }
}
filter {
}
output {
  elasticsearch {
    hosts => "localhost"
    index => "INDEX_NAME"
    document_type => "DOCUMENT_TYPE"
    document_id => "%{id}"
    protocol => "http"
  }
  stdout { codec => rubydebug }
}

ここからSQL Server用のMicrosoft JDBCドライバーをダウンロードしました: " https://msdn.Microsoft.com/en-us/sqlserver/aa937724.aspx "

「jdbc_driver_library」で指定されたパスにファイルを抽出しました

次に、プラグインコマンド「plugin install logstash-input-jdbc」を実行して、logstash入力jdbcプラグインをインストールしました。

そして最後にlogstashを実行します: "logstash -f logstash.conf"。

余談ですが、私は.NetサービスアプリでElasticsearch.Netを使用してデータを更新しています " http://nest.azurewebsites.net/ "

そして、このvid:「Elasticsearchを既存の.NET/SQL Serverアプリケーションに追加する」 " https://www.youtube.com/watch?v=sv-MflnT9qI " Service Brokerキューを使用してSQLからデータを取得します。現在、これをオプションとして検討しています。

編集-ホストをここのドキュメントのようにホストに更新 https://www.elastic.co/guide/en/logstash/current/plugins-outputs-elasticsearch.html#plugins-outputs-elasticsearch-hosts

19
user657527
input {
  jdbc {
    jdbc_driver_library => "C:\Program Files\Microsoft JDBC Driver 6.0 for SQL Server\sqljdbc_6.0\enu\jre8\sqljdbc42.jar"
    jdbc_driver_class => "com.Microsoft.sqlserver.jdbc.SQLServerDriver"
    jdbc_connection_string => "jdbc:sqlserver://[SERVER NAME];databaseName=[DATABASE NAME];"
    jdbc_user => "[USERNAME]"
    jdbc_password => "[PASSWORD]"
    statement => "SELECT eventId, sessionId FROM Events;"
  }
}

output {
  elasticsearch {
    hosts => "http://localhost:9200"
    index => "events3"
  }
  stdout { codec => rubydebug }
}

https://www.Microsoft.com/en-au/download/details.aspx?id=11774 からsqljdbcドライバーをダウンロードする必要があります。これらのドライバーを解凍する場所はどこでも、jdbc_driver_libraryにそのパスを指定するだけです。 。コードに示すように、それらのドライバーを同じパスに解凍してみてください。

3
Rahul

このようにしてください:-

input {
  jdbc {
    jdbc_driver_library => "sqljdbc4.jar"
    jdbc_driver_class => "com.Microsoft.sqlserver.jdbc.SQLServerDriver"
    jdbc_connection_string => "jdbc:sqlserver://192.168.2.126:1433;databaseName=test
    jdbc_password => "sa@sa2015"
    schedule => "0 0-59 0-23 * * *"
    statement => "SELECT ID , Name, City, State,ShopName FROM dbo.Shops"
    jdbc_paging_enabled => "true"
    jdbc_page_size => "50000"
  }
}
filter {
}
output {
  stdout { codec => rubydebug }
    elasticsearch { 
        protocol => "http"
        index => "shops"
        document_id => "%{id}"
        hosts => "your_Host_here"

    }
}
0
Honey Yadav