2015-07-28 158 views
8

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 
 
\t jdbc_password => "[email protected]" 
 
    schedule => "0 0-59 0-23 * * *" 
 
    statement => "SELECT ID , Name, City, State,ShopName FROM dbo.Shops" 
 
\t jdbc_paging_enabled => "true" 
 
    jdbc_page_size => "50000" 
 
    } 
 
} 
 
filter { 
 
} 
 
output { 
 
    stdout { codec => rubydebug } 
 
    elasticsearch { 
 
     protocol => "http" 
 
\t \t index => "shops" 
 
\t \t document_id => "%{id}" 
 
    } 
 
}

我想導入使用Logstash使用JDBC SQL Server作爲輸入ElasticSearch數據,但我得到錯誤的類路徑是不正確的。

有人知道如何使用Logstash正確位置sqljdbc文件,CONFIG文件

+0

您能否提供您的logstash配置?很難理解你想達到的目標。 – hurb

+0

@herb我想從ms sql的數據到使用logstash的elasticsearch,但問題是數據插入和更新,但沒有在elasticsearch中刪除 –

回答

17

我認爲到「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 { 
    host => "localhost" 
    index => "INDEX_NAME" 
    document_type => "DOCUMENT_TYPE" 
    document_id => "%{id}" 
    protocol => "http" 
    } 
    stdout { codec => rubydebug } 
} 

我下載了微軟JDBC驅動程序的SQL Server從這裏: 「https://msdn.microsoft.com/en-us/sqlserver/aa937724.aspx

提取將文件移動到「jdbc_driver_library」中指定的路徑

然後我運行plugin命令:「plugin install logstash-input-jdbc」來安裝logstash輸入jdbc插件。

最後運行logstash:「logstash -f logstash.conf」。

順便說一句:我也使用Elasticsearch.Net在.NET服務的應用程序來刷新數據 「http://nest.azurewebsites.net/

這VID:「添加Elasticsearch到現有的.NET/SQL Server應用程序」 「https://www.youtube.com/watch?v=sv-MflnT9qI」討論使用Service Broker隊列從sql中獲取數據。我們目前正在探索這個選項。

+0

您也可以將JDBC驅動程序文件(sqljdbc42.jar在我的情況)放在根目錄Logstash安裝的文件夾。這對Logstash 2.4.0有效。 –

+0

更正:只要這是您從(bin \ logstash --config myconfigfile.conf)啓動Logstash的位置,上述語句就是正確的。 –

2
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這條道路。嘗試將這些驅動程序解壓縮到代碼中所示的相同路徑中。