logstash-output-jdbc 0.2.2.rc1 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +6 -117
  3. data/lib/logstash/outputs/jdbc.rb +33 -13
  4. metadata +4 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 136a9e59dadead66c0b3aa3b4ae87b194a66778d
4
- data.tar.gz: a53165aa0c81c5f945d2c7776e9c6ad01ed528e0
3
+ metadata.gz: 9d9c04c7056a8af5071a1da2710a14339093abf3
4
+ data.tar.gz: 4dd0af7eca9417f9c51944b0fb325c42c4cc4ea7
5
5
  SHA512:
6
- metadata.gz: 3034d07b2ce2bcc743eca63d5311903b52c57b103aab548c6840b67608413fdb87efed6abf86228b81c37a0c48ba61002b4519137b60a463bc3c9d20acaba762
7
- data.tar.gz: 9e54e34966849f7bf8bd39f6ae8a603ea391da685ba840c09a045c7d3ab70be7374167a931826bbc4f822d9b512f54abb85c1c4ba1efe72755103f28ac96387c
6
+ metadata.gz: abb87d28ba5e8cb5031d5a9a3b23ab44d925608cd8ce81646406366a4f45bac690c356618c74e1b28b57fe63f3c48b6c0cdea78e095882126da36ef73d52634c
7
+ data.tar.gz: 7ea9fc64a0a90155228dc276af38d394ac135e5cbb91af37ee05cad8b64d8355c339da076eaabdc5e2e3fa404ad86af2fc16d3744ca079a38fb830516bb4384e
data/README.md CHANGED
@@ -17,6 +17,9 @@ particular location. Please ensure you read the 4 installation lines below.
17
17
  - Altered exception handling to now count sequential flushes with exceptions thrown in 0.2.0
18
18
 
19
19
  ## Versions
20
+ Released versions are are tagged as of v0.2.1, and available via rubygems.
21
+
22
+ For development:
20
23
  - See master branch for logstash v2+
21
24
  - See v1.5 branch for logstash v1.5
22
25
  - See v1.4 branch for logstash 1.4
@@ -24,7 +27,7 @@ particular location. Please ensure you read the 4 installation lines below.
24
27
  ## Installation
25
28
  - Run `bin/plugin install logstash-output-jdbc` in your logstash installation directory
26
29
  - Now either:
27
- - Use driver_class in your configuraton to specify a path to your jar file
30
+ - Use driver_path in your configuraton to specify a path to your jar file
28
31
  - Or:
29
32
  - Create the directory vendor/jar/jdbc in your logstash installation (`mkdir -p vendor/jar/jdbc/`)
30
33
  - Add JDBC jar files to vendor/jar/jdbc in your logstash installation
@@ -56,120 +59,6 @@ Tests are not yet 100% complete.
56
59
  | max_flush_exceptions | Number | Number of sequential flushes which cause an exception, before we stop logstash. Set to a value less than 1 if you never want it to stop. This should be carefully configured with relation to idle_flush_time if your SQL instance is not highly available. | No | 0 |
57
60
 
58
61
  ## Example configurations
