2015-07-28 8 views
8

Logstash SQL Server Data Import

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

möchte ich Daten in Elasticsearch importieren mit Logstash mit JDBC SQL Server als Eingabe aber ich erhalte Fehlerklasse Pfad nicht korrekt ist.

Jeder weiß, wie für die korrekte Position für sqljdbc FILE mit config file

+0

Könnten Sie bitte Ihre Logstash-Konfiguration angeben? Es ist schwer zu verstehen, was Sie erreichen wollen. – hurb

+0

@herb Ich versuche, Daten von ms sql in elasticsearch mit logstash zu bekommen, aber das Problem ist, Daten einfügen und aktualisieren, aber löscht nicht in elasticsearch –

Antwort

17

Ich denke, dass Pfad zur „sqljdbc4.jar“ Datei nicht korrekt ist mit Logstash verbinden. Hier ist die Konfiguration verwende ich Daten aus einer SQL-Datenbank in Elasticsearch abzufragen (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 } 
} 

ich den Microsoft JDBC-Treiber für SQL Server von hier heruntergeladen "https://msdn.microsoft.com/en-us/sqlserver/aa937724.aspx"

Heraus Die Dateien mit dem Pfad in "jdbc_driver_library"

Dann habe ich den Plugin-Befehl: "plugin install logstash-input-jdbc", um die Logstash-Eingabe-JDBC-Plugin zu installieren.

Und schließlich läuft logstash: "logstash -f logstash.conf".

Als Nebenwirkung: Ich bin auch Elasticsearch.Net in einem .Net Service App die Daten zu aktualisieren "http://nest.azurewebsites.net/"

Und dieses vid: "Hinzufügen von Elasticsearch Zu einer bestehenden .NET/SQL-Server-Anwendung" "https://www.youtube.com/watch?v=sv-MflnT9qI" diskussiert mithilfe einer Service Broker-Warteschlange, um die Daten aus SQL zu erhalten. Wir untersuchen dies derzeit als eine Option.

+0

Sie können auch die JDBC-Treiberdatei (sqljdbc42.jar in meinem Fall) im root Ordner Ihrer Logstash-Installation. Das funktionierte für mich mit Logstash 2.4.0. –

+0

Korrektur: Die obige Anweisung ist korrekt, solange dies der Speicherort ist, von dem Sie Logstash starten (bin \ logstash --config myconfigfile.conf). –

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

Sie benötigen sqljdbc Treiber von https://www.microsoft.com/en-au/download/details.aspx?id=11774 zum Herunterladen und wo immer Sie diese Treiber entpacken wird nur diesen Weg in jdbc_driver_library geben. Versuchen Sie, diese Treiber in den gleichen Pfad zu entpacken, wie im Code angezeigt.