logstash-input-beats 2.2.7 → 2.2.8
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/CONTRIBUTORS +1 -0
- data/README.md +1 -2
- data/lib/logstash/inputs/beats.rb +1 -1
- data/lib/logstash/inputs/beats_support/connection_handler.rb +15 -1
- data/lib/logstash/inputs/beats_support/event_transform_common.rb +1 -1
- data/lib/lumberjack/beats.rb +2 -0
- data/lib/lumberjack/beats/server.rb +10 -1
- data/logstash-input-beats.gemspec +1 -1
- data/spec/inputs/beats_spec.rb +4 -4
- data/spec/inputs/beats_support/connection_handler_spec.rb +5 -5
- data/spec/inputs/beats_support/decoded_event_transform_spec.rb +7 -0
- data/spec/integration/logstash_forwarder_spec.rb +3 -2
- data/spec/support/integration_shared_context.rb +17 -3
- data/spec/support/logstash_test.rb +34 -16
- metadata +71 -71
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c1727d19341688ab4551c91893080ea3c09fb0ae
|
4
|
+
data.tar.gz: 8065ae0fd7bbecb54a4fd07fc32dad7290cc314d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 010ce24ae384e93f786461e6cc0189b6fc34151fd07a8934763e121e341d5aff863d0feb719e1f855509560d070d9f3e24b9d267633cea2caa41fa29263ddaec
|
7
|
+
data.tar.gz: 8f29fe0aa689b94a6a4fb75e4622a38b031a6695443d1d0e647eef4d8fa2c845e3e3261b33f4eb7901bef88cba45c44665278e478f960b8007d8701ba21ceb58
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
# 2.2.8
|
2
|
+
- Fix #73 Bug in EventTransformCommon#codec_name, use config_name
|
3
|
+
- Add regression test for fix to #73
|
4
|
+
- Non deterministic error for the LSF integration test
|
5
|
+
- Make this plugin really a drop in replacement for the lumberjack input, so LSF can send their events to this plugin.
|
1
6
|
# 2.2.7
|
2
7
|
- More robust test when using a random port #60
|
3
8
|
- Fix LSF integration tests #52
|
data/CONTRIBUTORS
CHANGED
@@ -9,6 +9,7 @@ Contributors:
|
|
9
9
|
* Pier-Hugues Pellerin (ph)
|
10
10
|
* Richard Pijnenburg (electrical)
|
11
11
|
* Suyog Rao (suyograo)
|
12
|
+
* Guy Boertje (guyboertje)
|
12
13
|
|
13
14
|
Note: If you've sent us patches, bug reports, or otherwise contributed to
|
14
15
|
Logstash, and you aren't on the list above and want to be, please let us know
|
data/README.md
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
# Logstash Plugin
|
2
2
|
|
3
|
-
[](http://build-eu-00.elastic.co/view/LS%20Plugins/view/LS%20Inputs/job/logstash-plugin-input-beats-unit/)
|
3
|
+
[](https://travis-ci.org/logstash-plugins/logstash-input-beats)
|
5
4
|
|
6
5
|
This is a plugin for [Logstash](https://github.com/elastic/logstash).
|
7
6
|
|
@@ -95,7 +95,7 @@ class LogStash::Inputs::Beats < LogStash::Inputs::Base
|
|
95
95
|
config :congestion_threshold, :validate => :number, :default => 5
|
96
96
|
|
97
97
|
# This is the default field that the specified codec will be applied
|
98
|
-
config :target_field_for_codec, :validate => :string, :default => "message"
|
98
|
+
config :target_field_for_codec, :validate => :string, :default => "message", :deprecated => "This option is now deprecated, the plugin is now compatible with Filebeat and Logstash-Forwarder"
|
99
99
|
|
100
100
|
# TODO(sissel): Add CA to authenticate clients with.
|
101
101
|
RECONNECT_BACKOFF_SLEEP = 0.5
|
@@ -2,6 +2,7 @@
|
|
2
2
|
require "logstash/inputs/beats"
|
3
3
|
require "logstash/inputs/beats_support/decoded_event_transform"
|
4
4
|
require "logstash/inputs/beats_support/raw_event_transform"
|
5
|
+
require "lumberjack/beats"
|
5
6
|
|
6
7
|
module LogStash::Inputs::BeatsSupport
|
7
8
|
# Handle the data coming from a connection
|
@@ -40,7 +41,11 @@ module LogStash::Inputs::BeatsSupport
|
|
40
41
|
:peer => @connection.peer)
|
41
42
|
|
42
43
|
# Filebeats uses the `message` key and LSF `line`
|
43
|
-
target_field =
|
44
|
+
target_field = if from_filebeat?(hash)
|
45
|
+
hash.delete(Lumberjack::Beats::FILEBEAT_LOG_LINE_FIELD)
|
46
|
+
elsif from_logstash_forwarder?(hash)
|
47
|
+
hash.delete(Lumberjack::Beats::LSF_LOG_LINE_FIELD)
|
48
|
+
end
|
44
49
|
|
45
50
|
if target_field.nil?
|
46
51
|
@logger.debug? && @logger.debug("Beats input: not using the codec for this event, can't find the codec target field",
|
@@ -75,5 +80,14 @@ module LogStash::Inputs::BeatsSupport
|
|
75
80
|
|
76
81
|
@codec.flush(&block)
|
77
82
|
end
|
83
|
+
|
84
|
+
private
|
85
|
+
def from_filebeat?(hash)
|
86
|
+
!hash[Lumberjack::Beats::FILEBEAT_LOG_LINE_FIELD].nil?
|
87
|
+
end
|
88
|
+
|
89
|
+
def from_logstash_forwarder?(hash)
|
90
|
+
!hash[Lumberjack::Beats::LSF_LOG_LINE_FIELD].nil?
|
91
|
+
end
|
78
92
|
end
|
79
93
|
end
|
data/lib/lumberjack/beats.rb
CHANGED
@@ -467,7 +467,7 @@ module Lumberjack module Beats
|
|
467
467
|
reset_next_ack(*args)
|
468
468
|
when :data
|
469
469
|
sequence, map = args
|
470
|
-
ack_if_needed(sequence) { data(map, &block) }
|
470
|
+
ack_if_needed(sequence) { data(normalize_v1_metadata_encoding(map), &block) }
|
471
471
|
when :json
|
472
472
|
# If the payload is an array of items we will emit multiple events
|
473
473
|
# this behavior was moved from the plugin to the library.
|
@@ -485,6 +485,15 @@ module Lumberjack module Beats
|
|
485
485
|
end
|
486
486
|
end
|
487
487
|
|
488
|
+
def normalize_v1_metadata_encoding(map)
|
489
|
+
# lets normalize the metadata of the v1 frame to make
|
490
|
+
# sure everything is in utf-8 format, because LSF don't enforce the encoding when he send
|
491
|
+
# the data to the server. Path, offset can be in another encoding, when the data is assigned to the event.
|
492
|
+
# the event will validate it and crash when the encoding is in the wrong format.
|
493
|
+
map.each { |k, v| map[k].force_encoding(Encoding::UTF_8) unless k == Lumberjack::Beats::LSF_LOG_LINE_FIELD }
|
494
|
+
map
|
495
|
+
end
|
496
|
+
|
488
497
|
def version(version)
|
489
498
|
@version = version
|
490
499
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = "logstash-input-beats"
|
3
|
-
s.version = '2.2.
|
3
|
+
s.version = '2.2.8'
|
4
4
|
s.licenses = ["Apache License (2.0)"]
|
5
5
|
s.summary = "Receive events using the lumberjack protocol."
|
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"
|
data/spec/inputs/beats_spec.rb
CHANGED
@@ -10,8 +10,8 @@ require "lumberjack/beats/client"
|
|
10
10
|
|
11
11
|
describe LogStash::Inputs::Beats do
|
12
12
|
let(:connection) { double("connection") }
|
13
|
-
let(:certificate) {
|
14
|
-
let(:port) {
|
13
|
+
let(:certificate) { BeatsInputTest.certificate }
|
14
|
+
let(:port) { BeatsInputTest.random_port }
|
15
15
|
let(:queue) { Queue.new }
|
16
16
|
let(:config) { { "port" => 0, "ssl_certificate" => certificate.ssl_cert, "ssl_key" => certificate.ssl_key, "type" => "example", "tags" => "beats"} }
|
17
17
|
|
@@ -97,8 +97,8 @@ describe LogStash::Inputs::Beats do
|
|
97
97
|
context "#handle_new_connection" do
|
98
98
|
let(:config) {{ "ssl" => false, "port" => 0, "type" => "example", "tags" => "beats" }}
|
99
99
|
let(:plugin) { LogStash::Inputs::Beats.new(config) }
|
100
|
-
let(:connection) { DummyConnection.new(events) }
|
101
|
-
let(:buffer_queue) { DummyNeverBlockedQueue.new }
|
100
|
+
let(:connection) { BeatsInputTest::DummyConnection.new(events) }
|
101
|
+
let(:buffer_queue) { BeatsInputTest::DummyNeverBlockedQueue.new }
|
102
102
|
let(:pipeline_queue) { [] }
|
103
103
|
let(:events) {
|
104
104
|
[
|
@@ -11,7 +11,7 @@ describe LogStash::Inputs::BeatsSupport::ConnectionHandler do
|
|
11
11
|
"tags" => "beats"
|
12
12
|
}
|
13
13
|
end
|
14
|
-
|
14
|
+
# logger is not used and DummyLogger needs implementing
|
15
15
|
let(:logger) { DummyLogger.new }
|
16
16
|
let(:input) do
|
17
17
|
LogStash::Inputs::Beats.new(config).tap do |i|
|
@@ -19,12 +19,12 @@ describe LogStash::Inputs::BeatsSupport::ConnectionHandler do
|
|
19
19
|
end
|
20
20
|
end
|
21
21
|
let(:connection) { double("connection") }
|
22
|
-
let(:queue) { DummyNeverBlockedQueue.new }
|
22
|
+
let(:queue) { BeatsInputTest::DummyNeverBlockedQueue.new }
|
23
23
|
|
24
24
|
subject { described_class.new(connection, input, queue) }
|
25
|
-
|
25
|
+
|
26
26
|
context "#accept" do
|
27
|
-
let(:connection) { DummyConnection.new(events) }
|
27
|
+
let(:connection) { BeatsInputTest::DummyConnection.new(events) }
|
28
28
|
let(:events) {
|
29
29
|
[
|
30
30
|
{ :map => { "id" => 1 }, :identity_stream => "/var/log/message" },
|
@@ -59,7 +59,7 @@ describe LogStash::Inputs::BeatsSupport::ConnectionHandler do
|
|
59
59
|
context "queue is blocked" do
|
60
60
|
let(:queue_timeout) { 1 }
|
61
61
|
let(:queue) { LogStash::Inputs::BeatsSupport::SynchronousQueueWithOffer.new(queue_timeout) }
|
62
|
-
|
62
|
+
|
63
63
|
it "raise an exception" do
|
64
64
|
expect { subject.process(map, identity_stream) }.to raise_error(LogStash::Inputs::Beats::InsertingToQueueTakeTooLong)
|
65
65
|
end
|
@@ -64,4 +64,11 @@ describe LogStash::Inputs::BeatsSupport::DecodedEventTransform do
|
|
64
64
|
expect(subject["@timestamp"]).to be_kind_of(LogStash::Timestamp)
|
65
65
|
end
|
66
66
|
end
|
67
|
+
|
68
|
+
context "when the codec is a base_codec wrapper" do
|
69
|
+
before { config.update("codec" => BeatsInputTest::DummyCodec.new) }
|
70
|
+
it "gets the codec config name from the base codec" do
|
71
|
+
expect(subject["tags"]).to include("beats_input_codec_dummy_applied")
|
72
|
+
end
|
73
|
+
end
|
67
74
|
end
|
@@ -19,10 +19,11 @@ describe "Logstash-Forwarder", :integration => true do
|
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
|
-
let(:client_wait_time) { 5 }
|
23
22
|
include FileHelpers
|
24
23
|
include_context "beats configuration"
|
25
24
|
|
25
|
+
let(:client_wait_time) { 5 }
|
26
|
+
|
26
27
|
# Filebeat related variables
|
27
28
|
let(:cmd) { [lsf_exec, "-config", lsf_config_path] }
|
28
29
|
|
@@ -53,6 +54,7 @@ describe "Logstash-Forwarder", :integration => true do
|
|
53
54
|
File.open(log_file, "a") do |f|
|
54
55
|
f.write(events.join("\n") + "\n")
|
55
56
|
end
|
57
|
+
sleep(1) # give some time to the clients to pick up the changes
|
56
58
|
end
|
57
59
|
|
58
60
|
after :each do
|
@@ -76,7 +78,6 @@ describe "Logstash-Forwarder", :integration => true do
|
|
76
78
|
"ssl" => true,
|
77
79
|
"ssl_certificate" => certificate_file,
|
78
80
|
"ssl_key" => certificate_key_file,
|
79
|
-
"target_field_for_codec" => "line"
|
80
81
|
})
|
81
82
|
end
|
82
83
|
|
@@ -3,7 +3,7 @@ require "flores/random"
|
|
3
3
|
|
4
4
|
shared_examples "send events" do
|
5
5
|
it "successfully send the events" do
|
6
|
-
wait(
|
6
|
+
wait(20).for { queue.size }.to eq(number_of_events), "Expected: #{number_of_events} got: #{queue.size}, execution output:\n #{@execution_output}"
|
7
7
|
expect(queue.collect { |e| e["message"] }).to eq(events)
|
8
8
|
end
|
9
9
|
end
|
@@ -43,10 +43,21 @@ shared_context "beats configuration" do
|
|
43
43
|
before :each do
|
44
44
|
beats.register
|
45
45
|
|
46
|
+
@abort_on_exception = Thread.abort_on_exception
|
47
|
+
Thread.abort_on_exception = true
|
48
|
+
|
46
49
|
@server = Thread.new do
|
47
50
|
begin
|
51
|
+
# use to know what lumberjack is actually doing
|
52
|
+
if ENV["DEBUG"]
|
53
|
+
logger = Logger.new(STDOUT)
|
54
|
+
beats.logger = Cabin::Channel.new
|
55
|
+
beats.logger.subscribe(logger)
|
56
|
+
beats.logger.level = :debug
|
57
|
+
end
|
58
|
+
|
48
59
|
beats.run(queue)
|
49
|
-
rescue
|
60
|
+
rescue => e
|
50
61
|
retry unless beats.stop?
|
51
62
|
end
|
52
63
|
end
|
@@ -55,5 +66,8 @@ shared_context "beats configuration" do
|
|
55
66
|
sleep(1) while @server.status != "run"
|
56
67
|
end
|
57
68
|
|
58
|
-
after(:each)
|
69
|
+
after(:each) do
|
70
|
+
beats.stop
|
71
|
+
Thread.abort_on_exception = @abort_on_exception
|
72
|
+
end
|
59
73
|
end
|
@@ -1,5 +1,9 @@
|
|
1
1
|
require "stud/temporary"
|
2
|
-
|
2
|
+
|
3
|
+
|
4
|
+
# namespace the Dummy* classes, they are reused names
|
5
|
+
# use a more specific module name to prevent clashes
|
6
|
+
module BeatsInputTest
|
3
7
|
class Certicate
|
4
8
|
attr_reader :ssl_key, :ssl_cert
|
5
9
|
|
@@ -20,29 +24,43 @@ module LogStashTest
|
|
20
24
|
rand(2000..10000)
|
21
25
|
end
|
22
26
|
end
|
23
|
-
end
|
24
27
|
|
25
|
-
class DummyNeverBlockedQueue < Array
|
26
|
-
|
27
|
-
|
28
|
+
class DummyNeverBlockedQueue < Array
|
29
|
+
def offer(element, timeout = nil)
|
30
|
+
push(element)
|
31
|
+
end
|
32
|
+
|
33
|
+
alias_method :take, :shift
|
28
34
|
end
|
29
35
|
|
30
|
-
|
31
|
-
|
36
|
+
class DummyConnection
|
37
|
+
def initialize(events)
|
38
|
+
@events = events
|
39
|
+
end
|
32
40
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
41
|
+
def run
|
42
|
+
@events.each do |element|
|
43
|
+
yield element[:map], element[:identity_stream]
|
44
|
+
end
|
45
|
+
end
|
37
46
|
|
38
|
-
|
39
|
-
|
40
|
-
yield element[:map], element[:identity_stream]
|
47
|
+
def peer
|
48
|
+
"localhost:5555"
|
41
49
|
end
|
42
50
|
end
|
43
51
|
|
44
|
-
|
45
|
-
|
52
|
+
class DummyCodec
|
53
|
+
def register() end
|
54
|
+
def decode(*) end
|
55
|
+
def clone() self; end
|
56
|
+
def base_codec
|
57
|
+
self
|
58
|
+
end
|
59
|
+
def self.config_name
|
60
|
+
"dummy"
|
61
|
+
end
|
46
62
|
end
|
47
63
|
end
|
48
64
|
|
65
|
+
|
66
|
+
|
metadata
CHANGED
@@ -1,203 +1,203 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstash-input-beats
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.2.
|
4
|
+
version: 2.2.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Elastic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-04-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
+
name: logstash-core-plugin-api
|
15
|
+
version_requirements: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.0'
|
14
20
|
requirement: !ruby/object:Gem::Requirement
|
15
21
|
requirements:
|
16
|
-
- -
|
22
|
+
- - ~>
|
17
23
|
- !ruby/object:Gem::Version
|
18
24
|
version: '1.0'
|
19
|
-
name: logstash-core-plugin-api
|
20
25
|
prerelease: false
|
21
26
|
type: :runtime
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: logstash-codec-plain
|
22
29
|
version_requirements: !ruby/object:Gem::Requirement
|
23
30
|
requirements:
|
24
|
-
- -
|
31
|
+
- - '>='
|
25
32
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
27
|
-
- !ruby/object:Gem::Dependency
|
33
|
+
version: '0'
|
28
34
|
requirement: !ruby/object:Gem::Requirement
|
29
35
|
requirements:
|
30
|
-
- -
|
36
|
+
- - '>='
|
31
37
|
- !ruby/object:Gem::Version
|
32
38
|
version: '0'
|
33
|
-
name: logstash-codec-plain
|
34
39
|
prerelease: false
|
35
40
|
type: :runtime
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: concurrent-ruby
|
36
43
|
version_requirements: !ruby/object:Gem::Requirement
|
37
44
|
requirements:
|
38
|
-
- -
|
45
|
+
- - '>='
|
39
46
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
41
|
-
-
|
47
|
+
version: 0.9.2
|
48
|
+
- - <=
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: 1.0.0
|
42
51
|
requirement: !ruby/object:Gem::Requirement
|
43
52
|
requirements:
|
44
|
-
- -
|
53
|
+
- - '>='
|
45
54
|
- !ruby/object:Gem::Version
|
46
55
|
version: 0.9.2
|
47
|
-
- -
|
56
|
+
- - <=
|
48
57
|
- !ruby/object:Gem::Version
|
49
58
|
version: 1.0.0
|
50
|
-
name: concurrent-ruby
|
51
59
|
prerelease: false
|
52
60
|
type: :runtime
|
61
|
+
- !ruby/object:Gem::Dependency
|
62
|
+
name: thread_safe
|
53
63
|
version_requirements: !ruby/object:Gem::Requirement
|
54
64
|
requirements:
|
55
|
-
- -
|
65
|
+
- - ~>
|
56
66
|
- !ruby/object:Gem::Version
|
57
|
-
version: 0.
|
58
|
-
- - "<="
|
59
|
-
- !ruby/object:Gem::Version
|
60
|
-
version: 1.0.0
|
61
|
-
- !ruby/object:Gem::Dependency
|
67
|
+
version: 0.3.5
|
62
68
|
requirement: !ruby/object:Gem::Requirement
|
63
69
|
requirements:
|
64
|
-
- -
|
70
|
+
- - ~>
|
65
71
|
- !ruby/object:Gem::Version
|
66
72
|
version: 0.3.5
|
67
|
-
name: thread_safe
|
68
73
|
prerelease: false
|
69
74
|
type: :runtime
|
75
|
+
- !ruby/object:Gem::Dependency
|
76
|
+
name: logstash-codec-multiline
|
70
77
|
version_requirements: !ruby/object:Gem::Requirement
|
71
78
|
requirements:
|
72
|
-
- -
|
79
|
+
- - ~>
|
73
80
|
- !ruby/object:Gem::Version
|
74
|
-
version: 0.
|
75
|
-
- !ruby/object:Gem::Dependency
|
81
|
+
version: 2.0.5
|
76
82
|
requirement: !ruby/object:Gem::Requirement
|
77
83
|
requirements:
|
78
|
-
- -
|
84
|
+
- - ~>
|
79
85
|
- !ruby/object:Gem::Version
|
80
86
|
version: 2.0.5
|
81
|
-
name: logstash-codec-multiline
|
82
87
|
prerelease: false
|
83
88
|
type: :runtime
|
89
|
+
- !ruby/object:Gem::Dependency
|
90
|
+
name: flores
|
84
91
|
version_requirements: !ruby/object:Gem::Requirement
|
85
92
|
requirements:
|
86
|
-
- -
|
93
|
+
- - ~>
|
87
94
|
- !ruby/object:Gem::Version
|
88
|
-
version:
|
89
|
-
- !ruby/object:Gem::Dependency
|
95
|
+
version: 0.0.6
|
90
96
|
requirement: !ruby/object:Gem::Requirement
|
91
97
|
requirements:
|
92
|
-
- -
|
98
|
+
- - ~>
|
93
99
|
- !ruby/object:Gem::Version
|
94
100
|
version: 0.0.6
|
95
|
-
name: flores
|
96
101
|
prerelease: false
|
97
102
|
type: :development
|
103
|
+
- !ruby/object:Gem::Dependency
|
104
|
+
name: rspec
|
98
105
|
version_requirements: !ruby/object:Gem::Requirement
|
99
106
|
requirements:
|
100
|
-
- -
|
107
|
+
- - '>='
|
101
108
|
- !ruby/object:Gem::Version
|
102
|
-
version: 0
|
103
|
-
- !ruby/object:Gem::Dependency
|
109
|
+
version: '0'
|
104
110
|
requirement: !ruby/object:Gem::Requirement
|
105
111
|
requirements:
|
106
|
-
- -
|
112
|
+
- - '>='
|
107
113
|
- !ruby/object:Gem::Version
|
108
114
|
version: '0'
|
109
|
-
name: rspec
|
110
115
|
prerelease: false
|
111
116
|
type: :development
|
117
|
+
- !ruby/object:Gem::Dependency
|
118
|
+
name: stud
|
112
119
|
version_requirements: !ruby/object:Gem::Requirement
|
113
120
|
requirements:
|
114
|
-
- -
|
121
|
+
- - '>='
|
115
122
|
- !ruby/object:Gem::Version
|
116
123
|
version: '0'
|
117
|
-
- !ruby/object:Gem::Dependency
|
118
124
|
requirement: !ruby/object:Gem::Requirement
|
119
125
|
requirements:
|
120
|
-
- -
|
126
|
+
- - '>='
|
121
127
|
- !ruby/object:Gem::Version
|
122
128
|
version: '0'
|
123
|
-
name: stud
|
124
129
|
prerelease: false
|
125
130
|
type: :development
|
131
|
+
- !ruby/object:Gem::Dependency
|
132
|
+
name: pry
|
126
133
|
version_requirements: !ruby/object:Gem::Requirement
|
127
134
|
requirements:
|
128
|
-
- -
|
135
|
+
- - '>='
|
129
136
|
- !ruby/object:Gem::Version
|
130
137
|
version: '0'
|
131
|
-
- !ruby/object:Gem::Dependency
|
132
138
|
requirement: !ruby/object:Gem::Requirement
|
133
139
|
requirements:
|
134
|
-
- -
|
140
|
+
- - '>='
|
135
141
|
- !ruby/object:Gem::Version
|
136
142
|
version: '0'
|
137
|
-
name: pry
|
138
143
|
prerelease: false
|
139
144
|
type: :development
|
145
|
+
- !ruby/object:Gem::Dependency
|
146
|
+
name: rspec-wait
|
140
147
|
version_requirements: !ruby/object:Gem::Requirement
|
141
148
|
requirements:
|
142
|
-
- -
|
149
|
+
- - '>='
|
143
150
|
- !ruby/object:Gem::Version
|
144
151
|
version: '0'
|
145
|
-
- !ruby/object:Gem::Dependency
|
146
152
|
requirement: !ruby/object:Gem::Requirement
|
147
153
|
requirements:
|
148
|
-
- -
|
154
|
+
- - '>='
|
149
155
|
- !ruby/object:Gem::Version
|
150
156
|
version: '0'
|
151
|
-
name: rspec-wait
|
152
157
|
prerelease: false
|
153
158
|
type: :development
|
159
|
+
- !ruby/object:Gem::Dependency
|
160
|
+
name: logstash-devutils
|
154
161
|
version_requirements: !ruby/object:Gem::Requirement
|
155
162
|
requirements:
|
156
|
-
- -
|
163
|
+
- - ~>
|
157
164
|
- !ruby/object:Gem::Version
|
158
|
-
version:
|
159
|
-
- !ruby/object:Gem::Dependency
|
165
|
+
version: 0.0.18
|
160
166
|
requirement: !ruby/object:Gem::Requirement
|
161
167
|
requirements:
|
162
|
-
- -
|
168
|
+
- - ~>
|
163
169
|
- !ruby/object:Gem::Version
|
164
170
|
version: 0.0.18
|
165
|
-
name: logstash-devutils
|
166
171
|
prerelease: false
|
167
172
|
type: :development
|
173
|
+
- !ruby/object:Gem::Dependency
|
174
|
+
name: logstash-codec-json
|
168
175
|
version_requirements: !ruby/object:Gem::Requirement
|
169
176
|
requirements:
|
170
|
-
- -
|
177
|
+
- - '>='
|
171
178
|
- !ruby/object:Gem::Version
|
172
|
-
version: 0
|
173
|
-
- !ruby/object:Gem::Dependency
|
179
|
+
version: '0'
|
174
180
|
requirement: !ruby/object:Gem::Requirement
|
175
181
|
requirements:
|
176
|
-
- -
|
182
|
+
- - '>='
|
177
183
|
- !ruby/object:Gem::Version
|
178
184
|
version: '0'
|
179
|
-
name: logstash-codec-json
|
180
185
|
prerelease: false
|
181
186
|
type: :development
|
187
|
+
- !ruby/object:Gem::Dependency
|
188
|
+
name: childprocess
|
182
189
|
version_requirements: !ruby/object:Gem::Requirement
|
183
190
|
requirements:
|
184
|
-
- -
|
191
|
+
- - '>='
|
185
192
|
- !ruby/object:Gem::Version
|
186
193
|
version: '0'
|
187
|
-
- !ruby/object:Gem::Dependency
|
188
194
|
requirement: !ruby/object:Gem::Requirement
|
189
195
|
requirements:
|
190
|
-
- -
|
196
|
+
- - '>='
|
191
197
|
- !ruby/object:Gem::Version
|
192
198
|
version: '0'
|
193
|
-
name: childprocess
|
194
199
|
prerelease: false
|
195
200
|
type: :development
|
196
|
-
version_requirements: !ruby/object:Gem::Requirement
|
197
|
-
requirements:
|
198
|
-
- - ">="
|
199
|
-
- !ruby/object:Gem::Version
|
200
|
-
version: '0'
|
201
201
|
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
|
202
202
|
email: info@elastic.co
|
203
203
|
executables: []
|
@@ -257,12 +257,12 @@ require_paths:
|
|
257
257
|
- lib
|
258
258
|
required_ruby_version: !ruby/object:Gem::Requirement
|
259
259
|
requirements:
|
260
|
-
- -
|
260
|
+
- - '>='
|
261
261
|
- !ruby/object:Gem::Version
|
262
262
|
version: '0'
|
263
263
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
264
264
|
requirements:
|
265
|
-
- -
|
265
|
+
- - '>='
|
266
266
|
- !ruby/object:Gem::Version
|
267
267
|
version: '0'
|
268
268
|
requirements: []
|