59
- If you have a working sample configuration, for a DB thats not listed, pull requests are welcome.
60
-
61
- ### SQLite3
62
- * Tested using https://bitbucket.org/xerial/sqlite-jdbc
63
- * SQLite setup - `echo "CREATE table log (host text, timestamp datetime, message text);" | sqlite3 test.db`
64
- ```
65
- input
66
- {
67
- stdin { }
68
- }
69
- output {
70
- stdout { }
71
-
72
- jdbc {
73
- connection_string => 'jdbc:sqlite:test.db'
74
- statement => [ "INSERT INTO log (host, timestamp, message) VALUES(?, ?, ?)", "host", "@timestamp", "message" ]
75
- }
76
- }
77
- ```
78
-
79
- ### SQL Server
80
- * Tested using http://msdn.microsoft.com/en-gb/sqlserver/aa937724.aspx
81
- ```
82
- input
83
- {
84
- stdin { }
85
- }
86
- output {
87
- jdbc {
88
- connection_string => "jdbc:sqlserver://server:1433;databaseName=databasename;user=username;password=password;autoReconnect=true;"
89
- statement => [ "INSERT INTO log (host, timestamp, message) VALUES(?, ?, ?)", "host", "@timestamp", "message" ]
90
- }
91
- }
92
- ```
93
-
94
- ### Postgres
95
- With thanks to [@roflmao](https://github.com/roflmao)
96
- ```
97
- input
98
- {
99
- stdin { }
100
- }
101
- output {
102
- jdbc {
103
- connection_string => 'jdbc:postgresql://hostname:5432/database?user=username&password=password'
104
- statement => [ "INSERT INTO log (host, timestamp, message) VALUES(?, CAST (? AS timestamp), ?)", "host", "@timestamp", "message" ]
105
- }
106
- }
107
- ```
62
+ Example logstash configurations, can now be found in the examples directory. Where possible we try to link every configuration with a tested jar.
108
63
 
109
- ### Oracle
110
- With thanks to [@josemazo](https://github.com/josemazo)
111
- * Tested with Express Edition 11g Release 2
112
- * Tested using http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-112010-090769.html (ojdbc6.jar)
113
- ```
114
- input
115
- {
116
- stdin { }
117
- }
118
- output {
119
- jdbc {
120
- connection_string => "jdbc:oracle:thin:USER/PASS@HOST:PORT:SID"
121
- statement => [ "INSERT INTO log (host, timestamp, message) VALUES(?, CAST (? AS timestamp), ?)", "host", "@timestamp", "message" ]
122
- }
123
- }
124
- ```
125
-
126
- ### Mysql
127
- With thanks to [@jMonsinjon](https://github.com/jMonsinjon)
128
- * Tested with Version 14.14 Distrib 5.5.43, for debian-linux-gnu (x86_64)
129
- * Tested using http://dev.mysql.com/downloads/file.php?id=457911 (mysql-connector-java-5.1.36-bin.jar)
130
- ```
131
- input
132
- {
133
- stdin { }
134
- }
135
- output {
136
- jdbc {
137
- connection_string => "jdbc:mysql://HOSTNAME/DATABASE?user=USER&password=PASSWORD"
138
- statement => [ "INSERT INTO log (host, timestamp, message) VALUES(?, CAST (? AS timestamp), ?)", "host", "@timestamp", "message" ]
139
- }
140
- }
141
- ```
142
-
143
- ### MariaDB
144
- * Tested with Ubuntu 14.04.3 LTS, Server version: 10.1.9-MariaDB-1~trusty-log mariadb.org binary distribution
145
- * Tested using https://downloads.mariadb.com/enterprise/tqge-whfa/connectors/java/connector-java-1.3.2/mariadb-java-client-1.3.2.jar (mariadb-java-client-1.3.2.jar)
146
- ```
147
- input
148
- {
149
- stdin { }
150
- }
151
- output {
152
- jdbc {
153
- connection_string => "jdbc:mariadb://HOSTNAME/DATABASE?user=USER&password=PASSWORD"
154
- statement => [ "INSERT INTO log (host, timestamp, message) VALUES(?, ?, ?)", "host", "@timestamp", "message" ]
155
- }
156
-
157
- }
158
- ```
159
-
160
- ### Apache Phoenix (HBase SQL)
161
- * Tested with Ubuntu 14.04.03 / Logstash 2.1 / Apache Phoenix 4.6
162
- * <!> HBase and Zookeeper must be both accessible from logstash machine <!>
163
- ```
164
- input
165
- {
166
- stdin { }
167
- }
168
- output {
169
- jdbc {
170
- connection_string => "jdbc:phoenix:ZOOKEEPER_HOSTNAME"
171
- statement => [ "UPSERT INTO EVENTS log (host, timestamp, message) VALUES(?, ?, ?)", "host", "@timestamp", "message" ]
172
- }
173
-
174
- }
175
- ```
64
+ If you have a working sample configuration, for a DB thats not listed, pull requests are welcome.
@@ -83,25 +83,22 @@ class LogStash::Outputs::Jdbc < LogStash::Outputs::Base
83
83
 
84
84
  load_jar_files!
85
85
 
86
- @pool = Java::ComZaxxerHikari::HikariDataSource.new
87
-
88
- @pool.setAutoCommit(@driver_auto_commit)
89
- @pool.setDriverClassName(@driver_class) if @driver_class
90
-
91
- @pool.setJdbcUrl(@connection_string)
92
-
93
- @pool.setUsername(@username) if @username
94
- @pool.setPassword(@password) if @password
95
-
96
- @pool.setMaximumPoolSize(@max_pool_size)
97
- @pool.setConnectionTimeout(@connection_timeout)
98
-
99
86
  @exceptions_tracker = RingBuffer.new(@max_flush_exceptions)
100
87
 
101
88
  if (@flush_size > 1000)
102
89
  @logger.warn("JDBC - Flush size is set to > 1000")
103
90
  end
104
91
 
92
+ if @statement.length < 1
93
+ @logger.error("JDBC - No statement provided. Configuration error.")
94
+ end
95
+
96
+ if (!@unsafe_statement and @statement.length < 2)
97
+ @logger.error("JDBC - Statement has no parameters. No events will be inserted into SQL as you're not passing any event data. Likely configuration error.")
98
+ end
99
+
100
+ setup_and_test_pool!
101
+
105
102
  buffer_initialize(
106
103
  :max_items => @flush_size,
107
104
  :max_interval => @idle_flush_time,
@@ -144,6 +141,29 @@ class LogStash::Outputs::Jdbc < LogStash::Outputs::Base
144
141
 
145
142
  private
146
143
 
144
+ def setup_and_test_pool!
145
+ # Setup pool
146
+ @pool = Java::ComZaxxerHikari::HikariDataSource.new
147
+
148
+ @pool.setAutoCommit(@driver_auto_commit)
149
+ @pool.setDriverClassName(@driver_class) if @driver_class
150
+
151
+ @pool.setJdbcUrl(@connection_string)
152
+
153
+ @pool.setUsername(@username) if @username
154
+ @pool.setPassword(@password) if @password
155
+
156
+ @pool.setMaximumPoolSize(@max_pool_size)
157
+ @pool.setConnectionTimeout(@connection_timeout)
158
+
159
+ # Test connection
160
+ test_connection = @pool.getConnection()
161
+ unless test_connection.isValid(10)
162
+ @logger.error("JDBC - Connection is not valid. Please check connection string or that your JDBC endpoint is available.")
163
+ end
164
+ test_connection.close()
165
+ end
166
+
147
167
  def load_jar_files!
148
168
  # Load jar from driver path
149
169
  unless @driver_jar_path.nil?
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-output-jdbc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2.rc1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - the_angry_angel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-23 00:00:00.000000000 Z
11
+ date: 2015-12-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: logstash-core
@@ -107,9 +107,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
107
107
  version: '0'
108
108
  required_rubygems_version: !ruby/object:Gem::Requirement
109
109
  requirements:
110
- - - '>'
110
+ - - '>='
111
111
  - !ruby/object:Gem::Version
112
- version: 1.3.1
112
+ version: '0'
113
113
  requirements: []
114
114
  rubyforge_project:
115
115
  rubygems_version: 2.0.14