logstash-input-jdbc 2.0.5 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -1
- data/lib/logstash/plugin_mixins/jdbc.rb +49 -11
- data/logstash-input-jdbc.gemspec +3 -1
- data/spec/inputs/jdbc_spec.rb +128 -1
- metadata +72 -44
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f9bab690eb90f270679aa61551938fa2bf7ee6de
|
4
|
+
data.tar.gz: ef01a9593412b885252102358fde81cb50a268e2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bfb164e27f19f96e41026ceaca231a62855aef0e1d9c4e38ab39f923d9d0059bb39361576a442c78fa6b9f618acb6df33dd196b581337b53fc3f26ac6b4f2d64
|
7
|
+
data.tar.gz: 854657f5cecda124c91baf0342921b7cbca9e451957a33587cb670f189cb7dbf93312d3cfdd28634509d3a1858baeedc6f9a4c6a9827cb9fbc8a9f8ba3b08eb6
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
## 2.1.0
|
2
|
+
- [#85](https://github.com/logstash-plugins/logstash-input-jdbc/issues/85) make the jdbc_driver_library accept a list of elements separated by commas as in some situations we might need to load more than one jar/lib.
|
3
|
+
- [#89](https://github.com/logstash-plugins/logstash-input-jdbc/issues/89) Set application timezone for cases where time fields in data have no timezone.
|
4
|
+
|
1
5
|
## 2.0.5
|
2
6
|
- [#77](https://github.com/logstash-plugins/logstash-input-jdbc/issues/77) Time represented as RubyTime and not as Logstash::Timestamp
|
3
7
|
|
@@ -10,7 +14,7 @@
|
|
10
14
|
- Added catch-all configuration option for any other options that Sequel lib supports
|
11
15
|
|
12
16
|
## 2.0.0
|
13
|
-
- Plugins were updated to follow the new shutdown semantic, this mainly allows Logstash to instruct input plugins to terminate gracefully,
|
17
|
+
- Plugins were updated to follow the new shutdown semantic, this mainly allows Logstash to instruct input plugins to terminate gracefully,
|
14
18
|
instead of using Thread.raise on the plugins' threads. Ref: https://github.com/elastic/logstash/pull/3895
|
15
19
|
- Dependency on logstash-core update to 2.0
|
16
20
|
|
@@ -1,8 +1,10 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
# TAKEN FROM WIIBAA
|
3
3
|
require "logstash/config/mixin"
|
4
|
+
require "time"
|
5
|
+
require "date"
|
4
6
|
|
5
|
-
# Tentative of abstracting JDBC logic to a mixin
|
7
|
+
# Tentative of abstracting JDBC logic to a mixin
|
6
8
|
# for potential reuse in other plugins (input/output)
|
7
9
|
module LogStash::PluginMixins::Jdbc
|
8
10
|
|
@@ -18,10 +20,11 @@ module LogStash::PluginMixins::Jdbc
|
|
18
20
|
|
19
21
|
public
|
20
22
|
def setup_jdbc_config
|
21
|
-
# JDBC driver library path to third party driver library.
|
23
|
+
# JDBC driver library path to third party driver library. In case of multiple libraries being
|
24
|
+
# required you can pass them separated by a comma.
|
22
25
|
#
|
23
26
|
# If not provided, Plugin will look for the driver class in the Logstash Java classpath.
|
24
|
-
config :jdbc_driver_library, :validate => :
|
27
|
+
config :jdbc_driver_library, :validate => :string
|
25
28
|
|
26
29
|
# JDBC driver class to load, for exmaple, "org.apache.derby.jdbc.ClientDriver"
|
27
30
|
# NB per https://github.com/logstash-plugins/logstash-input-jdbc/issues/43 if you are using
|
@@ -44,7 +47,7 @@ module LogStash::PluginMixins::Jdbc
|
|
44
47
|
# result-set. The limit size is set with `jdbc_page_size`.
|
45
48
|
#
|
46
49
|
# Be aware that ordering is not guaranteed between queries.
|
47
|
-
config :jdbc_paging_enabled, :validate => :boolean, :default => false
|
50
|
+
config :jdbc_paging_enabled, :validate => :boolean, :default => false
|
48
51
|
|
49
52
|
# JDBC page size
|
50
53
|
config :jdbc_page_size, :validate => :number, :default => 100000
|
@@ -64,6 +67,15 @@ module LogStash::PluginMixins::Jdbc
|
|
64
67
|
# The amount of seconds to wait to acquire a connection before raising a PoolTimeoutError (default 5)
|
65
68
|
config :jdbc_pool_timeout, :validate => :number, :default => 5
|
66
69
|
|
70
|
+
# Timezone conversion.
|
71
|
+
# SQL does not allow for timezone data in timestamp fields. This plugin will automatically
|
72
|
+
# convert your SQL timestamp fields to Logstash timestamps, in relative UTC time in ISO8601 format.
|
73
|
+
#
|
74
|
+
# Using this setting will manually assign a specified timezone offset, instead
|
75
|
+
# of using the timezone setting of the local machine. You must use a canonical
|
76
|
+
# timezone, *America/Denver*, for example.
|
77
|
+
config :jdbc_default_timezone, :validate => :string
|
78
|
+
|
67
79
|
# General/Vendor-specific Sequel configuration options.
|
68
80
|
#
|
69
81
|
# An example of an optional connection pool configuration
|
@@ -72,6 +84,10 @@ module LogStash::PluginMixins::Jdbc
|
|
72
84
|
# examples of vendor-specific options can be found in this
|
73
85
|
# documentation page: https://github.com/jeremyevans/sequel/blob/master/doc/opening_databases.rdoc
|
74
86
|
config :sequel_opts, :validate => :hash, :default => {}
|
87
|
+
|
88
|
+
# Log level at which to log SQL queries, the accepted values are the common ones fatal, error, warn,
|
89
|
+
# info and debug. The default value is info.
|
90
|
+
config :sql_log_level, :validate => [ "fatal", "error", "warn", "info", "debug" ], :default => "info"
|
75
91
|
end
|
76
92
|
|
77
93
|
private
|
@@ -92,17 +108,29 @@ module LogStash::PluginMixins::Jdbc
|
|
92
108
|
end
|
93
109
|
end
|
94
110
|
|
111
|
+
private
|
112
|
+
def load_drivers(drivers)
|
113
|
+
drivers.each do |driver|
|
114
|
+
begin
|
115
|
+
require driver
|
116
|
+
rescue => e
|
117
|
+
@logger.error("Failed to load #{driver}", :exception => e)
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
95
122
|
public
|
96
123
|
def prepare_jdbc_connection
|
97
124
|
require "java"
|
98
125
|
require "sequel"
|
99
126
|
require "sequel/adapters/jdbc"
|
100
|
-
|
127
|
+
load_drivers(@jdbc_driver_library.split(",")) if @jdbc_driver_library
|
128
|
+
|
101
129
|
begin
|
102
130
|
Sequel::JDBC.load_driver(@jdbc_driver_class)
|
103
131
|
rescue Sequel::AdapterNotFound => e
|
104
132
|
message = if @jdbc_driver_library.nil?
|
105
|
-
":jdbc_driver_library is not set, are you sure you included
|
133
|
+
":jdbc_driver_library is not set, are you sure you included
|
106
134
|
the proper driver client libraries in your classpath?"
|
107
135
|
else
|
108
136
|
"Are you sure you've included the correct jdbc driver in :jdbc_driver_library?"
|
@@ -111,6 +139,10 @@ module LogStash::PluginMixins::Jdbc
|
|
111
139
|
end
|
112
140
|
@database = jdbc_connect()
|
113
141
|
@database.extension(:pagination)
|
142
|
+
if @jdbc_default_timezone
|
143
|
+
@database.extension(:named_timezones)
|
144
|
+
@database.timezone = @jdbc_default_timezone
|
145
|
+
end
|
114
146
|
if @jdbc_validate_connection
|
115
147
|
@database.extension(:connection_validator)
|
116
148
|
@database.pool.connection_validation_timeout = @jdbc_validation_timeout
|
@@ -122,7 +154,8 @@ module LogStash::PluginMixins::Jdbc
|
|
122
154
|
#TODO return false and let the plugin raise a LogStash::ConfigurationError
|
123
155
|
raise e
|
124
156
|
end
|
125
|
-
|
157
|
+
@database.sql_log_level = @sql_log_level.to_sym
|
158
|
+
@database.logger = @logger
|
126
159
|
@sql_last_start = Time.at(0).utc
|
127
160
|
end # def prepare_jdbc_connection
|
128
161
|
|
@@ -134,10 +167,10 @@ module LogStash::PluginMixins::Jdbc
|
|
134
167
|
public
|
135
168
|
def execute_statement(statement, parameters)
|
136
169
|
success = false
|
137
|
-
begin
|
170
|
+
begin
|
138
171
|
parameters = symbolized_params(parameters)
|
139
172
|
query = @database[statement, parameters]
|
140
|
-
@logger.debug? and @logger.debug("Executing JDBC query", :statement => statement, :parameters => parameters)
|
173
|
+
@logger.debug? and @logger.debug("Executing JDBC query", :statement => statement, :parameters => parameters, :count => query.count)
|
141
174
|
@sql_last_start = Time.now.utc
|
142
175
|
|
143
176
|
if @jdbc_paging_enabled
|
@@ -159,9 +192,9 @@ module LogStash::PluginMixins::Jdbc
|
|
159
192
|
end
|
160
193
|
|
161
194
|
# Symbolize parameters keys to use with Sequel
|
162
|
-
private
|
195
|
+
private
|
163
196
|
def symbolized_params(parameters)
|
164
|
-
parameters.inject({}) do |hash,(k,v)|
|
197
|
+
parameters.inject({}) do |hash,(k,v)|
|
165
198
|
case v
|
166
199
|
when LogStash::Timestamp
|
167
200
|
hash[k.to_sym] = v.time
|
@@ -180,9 +213,14 @@ module LogStash::PluginMixins::Jdbc
|
|
180
213
|
|
181
214
|
private
|
182
215
|
def decorate_value(value)
|
216
|
+
|
183
217
|
if value.is_a?(Time)
|
184
218
|
# transform it to LogStash::Timestamp as required by LS
|
185
219
|
LogStash::Timestamp.new(value)
|
220
|
+
elsif value.is_a?(DateTime)
|
221
|
+
# Manual timezone conversion detected.
|
222
|
+
# This is slower, so we put it in as a conditional case.
|
223
|
+
LogStash::Timestamp.new(Time.parse(value.to_s))
|
186
224
|
else
|
187
225
|
value # no-op
|
188
226
|
end
|
data/logstash-input-jdbc.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'logstash-input-jdbc'
|
3
|
-
s.version = '2.0
|
3
|
+
s.version = '2.1.0'
|
4
4
|
s.licenses = ['Apache License (2.0)']
|
5
5
|
s.summary = "This example input streams a string at a definable interval."
|
6
6
|
s.description = "This gem is a logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/plugin install gemname. This gem is not a stand-alone program"
|
@@ -21,6 +21,8 @@ Gem::Specification.new do |s|
|
|
21
21
|
s.add_runtime_dependency "logstash-core", ">= 2.0.0.beta2", "< 3.0.0"
|
22
22
|
s.add_runtime_dependency 'logstash-codec-plain'
|
23
23
|
s.add_runtime_dependency 'sequel'
|
24
|
+
s.add_runtime_dependency 'tzinfo'
|
25
|
+
s.add_runtime_dependency 'tzinfo-data'
|
24
26
|
s.add_runtime_dependency 'rufus-scheduler'
|
25
27
|
|
26
28
|
s.add_development_dependency 'logstash-devutils'
|
data/spec/inputs/jdbc_spec.rb
CHANGED
@@ -5,9 +5,18 @@ require "sequel"
|
|
5
5
|
require "sequel/adapters/jdbc"
|
6
6
|
require "timecop"
|
7
7
|
require "stud/temporary"
|
8
|
+
require "time"
|
9
|
+
require "date"
|
8
10
|
|
9
11
|
describe LogStash::Inputs::Jdbc do
|
10
|
-
|
12
|
+
# This is a necessary change test-wide to guarantee that no local timezone
|
13
|
+
# is picked up. It could be arbitrarily set to any timezone, but then the test
|
14
|
+
# would have to compensate differently. That's why UTC is chosen.
|
15
|
+
ENV["TZ"] = "Etc/UTC"
|
16
|
+
let(:mixin_settings) do
|
17
|
+
{ "jdbc_user" => ENV['USER'], "jdbc_driver_class" => "org.apache.derby.jdbc.EmbeddedDriver",
|
18
|
+
"jdbc_connection_string" => "jdbc:derby:memory:testdb;create=true"}
|
19
|
+
end
|
11
20
|
let(:settings) { {} }
|
12
21
|
let(:plugin) { LogStash::Inputs::Jdbc.new(mixin_settings.merge(settings)) }
|
13
22
|
let(:queue) { Queue.new }
|
@@ -42,6 +51,20 @@ describe LogStash::Inputs::Jdbc do
|
|
42
51
|
plugin.stop
|
43
52
|
end
|
44
53
|
|
54
|
+
it "should load all drivers when passing an array" do
|
55
|
+
mixin_settings['jdbc_driver_library'] = '/foo/bar,/bar/foo'
|
56
|
+
expect(plugin).to receive(:load_drivers).with(['/foo/bar', '/bar/foo'])
|
57
|
+
plugin.register
|
58
|
+
plugin.stop
|
59
|
+
end
|
60
|
+
|
61
|
+
it "should load all drivers when using a single value" do
|
62
|
+
mixin_settings['jdbc_driver_library'] = '/foo/bar'
|
63
|
+
expect(plugin).to receive(:load_drivers).with(['/foo/bar'])
|
64
|
+
plugin.register
|
65
|
+
plugin.stop
|
66
|
+
end
|
67
|
+
|
45
68
|
it "should stop without raising exception" do
|
46
69
|
plugin.register
|
47
70
|
expect { plugin.stop }.to_not raise_error
|
@@ -199,6 +222,77 @@ describe LogStash::Inputs::Jdbc do
|
|
199
222
|
end
|
200
223
|
end
|
201
224
|
|
225
|
+
context "when fetching time data with jdbc_default_timezone set" do
|
226
|
+
let(:mixin_settings) do
|
227
|
+
{ "jdbc_user" => ENV['USER'], "jdbc_driver_class" => "org.apache.derby.jdbc.EmbeddedDriver",
|
228
|
+
"jdbc_connection_string" => "jdbc:derby:memory:testdb;create=true",
|
229
|
+
"jdbc_default_timezone" => "America/Chicago"
|
230
|
+
}
|
231
|
+
end
|
232
|
+
|
233
|
+
let(:settings) do
|
234
|
+
{
|
235
|
+
"statement" => "SELECT * from test_table",
|
236
|
+
}
|
237
|
+
end
|
238
|
+
|
239
|
+
let(:num_rows) { 10 }
|
240
|
+
|
241
|
+
before do
|
242
|
+
num_rows.times do
|
243
|
+
db[:test_table].insert(:num => 1, :custom_time => "2015-01-01 12:00:00", :created_at => Time.now.utc)
|
244
|
+
end
|
245
|
+
|
246
|
+
plugin.register
|
247
|
+
end
|
248
|
+
|
249
|
+
after do
|
250
|
+
plugin.stop
|
251
|
+
end
|
252
|
+
|
253
|
+
it "should convert the time to reflect the timezone " do
|
254
|
+
plugin.run(queue)
|
255
|
+
event = queue.pop
|
256
|
+
# This reflects a 6 hour time difference between UTC and America/Chicago
|
257
|
+
expect(event["custom_time"].time).to eq(Time.iso8601("2015-01-01T18:00:00Z"))
|
258
|
+
end
|
259
|
+
end
|
260
|
+
|
261
|
+
context "when fetching time data without jdbc_default_timezone set" do
|
262
|
+
let(:mixin_settings) do
|
263
|
+
{ "jdbc_user" => ENV['USER'], "jdbc_driver_class" => "org.apache.derby.jdbc.EmbeddedDriver",
|
264
|
+
"jdbc_connection_string" => "jdbc:derby:memory:testdb;create=true"
|
265
|
+
}
|
266
|
+
end
|
267
|
+
|
268
|
+
let(:settings) do
|
269
|
+
{
|
270
|
+
"statement" => "SELECT * from test_table",
|
271
|
+
}
|
272
|
+
end
|
273
|
+
|
274
|
+
let(:num_rows) { 1 }
|
275
|
+
|
276
|
+
before do
|
277
|
+
num_rows.times do
|
278
|
+
db.run "INSERT INTO test_table (created_at, num, custom_time) VALUES (TIMESTAMP('2015-01-01 12:00:00'), 1, TIMESTAMP('2015-01-01 12:00:00'))"
|
279
|
+
end
|
280
|
+
|
281
|
+
plugin.register
|
282
|
+
end
|
283
|
+
|
284
|
+
after do
|
285
|
+
plugin.stop
|
286
|
+
end
|
287
|
+
|
288
|
+
it "should not convert the time to reflect the timezone " do
|
289
|
+
plugin.run(queue)
|
290
|
+
event = queue.pop
|
291
|
+
# With no timezone set, no change should occur
|
292
|
+
expect(event["custom_time"].time).to eq(Time.iso8601("2015-01-01T12:00:00Z"))
|
293
|
+
end
|
294
|
+
end
|
295
|
+
|
202
296
|
context "when iteratively running plugin#run" do
|
203
297
|
let(:settings) do
|
204
298
|
{"statement" => "SELECT num, created_at FROM test_table WHERE created_at > :sql_last_start"}
|
@@ -379,4 +473,37 @@ describe LogStash::Inputs::Jdbc do
|
|
379
473
|
expect { plugin.register }.to raise_error(Sequel::PoolTimeout)
|
380
474
|
end
|
381
475
|
end
|
476
|
+
|
477
|
+
context "when using logging" do
|
478
|
+
|
479
|
+
let(:settings) do
|
480
|
+
{
|
481
|
+
"statement" => "SELECT * from test_table", "sql_log_level" => "debug"
|
482
|
+
}
|
483
|
+
end
|
484
|
+
|
485
|
+
let(:num_rows) { 5 }
|
486
|
+
|
487
|
+
before do
|
488
|
+
plugin.instance_variable_set("@logger", logger)
|
489
|
+
allow(logger).to receive(:debug?)
|
490
|
+
num_rows.times do
|
491
|
+
db[:test_table].insert(:num => 1)
|
492
|
+
end
|
493
|
+
|
494
|
+
plugin.register
|
495
|
+
end
|
496
|
+
|
497
|
+
after do
|
498
|
+
plugin.stop
|
499
|
+
end
|
500
|
+
|
501
|
+
let(:logger) { double("logger") }
|
502
|
+
|
503
|
+
it "should report the staments to logging" do
|
504
|
+
expect(logger).to receive(:debug).with(kind_of(String)).once
|
505
|
+
plugin.run(queue)
|
506
|
+
end
|
507
|
+
end
|
508
|
+
|
382
509
|
end
|
metadata
CHANGED
@@ -1,148 +1,176 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstash-input-jdbc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Elastic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-12-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
|
15
|
-
version_requirements: !ruby/object:Gem::Requirement
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
16
15
|
requirements:
|
17
|
-
- -
|
16
|
+
- - ">="
|
18
17
|
- !ruby/object:Gem::Version
|
19
18
|
version: 2.0.0.beta2
|
20
|
-
- - <
|
19
|
+
- - "<"
|
21
20
|
- !ruby/object:Gem::Version
|
22
21
|
version: 3.0.0
|
23
|
-
|
22
|
+
name: logstash-core
|
23
|
+
prerelease: false
|
24
|
+
type: :runtime
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
26
|
requirements:
|
25
|
-
- -
|
27
|
+
- - ">="
|
26
28
|
- !ruby/object:Gem::Version
|
27
29
|
version: 2.0.0.beta2
|
28
|
-
- - <
|
30
|
+
- - "<"
|
29
31
|
- !ruby/object:Gem::Version
|
30
32
|
version: 3.0.0
|
31
|
-
prerelease: false
|
32
|
-
type: :runtime
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
|
+
requirement: !ruby/object:Gem::Requirement
|
35
|
+
requirements:
|
36
|
+
- - ">="
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: '0'
|
34
39
|
name: logstash-codec-plain
|
40
|
+
prerelease: false
|
41
|
+
type: :runtime
|
35
42
|
version_requirements: !ruby/object:Gem::Requirement
|
36
43
|
requirements:
|
37
|
-
- -
|
44
|
+
- - ">="
|
38
45
|
- !ruby/object:Gem::Version
|
39
46
|
version: '0'
|
47
|
+
- !ruby/object:Gem::Dependency
|
40
48
|
requirement: !ruby/object:Gem::Requirement
|
41
49
|
requirements:
|
42
|
-
- -
|
50
|
+
- - ">="
|
43
51
|
- !ruby/object:Gem::Version
|
44
52
|
version: '0'
|
53
|
+
name: sequel
|
45
54
|
prerelease: false
|
46
55
|
type: :runtime
|
47
|
-
- !ruby/object:Gem::Dependency
|
48
|
-
name: sequel
|
49
56
|
version_requirements: !ruby/object:Gem::Requirement
|
50
57
|
requirements:
|
51
|
-
- -
|
58
|
+
- - ">="
|
52
59
|
- !ruby/object:Gem::Version
|
53
60
|
version: '0'
|
61
|
+
- !ruby/object:Gem::Dependency
|
54
62
|
requirement: !ruby/object:Gem::Requirement
|
55
63
|
requirements:
|
56
|
-
- -
|
64
|
+
- - ">="
|
57
65
|
- !ruby/object:Gem::Version
|
58
66
|
version: '0'
|
67
|
+
name: tzinfo
|
59
68
|
prerelease: false
|
60
69
|
type: :runtime
|
61
|
-
- !ruby/object:Gem::Dependency
|
62
|
-
name: rufus-scheduler
|
63
70
|
version_requirements: !ruby/object:Gem::Requirement
|
64
71
|
requirements:
|
65
|
-
- -
|
72
|
+
- - ">="
|
66
73
|
- !ruby/object:Gem::Version
|
67
74
|
version: '0'
|
75
|
+
- !ruby/object:Gem::Dependency
|
68
76
|
requirement: !ruby/object:Gem::Requirement
|
69
77
|
requirements:
|
70
|
-
- -
|
78
|
+
- - ">="
|
71
79
|
- !ruby/object:Gem::Version
|
72
80
|
version: '0'
|
81
|
+
name: tzinfo-data
|
73
82
|
prerelease: false
|
74
83
|
type: :runtime
|
84
|
+
version_requirements: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - ">="
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '0'
|
75
89
|
- !ruby/object:Gem::Dependency
|
76
|
-
|
90
|
+
requirement: !ruby/object:Gem::Requirement
|
91
|
+
requirements:
|
92
|
+
- - ">="
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
95
|
+
name: rufus-scheduler
|
96
|
+
prerelease: false
|
97
|
+
type: :runtime
|
77
98
|
version_requirements: !ruby/object:Gem::Requirement
|
78
99
|
requirements:
|
79
|
-
- -
|
100
|
+
- - ">="
|
80
101
|
- !ruby/object:Gem::Version
|
81
102
|
version: '0'
|
103
|
+
- !ruby/object:Gem::Dependency
|
82
104
|
requirement: !ruby/object:Gem::Requirement
|
83
105
|
requirements:
|
84
|
-
- -
|
106
|
+
- - ">="
|
85
107
|
- !ruby/object:Gem::Version
|
86
108
|
version: '0'
|
109
|
+
name: logstash-devutils
|
87
110
|
prerelease: false
|
88
111
|
type: :development
|
89
|
-
- !ruby/object:Gem::Dependency
|
90
|
-
name: timecop
|
91
112
|
version_requirements: !ruby/object:Gem::Requirement
|
92
113
|
requirements:
|
93
|
-
- -
|
114
|
+
- - ">="
|
94
115
|
- !ruby/object:Gem::Version
|
95
116
|
version: '0'
|
117
|
+
- !ruby/object:Gem::Dependency
|
96
118
|
requirement: !ruby/object:Gem::Requirement
|
97
119
|
requirements:
|
98
|
-
- -
|
120
|
+
- - ">="
|
99
121
|
- !ruby/object:Gem::Version
|
100
122
|
version: '0'
|
123
|
+
name: timecop
|
101
124
|
prerelease: false
|
102
125
|
type: :development
|
103
|
-
- !ruby/object:Gem::Dependency
|
104
|
-
name: jdbc-derby
|
105
126
|
version_requirements: !ruby/object:Gem::Requirement
|
106
127
|
requirements:
|
107
|
-
- -
|
128
|
+
- - ">="
|
108
129
|
- !ruby/object:Gem::Version
|
109
130
|
version: '0'
|
131
|
+
- !ruby/object:Gem::Dependency
|
110
132
|
requirement: !ruby/object:Gem::Requirement
|
111
133
|
requirements:
|
112
|
-
- -
|
134
|
+
- - ">="
|
113
135
|
- !ruby/object:Gem::Version
|
114
136
|
version: '0'
|
137
|
+
name: jdbc-derby
|
115
138
|
prerelease: false
|
116
139
|
type: :development
|
117
|
-
- !ruby/object:Gem::Dependency
|
118
|
-
name: docker-api
|
119
140
|
version_requirements: !ruby/object:Gem::Requirement
|
120
141
|
requirements:
|
121
|
-
- -
|
142
|
+
- - ">="
|
122
143
|
- !ruby/object:Gem::Version
|
123
144
|
version: '0'
|
145
|
+
- !ruby/object:Gem::Dependency
|
124
146
|
requirement: !ruby/object:Gem::Requirement
|
125
147
|
requirements:
|
126
|
-
- -
|
148
|
+
- - ">="
|
127
149
|
- !ruby/object:Gem::Version
|
128
150
|
version: '0'
|
151
|
+
name: docker-api
|
129
152
|
prerelease: false
|
130
153
|
type: :development
|
154
|
+
version_requirements: !ruby/object:Gem::Requirement
|
155
|
+
requirements:
|
156
|
+
- - ">="
|
157
|
+
- !ruby/object:Gem::Version
|
158
|
+
version: '0'
|
131
159
|
description: This gem is a logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/plugin install gemname. This gem is not a stand-alone program
|
132
160
|
email: info@elastic.co
|
133
161
|
executables: []
|
134
162
|
extensions: []
|
135
163
|
extra_rdoc_files: []
|
136
164
|
files:
|
137
|
-
- lib/logstash/inputs/jdbc.rb
|
138
|
-
- lib/logstash/plugin_mixins/jdbc.rb
|
139
|
-
- spec/inputs/jdbc_spec.rb
|
140
|
-
- logstash-input-jdbc.gemspec
|
141
|
-
- README.md
|
142
165
|
- CHANGELOG.md
|
143
166
|
- Gemfile
|
144
167
|
- LICENSE
|
145
168
|
- NOTICE.TXT
|
169
|
+
- README.md
|
170
|
+
- lib/logstash/inputs/jdbc.rb
|
171
|
+
- lib/logstash/plugin_mixins/jdbc.rb
|
172
|
+
- logstash-input-jdbc.gemspec
|
173
|
+
- spec/inputs/jdbc_spec.rb
|
146
174
|
homepage: http://www.elastic.co/guide/en/logstash/current/index.html
|
147
175
|
licenses:
|
148
176
|
- Apache License (2.0)
|
@@ -155,17 +183,17 @@ require_paths:
|
|
155
183
|
- lib
|
156
184
|
required_ruby_version: !ruby/object:Gem::Requirement
|
157
185
|
requirements:
|
158
|
-
- -
|
186
|
+
- - ">="
|
159
187
|
- !ruby/object:Gem::Version
|
160
188
|
version: '0'
|
161
189
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
162
190
|
requirements:
|
163
|
-
- -
|
191
|
+
- - ">="
|
164
192
|
- !ruby/object:Gem::Version
|
165
193
|
version: '0'
|
166
194
|
requirements: []
|
167
195
|
rubyforge_project:
|
168
|
-
rubygems_version: 2.
|
196
|
+
rubygems_version: 2.4.8
|
169
197
|
signing_key:
|
170
198
|
specification_version: 4
|
171
199
|
summary: This example input streams a string at a definable interval.
|