logstash-input-beats 2.2.7 → 2.2.8
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 -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
|
-
[![Build
|
4
|
-
Status](http://build-eu-00.elastic.co/view/LS%20Plugins/view/LS%20Inputs/job/logstash-plugin-input-beats-unit/badge/icon)](http://build-eu-00.elastic.co/view/LS%20Plugins/view/LS%20Inputs/job/logstash-plugin-input-beats-unit/)
|
3
|
+
[![Travis Build Status](https://travis-ci.org/logstash-plugins/logstash-input-beats.svg)](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: []
|