logstash-input-mongodb 0.3.2 → 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5239efc622206199789eedf0e1af75242fc6262d
4
- data.tar.gz: d254084e1e1b9791b02e4f3207260da0f11cf046
3
+ metadata.gz: 388af0f33d8e7e99f421dfb5f178b213b394fbb8
4
+ data.tar.gz: a5275546392e3c9c588f266e9d84f5c8124af36b
5
5
  SHA512:
6
- metadata.gz: d717f6a55dbe745b3e4c66bb43465559c7c409dc9d0191636ab49f23c3c054d6b55f2283ba45aa11a5ac245c6040925185cada2e5637606c903f84f29d32ec83
7
- data.tar.gz: 61562cf62e60a8f6055d4f31849dc06d5033bffdf01ed1858e71938d3d04d77a88a1278cd1f6efeebfc5b74e81c52ed0ed1619c85ffeac411cbf3536d1f2accc
6
+ metadata.gz: e61433c0e8d75fcb990c7353d5ba5edb3af08a5ae924696b40f8ad2b0e0e4a2edef4d71a204caf2b6d7dc439b85db24983edade05f1725c3fa713284974583d5
7
+ data.tar.gz: 45321ea60084617ea0e917632b072cd12eae3a6098de2712dc3a8eb4b15738cb164821e17daee8b92ec29c04c8f17c686767726338c6c131476055ca38245862
data/README.md CHANGED
@@ -69,3 +69,9 @@ output {
69
69
  }
70
70
  }
71
71
  ```
72
+
73
+ ### MongoDB URI
74
+
75
+ The URI parameter is where you would specify all of your mongodb options including things like auth and SSL. You should use a connection string (URI) compatible with the mongodb spec.
76
+
77
+ For more information on MongoDB URI's please see the MongoDB documentation: https://docs.mongodb.org/v3.0/reference/connection-string/
@@ -213,10 +213,11 @@ class LogStash::Inputs::MongoDB < LogStash::Inputs::Base
213
213
  sleep_max = 5
214
214
  sleeptime = sleep_min
215
215
 
216
- begin
217
- @logger.debug("Tailing MongoDB")
218
- @logger.debug("Collection data is: #{@collection_data}")
219
- loop do
216
+ @logger.debug("Tailing MongoDB")
217
+ @logger.debug("Collection data is: #{@collection_data}")
218
+
219
+ while true && !stop?
220
+ begin
220
221
  @collection_data.each do |index, collection|
221
222
  collection_name = collection[:name]
222
223
  @logger.debug("collection_data is: #{@collection_data}")
@@ -341,13 +342,15 @@ class LogStash::Inputs::MongoDB < LogStash::Inputs::Base
341
342
  @logger.debug("No new rows. Sleeping.", :time => sleeptime)
342
343
  sleeptime = [sleeptime * 2, sleep_max].min
343
344
  sleep(sleeptime)
344
- #sleeptime = sleep_min
345
- end
346
- rescue LogStash::ShutdownSignal
347
- if @interrupted
348
- @logger.debug("Mongo Input shutting down")
345
+ rescue => e
346
+ @logger.warn('MongoDB Input threw an exception, restarting', :exception => e)
349
347
  end
350
348
  end
351
349
  end # def run
352
350
 
351
+ def close
352
+ # If needed, use this to tidy up on shutdown
353
+ @logger.debug("Shutting down...")
354
+ end
355
+
353
356
  end # class LogStash::Inputs::Example
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'logstash-input-mongodb'
3
- s.version = '0.3.2'
3
+ s.version = '0.3.3'
4
4
  s.licenses = ['Apache License (2.0)']
5
5
  s.summary = "This takes entries from mongodb as an input to logstash."
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"
@@ -0,0 +1,81 @@
1
+ # encoding: utf-8
2
+
3
+ require "logstash/devutils/rspec/spec_helper"
4
+ require "tempfile"
5
+ require "stud/temporary"
6
+ require "logstash/inputs/mongodb"
7
+
8
+ FILE_DELIMITER = LogStash::Environment.windows? ? "\r\n" : "\n"
9
+
10
+ describe LogStash::Inputs::Mongodb do
11
+ before(:all) do
12
+ @abort_on_exception = Thread.abort_on_exception
13
+ Thread.abort_on_exception = true
14
+ end
15
+
16
+ after(:all) do
17
+ Thread.abort_on_exception = @abort_on_exception
18
+ end
19
+
20
+ it_behaves_like "an interruptible input plugin" do
21
+ let(:config) do
22
+ {
23
+ placeholder_db_dir => Stud::Temporary.pathname,
24
+ placeholder_db_bame => Stud::Temporary.file,
25
+ collection => 'logstash-input-mongodb_test'
26
+ }
27
+ end
28
+ end
29
+
30
+ it "should start at the beginning of a collection when no sincedb data exists" do
31
+ placeholder_db_dir = Stud::Temporary.pathname
32
+ placeholder_db_name = Stud::Temporary.pathname
33
+ collection = 'logstash-input-mongodb_test'
34
+
35
+ conf = <<-CONFIG
36
+ input {
37
+ mongodb {
38
+ uri => 'mongodb://localhost/logstash-input-mongodb_test',
39
+ placeholder_db_dir => "#{placeholder_db_dir}"
40
+ placeholder_db_name => "#{placeholder_db_name}"
41
+ collection => "#{collection}"
42
+ }
43
+ }
44
+ CONFIG
45
+
46
+ # Create the test DB and populate it with some data
47
+ # add "first message"
48
+ # add "second message"
49
+
50
+ events = input(conf) do |pipeline, queue|
51
+
52
+ events = []
53
+
54
+ retries = 0
55
+ while retries < 20
56
+ # Add some new entries to the database
57
+ # add "third message"
58
+ # add "fourth message"
59
+
60
+ if queue.size >= 4
61
+ events = 4.times.collect { queue.pop }
62
+ break
63
+ end
64
+
65
+ sleep(0.1)
66
+ retries += 1
67
+ end
68
+
69
+ events
70
+ end
71
+
72
+ insist { events[0]["message"] } == "first message"
73
+ insist { events[1]["message"] } == "second message"
74
+ insist { events[2]["message"] } == "third message"
75
+ insist { events[3]["message"] } == "fourth message"
76
+ end
77
+
78
+ it "should start where it left off in a collection when it has sincedb data" do
79
+
80
+ end
81
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-input-mongodb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Philip Hutchins
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-16 00:00:00.000000000 Z
11
+ date: 2015-12-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: logstash-core
@@ -128,7 +128,7 @@ files:
128
128
  - README.md
129
129
  - lib/logstash/inputs/mongodb.rb
130
130
  - logstash-input-mongodb.gemspec
131
- - spec/inputs/example_spec.rb
131
+ - spec/inputs/mongodb_spec.rb
132
132
  homepage: http://www.phutchins.com
133
133
  licenses:
134
134
  - Apache License (2.0)
@@ -156,4 +156,4 @@ signing_key:
156
156
  specification_version: 4
157
157
  summary: This takes entries from mongodb as an input to logstash.
158
158
  test_files:
159
- - spec/inputs/example_spec.rb
159
+ - spec/inputs/mongodb_spec.rb
@@ -1 +0,0 @@
1
- require "logstash/devutils/rspec/spec_helper"