logstash-core 6.0.0.rc1-java → 6.0.0.rc2-java
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/gemspec_jars.rb +5 -5
- data/lib/logstash-core/logstash-core.jar +0 -0
- data/lib/logstash-core/version.rb +8 -4
- data/lib/logstash-core_jars.rb +10 -10
- data/lib/logstash/config/config_ast.rb +3 -2
- data/lib/logstash/config/modules_common.rb +1 -0
- data/lib/logstash/instrument/periodic_poller/dlq.rb +8 -3
- data/lib/logstash/instrument/periodic_poller/pq.rb +7 -3
- data/lib/logstash/modules/kibana_client.rb +35 -8
- data/lib/logstash/modules/settings_merger.rb +8 -2
- data/lib/logstash/pipeline.rb +4 -8
- data/lib/logstash/util/cloud_setting_id.rb +46 -12
- data/lib/logstash/util/wrapped_acked_queue.rb +6 -0
- data/lib/logstash/util/wrapped_synchronous_queue.rb +6 -0
- data/lib/logstash/version.rb +8 -10
- data/logstash-core.gemspec +24 -2
- data/spec/logstash/modules/kibana_client_spec.rb +60 -0
- data/spec/logstash/modules/settings_merger_spec.rb +32 -2
- data/spec/logstash/pipeline_spec.rb +12 -4
- data/spec/logstash/settings/modules_spec.rb +1 -1
- data/spec/logstash/util/cloud_setting_id_spec.rb +93 -0
- data/versions-gem-copy.yml +23 -0
- metadata +14 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: be7703ae1e02681bf68ba3dfd591f85886b15f271b2bce6cc17e49dddcd88c4c
|
4
|
+
data.tar.gz: 7c49c07b0af3dd06f605acb08243911e65f1be78108ee6fdb1cc4723dca694a6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dc9b5bc1db75cfb1236aef3072ac38f2d943fb24aa752fd9a525bec60391e06f000f77d7fd8ac48d00744a0ff249c5edd6e7bec1c87ee7475d471999e4e4c032
|
7
|
+
data.tar.gz: e856579b5da5a494d8493e6863a96f6ced47e7442ce822bc94144a3dcf39ef0f5d3d5a5f9f99fafceb0ca1d070da0975ed6d33682b8191eb653c1dbc22227fed
|
data/gemspec_jars.rb
CHANGED
@@ -5,8 +5,8 @@
|
|
5
5
|
gem.requirements << "jar org.apache.logging.log4j:log4j-slf4j-impl, 2.6.2"
|
6
6
|
gem.requirements << "jar org.apache.logging.log4j:log4j-api, 2.6.2"
|
7
7
|
gem.requirements << "jar org.apache.logging.log4j:log4j-core, 2.6.2"
|
8
|
-
gem.requirements << "jar com.fasterxml.jackson.core:jackson-core, 2.
|
9
|
-
gem.requirements << "jar com.fasterxml.jackson.core:jackson-databind, 2.
|
10
|
-
gem.requirements << "jar com.fasterxml.jackson.core:jackson-annotations, 2.
|
11
|
-
gem.requirements << "jar com.fasterxml.jackson.module:jackson-module-afterburner, 2.
|
12
|
-
gem.requirements << "jar com.fasterxml.jackson.dataformat:jackson-dataformat-cbor, 2.
|
8
|
+
gem.requirements << "jar com.fasterxml.jackson.core:jackson-core, 2.9.1"
|
9
|
+
gem.requirements << "jar com.fasterxml.jackson.core:jackson-databind, 2.9.1"
|
10
|
+
gem.requirements << "jar com.fasterxml.jackson.core:jackson-annotations, 2.9.1"
|
11
|
+
gem.requirements << "jar com.fasterxml.jackson.module:jackson-module-afterburner, 2.9.1"
|
12
|
+
gem.requirements << "jar com.fasterxml.jackson.dataformat:jackson-dataformat-cbor, 2.9.1"
|
Binary file
|
@@ -2,7 +2,11 @@
|
|
2
2
|
|
3
3
|
# The version of logstash core gem.
|
4
4
|
#
|
5
|
-
#
|
6
|
-
|
7
|
-
|
8
|
-
|
5
|
+
# sourced from a copy of the master versions.yml file, see logstash-core/logstash-core.gemspec
|
6
|
+
if !defined?(ALL_VERSIONS)
|
7
|
+
require 'yaml'
|
8
|
+
ALL_VERSIONS = YAML.load_file(File.expand_path("../../versions-gem-copy.yml", File.dirname(__FILE__)))
|
9
|
+
end
|
10
|
+
if !defined?(LOGSTASH_CORE_VERSION)
|
11
|
+
LOGSTASH_CORE_VERSION = ALL_VERSIONS.fetch("logstash-core")
|
12
|
+
end
|
data/lib/logstash-core_jars.rb
CHANGED
@@ -2,25 +2,25 @@
|
|
2
2
|
begin
|
3
3
|
require 'jar_dependencies'
|
4
4
|
rescue LoadError
|
5
|
-
require 'com/fasterxml/jackson/core/jackson-databind/2.7.3/jackson-databind-2.7.3.jar'
|
6
5
|
require 'org/apache/logging/log4j/log4j-core/2.6.2/log4j-core-2.6.2.jar'
|
6
|
+
require 'com/fasterxml/jackson/core/jackson-databind/2.9.1/jackson-databind-2.9.1.jar'
|
7
7
|
require 'org/apache/logging/log4j/log4j-api/2.6.2/log4j-api-2.6.2.jar'
|
8
8
|
require 'org/slf4j/slf4j-api/1.7.21/slf4j-api-1.7.21.jar'
|
9
|
-
require 'com/fasterxml/jackson/core/jackson-annotations/2.
|
9
|
+
require 'com/fasterxml/jackson/core/jackson-annotations/2.9.1/jackson-annotations-2.9.1.jar'
|
10
10
|
require 'org/apache/logging/log4j/log4j-slf4j-impl/2.6.2/log4j-slf4j-impl-2.6.2.jar'
|
11
|
-
require 'com/fasterxml/jackson/module/jackson-module-afterburner/2.
|
12
|
-
require 'com/fasterxml/jackson/dataformat/jackson-dataformat-cbor/2.
|
13
|
-
require 'com/fasterxml/jackson/core/jackson-core/2.
|
11
|
+
require 'com/fasterxml/jackson/module/jackson-module-afterburner/2.9.1/jackson-module-afterburner-2.9.1.jar'
|
12
|
+
require 'com/fasterxml/jackson/dataformat/jackson-dataformat-cbor/2.9.1/jackson-dataformat-cbor-2.9.1.jar'
|
13
|
+
require 'com/fasterxml/jackson/core/jackson-core/2.9.1/jackson-core-2.9.1.jar'
|
14
14
|
end
|
15
15
|
|
16
16
|
if defined? Jars
|
17
|
-
require_jar( 'com.fasterxml.jackson.core', 'jackson-databind', '2.7.3' )
|
18
17
|
require_jar( 'org.apache.logging.log4j', 'log4j-core', '2.6.2' )
|
18
|
+
require_jar( 'com.fasterxml.jackson.core', 'jackson-databind', '2.9.1' )
|
19
19
|
require_jar( 'org.apache.logging.log4j', 'log4j-api', '2.6.2' )
|
20
20
|
require_jar( 'org.slf4j', 'slf4j-api', '1.7.21' )
|
21
|
-
require_jar( 'com.fasterxml.jackson.core', 'jackson-annotations', '2.
|
21
|
+
require_jar( 'com.fasterxml.jackson.core', 'jackson-annotations', '2.9.1' )
|
22
22
|
require_jar( 'org.apache.logging.log4j', 'log4j-slf4j-impl', '2.6.2' )
|
23
|
-
require_jar( 'com.fasterxml.jackson.module', 'jackson-module-afterburner', '2.
|
24
|
-
require_jar( 'com.fasterxml.jackson.dataformat', 'jackson-dataformat-cbor', '2.
|
25
|
-
require_jar( 'com.fasterxml.jackson.core', 'jackson-core', '2.
|
23
|
+
require_jar( 'com.fasterxml.jackson.module', 'jackson-module-afterburner', '2.9.1' )
|
24
|
+
require_jar( 'com.fasterxml.jackson.dataformat', 'jackson-dataformat-cbor', '2.9.1' )
|
25
|
+
require_jar( 'com.fasterxml.jackson.core', 'jackson-core', '2.9.1' )
|
26
26
|
end
|
@@ -77,8 +77,9 @@ module LogStash; module Config; module AST
|
|
77
77
|
# of the output/filter function
|
78
78
|
definitions << "define_singleton_method :#{type}_func do |event|"
|
79
79
|
definitions << " targeted_outputs = []" if type == "output"
|
80
|
-
definitions << " events =
|
81
|
-
definitions << " @logger.debug? && @logger.debug(\"#{type} received\", \"event\" => event.to_hash)"
|
80
|
+
definitions << " events = event" if type == "filter"
|
81
|
+
definitions << " @logger.debug? && @logger.debug(\"#{type} received\", \"event\" => event.to_hash)" if type == "output"
|
82
|
+
definitions << " @logger.debug? && events.each { |e| @logger.debug(\"#{type} received\", \"event\" => e.to_hash)}" if type == "filter"
|
82
83
|
|
83
84
|
sections.select { |s| s.plugin_type.text_value == type }.each do |s|
|
84
85
|
definitions << s.compile.split("\n", -1).map { |e| " #{e}" }
|
@@ -65,6 +65,7 @@ module LogStash module Config
|
|
65
65
|
pipeline_id = alt_name
|
66
66
|
module_settings.set("pipeline.id", pipeline_id)
|
67
67
|
LogStash::Modules::SettingsMerger.merge_cloud_settings(module_hash, module_settings)
|
68
|
+
LogStash::Modules::SettingsMerger.merge_kibana_auth!(module_hash)
|
68
69
|
current_module.with_settings(module_hash)
|
69
70
|
config_test = settings.get("config.test_and_exit")
|
70
71
|
modul_setup = settings.get("modules_setup")
|
@@ -10,10 +10,15 @@ module LogStash module Instrument module PeriodicPoller
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def collect
|
13
|
-
|
14
|
-
unless
|
15
|
-
pipeline
|
13
|
+
pipelines = @agent.with_running_user_defined_pipelines {|pipelines| pipelines}
|
14
|
+
unless pipelines.nil?
|
15
|
+
pipelines.each {|_, pipeline|
|
16
|
+
unless pipeline.nil?
|
17
|
+
pipeline.collect_dlq_stats
|
18
|
+
end
|
19
|
+
}
|
16
20
|
end
|
17
21
|
end
|
18
22
|
end
|
19
23
|
end end end
|
24
|
+
|
@@ -11,9 +11,13 @@ module LogStash module Instrument module PeriodicPoller
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def collect
|
14
|
-
|
15
|
-
unless
|
16
|
-
pipeline
|
14
|
+
pipelines = @agent.with_running_user_defined_pipelines {|pipelines| pipelines}
|
15
|
+
unless pipelines.nil?
|
16
|
+
pipelines.each {|_, pipeline|
|
17
|
+
unless pipeline.nil?
|
18
|
+
pipeline.collect_stats
|
19
|
+
end
|
20
|
+
}
|
17
21
|
end
|
18
22
|
end
|
19
23
|
end
|
@@ -24,9 +24,11 @@ module LogStash module Modules class KibanaClient
|
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
|
-
|
27
|
+
SCHEME_REGEX = /^https?$/
|
28
28
|
|
29
|
-
|
29
|
+
attr_reader :version, :endpoint
|
30
|
+
|
31
|
+
def initialize(settings, client = nil) # allow for test mock injection
|
30
32
|
@settings = settings
|
31
33
|
|
32
34
|
client_options = {
|
@@ -38,8 +40,8 @@ module LogStash module Modules class KibanaClient
|
|
38
40
|
}
|
39
41
|
|
40
42
|
ssl_options = {}
|
41
|
-
|
42
|
-
if
|
43
|
+
ssl_enabled = @settings["var.kibana.ssl.enabled"] == "true"
|
44
|
+
if ssl_enabled
|
43
45
|
ssl_options[:verify] = @settings.fetch("var.kibana.ssl.verification_mode", "strict").to_sym
|
44
46
|
ssl_options[:ca_file] = @settings.fetch("var.kibana.ssl.certificate_authority", nil)
|
45
47
|
ssl_options[:client_cert] = @settings.fetch("var.kibana.ssl.certificate", nil)
|
@@ -48,9 +50,34 @@ module LogStash module Modules class KibanaClient
|
|
48
50
|
|
49
51
|
client_options[:ssl] = ssl_options
|
50
52
|
|
51
|
-
@client = Manticore::Client.new(client_options)
|
52
53
|
@host = @settings.fetch("var.kibana.host", "localhost:5601")
|
53
|
-
|
54
|
+
implicit_scheme, colon_slash_slash, host = @host.partition("://")
|
55
|
+
explicit_scheme = @settings["var.kibana.scheme"]
|
56
|
+
@scheme = "http"
|
57
|
+
if !colon_slash_slash.empty?
|
58
|
+
if !explicit_scheme.nil? && implicit_scheme != explicit_scheme
|
59
|
+
# both are set and not the same - error
|
60
|
+
msg = sprintf("Detected differing Kibana host schemes as sourced from var.kibana.host: '%s' and var.kibana.scheme: '%s'", implicit_scheme, explicit_scheme)
|
61
|
+
raise ArgumentError.new(msg)
|
62
|
+
end
|
63
|
+
@scheme = implicit_scheme
|
64
|
+
@host = host
|
65
|
+
elsif !explicit_scheme.nil?
|
66
|
+
@scheme = explicit_scheme
|
67
|
+
end
|
68
|
+
|
69
|
+
if SCHEME_REGEX.match(@scheme).nil?
|
70
|
+
msg = sprintf("Kibana host scheme given is invalid, given value: '%s' - acceptable values: 'http', 'https'", @scheme)
|
71
|
+
raise ArgumentError.new(msg)
|
72
|
+
end
|
73
|
+
|
74
|
+
if ssl_enabled && @scheme != "https"
|
75
|
+
@scheme = "https"
|
76
|
+
end
|
77
|
+
|
78
|
+
@endpoint = "#{@scheme}://#{@host}"
|
79
|
+
|
80
|
+
@client = client || Manticore::Client.new(client_options)
|
54
81
|
@http_options = {:headers => {'Content-Type' => 'application/json'}}
|
55
82
|
username = @settings["var.kibana.username"]
|
56
83
|
if username
|
@@ -77,7 +104,7 @@ module LogStash module Modules class KibanaClient
|
|
77
104
|
end
|
78
105
|
|
79
106
|
def version_parts
|
80
|
-
@version.split(
|
107
|
+
@version.split(/[.-]/)
|
81
108
|
end
|
82
109
|
|
83
110
|
def host_settings
|
@@ -119,6 +146,6 @@ module LogStash module Modules class KibanaClient
|
|
119
146
|
end
|
120
147
|
|
121
148
|
def full_url(relative)
|
122
|
-
"#{@
|
149
|
+
"#{@endpoint}/#{relative}"
|
123
150
|
end
|
124
151
|
end end end
|
@@ -40,9 +40,10 @@ module LogStash module Modules module SettingsMerger
|
|
40
40
|
settings_copy = LogStash::Util.deep_clone(module_settings)
|
41
41
|
end
|
42
42
|
|
43
|
-
module_settings["var.kibana.scheme"] =
|
43
|
+
module_settings["var.kibana.scheme"] = cloud_id.kibana_scheme
|
44
44
|
module_settings["var.kibana.host"] = cloud_id.kibana_host
|
45
|
-
|
45
|
+
# elasticsearch client does not use scheme, it URI parses the host setting
|
46
|
+
module_settings["var.elasticsearch.hosts"] = "#{cloud_id.elasticsearch_scheme}://#{cloud_id.elasticsearch_host}"
|
46
47
|
unless cloud_auth.nil?
|
47
48
|
module_settings["var.elasticsearch.username"] = cloud_auth.username
|
48
49
|
module_settings["var.elasticsearch.password"] = cloud_auth.password
|
@@ -54,6 +55,11 @@ module LogStash module Modules module SettingsMerger
|
|
54
55
|
end
|
55
56
|
end
|
56
57
|
|
58
|
+
def merge_kibana_auth!(module_settings)
|
59
|
+
module_settings["var.kibana.username"] = module_settings["var.elasticsearch.username"] if module_settings["var.kibana.username"].nil?
|
60
|
+
module_settings["var.kibana.password"] = module_settings["var.elasticsearch.password"] if module_settings["var.kibana.password"].nil?
|
61
|
+
end
|
62
|
+
|
57
63
|
def format_module_settings(settings_before, settings_after)
|
58
64
|
output = []
|
59
65
|
output << "-------- Module Settings ---------"
|
data/lib/logstash/pipeline.rb
CHANGED
@@ -498,13 +498,9 @@ module LogStash; class Pipeline < BasePipeline
|
|
498
498
|
end
|
499
499
|
|
500
500
|
def filter_batch(batch)
|
501
|
-
batch.each do |
|
502
|
-
|
503
|
-
|
504
|
-
filter_func(event).each do |e|
|
505
|
-
#these are both original and generated events
|
506
|
-
batch.merge(e) unless e.cancelled?
|
507
|
-
end
|
501
|
+
filter_func(batch.to_a).each do |e|
|
502
|
+
#these are both original and generated events
|
503
|
+
batch.merge(e) unless e.cancelled?
|
508
504
|
end
|
509
505
|
@filter_queue_client.add_filtered_metrics(batch)
|
510
506
|
@events_filtered.increment(batch.size)
|
@@ -662,7 +658,7 @@ module LogStash; class Pipeline < BasePipeline
|
|
662
658
|
def filter(event, &block)
|
663
659
|
maybe_setup_out_plugins
|
664
660
|
# filter_func returns all filtered events, including cancelled ones
|
665
|
-
filter_func(event).each {|e| block.call(e)}
|
661
|
+
filter_func([event]).each {|e| block.call(e)}
|
666
662
|
end
|
667
663
|
|
668
664
|
# perform filters flush and yield flushed event to the passed block
|
@@ -3,8 +3,26 @@ require "logstash/namespace"
|
|
3
3
|
require "base64"
|
4
4
|
|
5
5
|
module LogStash module Util class CloudSettingId
|
6
|
-
attr_reader :original, :decoded, :label, :elasticsearch_host, :kibana_host
|
7
6
|
|
7
|
+
def self.cloud_id_encode(*args)
|
8
|
+
Base64.urlsafe_encode64(args.join("$"))
|
9
|
+
end
|
10
|
+
DOT_SEPARATOR = "."
|
11
|
+
CLOUD_PORT = ":443"
|
12
|
+
|
13
|
+
attr_reader :original, :decoded, :label, :elasticsearch_host, :elasticsearch_scheme, :kibana_host, :kibana_scheme
|
14
|
+
|
15
|
+
# The constructor is expecting a 'cloud.id', a string in 2 variants.
|
16
|
+
# 1 part example: 'dXMtZWFzdC0xLmF3cy5mb3VuZC5pbyRub3RhcmVhbCRpZGVudGlmaWVy'
|
17
|
+
# 2 part example: 'foobar:dXMtZWFzdC0xLmF3cy5mb3VuZC5pbyRub3RhcmVhbCRpZGVudGlmaWVy'
|
18
|
+
# The two part variant has a 'label' prepended with a colon separator. The label is not encoded.
|
19
|
+
# The 1 part (or second section of the 2 part variant) is base64 encoded.
|
20
|
+
# The original string before encoding has three segments separated by a dollar sign.
|
21
|
+
# e.g. 'us-east-1.aws.found.io$notareal$identifier'
|
22
|
+
# The first segment is the cloud base url, e.g. 'us-east-1.aws.found.io'
|
23
|
+
# The second segment is the elasticsearch host identifier, e.g. 'notareal'
|
24
|
+
# The third segment is the kibana host identifier, e.g. 'identifier'
|
25
|
+
# The 'cloud.id' value decoded into the #attr_reader ivars.
|
8
26
|
def initialize(value)
|
9
27
|
return if value.nil?
|
10
28
|
|
@@ -12,27 +30,43 @@ module LogStash module Util class CloudSettingId
|
|
12
30
|
raise ArgumentError.new("Cloud Id must be String. Received: #{value.class}")
|
13
31
|
end
|
14
32
|
@original = value
|
15
|
-
@label,
|
16
|
-
if
|
33
|
+
@label, colon, encoded = @original.partition(":")
|
34
|
+
if encoded.empty?
|
17
35
|
@decoded = Base64.urlsafe_decode64(@label) rescue ""
|
18
36
|
@label = ""
|
19
37
|
else
|
20
|
-
@decoded = Base64.urlsafe_decode64(
|
38
|
+
@decoded = Base64.urlsafe_decode64(encoded) rescue ""
|
21
39
|
end
|
40
|
+
|
41
|
+
@decoded = @decoded.encode(Encoding::UTF_8, :invalid => :replace, :undef => :replace)
|
42
|
+
|
22
43
|
unless @decoded.count("$") == 2
|
23
|
-
raise ArgumentError.new("Cloud Id does not decode. Received: \"#{@
|
44
|
+
raise ArgumentError.new("Cloud Id does not decode. You may need to enable Kibana in the Cloud UI. Received: \"#{@decoded}\".")
|
24
45
|
end
|
25
|
-
|
26
|
-
|
27
|
-
|
46
|
+
|
47
|
+
segments = @decoded.split("$")
|
48
|
+
if segments.any?(&:empty?)
|
49
|
+
raise ArgumentError.new("Cloud Id, after decoding, is invalid. Format: '<segment1>$<segment2>$<segment3>'. Received: \"#{@decoded}\".")
|
50
|
+
end
|
51
|
+
cloud_base = segments.shift
|
52
|
+
cloud_host = "#{DOT_SEPARATOR}#{cloud_base}#{CLOUD_PORT}"
|
53
|
+
|
54
|
+
@elasticsearch_host, @kibana_host = segments
|
55
|
+
if @elasticsearch_host == "undefined"
|
56
|
+
raise ArgumentError.new("Cloud Id, after decoding, elasticsearch segment is 'undefined', literally.")
|
57
|
+
end
|
58
|
+
@elasticsearch_scheme = "https"
|
59
|
+
@elasticsearch_host.concat(cloud_host)
|
60
|
+
|
61
|
+
if @kibana_host == "undefined"
|
62
|
+
raise ArgumentError.new("Cloud Id, after decoding, the kibana segment is 'undefined', literally. You may need to enable Kibana in the Cloud UI.")
|
28
63
|
end
|
29
|
-
|
30
|
-
@
|
31
|
-
@kibana_host = sprintf("%s.%s:443", kb_server, cloud_host)
|
64
|
+
@kibana_scheme = "https"
|
65
|
+
@kibana_host.concat(cloud_host)
|
32
66
|
end
|
33
67
|
|
34
68
|
def to_s
|
35
|
-
@
|
69
|
+
@decoded.to_s
|
36
70
|
end
|
37
71
|
|
38
72
|
def inspect
|
@@ -287,6 +287,12 @@ module LogStash; module Util
|
|
287
287
|
# @cancelled[event] = true
|
288
288
|
end
|
289
289
|
|
290
|
+
def to_a
|
291
|
+
events = []
|
292
|
+
each {|e| events << e}
|
293
|
+
events
|
294
|
+
end
|
295
|
+
|
290
296
|
def each(&blk)
|
291
297
|
# take care not to cause @originals or @generated to change during iteration
|
292
298
|
|
@@ -218,6 +218,12 @@ module LogStash; module Util
|
|
218
218
|
# @cancelled[event] = true
|
219
219
|
end
|
220
220
|
|
221
|
+
def to_a
|
222
|
+
events = []
|
223
|
+
each {|e| events << e}
|
224
|
+
events
|
225
|
+
end
|
226
|
+
|
221
227
|
def each(&blk)
|
222
228
|
# take care not to cause @originals or @generated to change during iteration
|
223
229
|
@iterating = true
|
data/lib/logstash/version.rb
CHANGED
@@ -2,13 +2,11 @@
|
|
2
2
|
|
3
3
|
# The version of the logstash package (not the logstash-core gem version).
|
4
4
|
#
|
5
|
-
#
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
LOGSTASH_VERSION = "6.0.0-rc1"
|
5
|
+
# sourced from a copy of the master versions.yml file, see logstash-core/logstash-core.gemspec
|
6
|
+
if !defined?(ALL_VERSIONS)
|
7
|
+
require 'yaml'
|
8
|
+
ALL_VERSIONS = YAML.load_file(File.expand_path("../../versions-gem-copy.yml", File.dirname(__FILE__)))
|
9
|
+
end
|
10
|
+
if !defined?(LOGSTASH_VERSION)
|
11
|
+
LOGSTASH_VERSION = ALL_VERSIONS.fetch("logstash")
|
12
|
+
end
|
data/logstash-core.gemspec
CHANGED
@@ -1,6 +1,25 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
lib = File.expand_path('../lib', __FILE__)
|
3
3
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
|
5
|
+
project_versions_yaml_path = File.expand_path("../versions.yml", File.dirname(__FILE__))
|
6
|
+
if File.exist?(project_versions_yaml_path)
|
7
|
+
# we need to copy the project level versions.yml into the gem root
|
8
|
+
# to be able to package it into the gems file structure
|
9
|
+
# as the require 'logstash-core/version' loads the yaml file from within the gem root.
|
10
|
+
#
|
11
|
+
# we ignore the copy in git and we overwrite an existing file
|
12
|
+
# each time we build the logstash-core gem
|
13
|
+
original_lines = IO.readlines(project_versions_yaml_path)
|
14
|
+
original_lines << ""
|
15
|
+
original_lines << "# This is a copy the project level versions.yml into this gem's root and it is created when the gemspec is evaluated."
|
16
|
+
gem_versions_yaml_path = File.expand_path("./versions-gem-copy.yml", File.dirname(__FILE__))
|
17
|
+
File.open(gem_versions_yaml_path, 'w') do |new_file|
|
18
|
+
# create or overwrite
|
19
|
+
new_file.puts(original_lines)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
4
23
|
require 'logstash-core/version'
|
5
24
|
|
6
25
|
Gem::Specification.new do |gem|
|
@@ -11,7 +30,10 @@ Gem::Specification.new do |gem|
|
|
11
30
|
gem.homepage = "http://www.elastic.co/guide/en/logstash/current/index.html"
|
12
31
|
gem.license = "Apache License (2.0)"
|
13
32
|
|
14
|
-
gem.files = Dir.glob(
|
33
|
+
gem.files = Dir.glob(
|
34
|
+
%w(versions-gem-copy.yml logstash-core.gemspec gemspec_jars.rb lib/**/*.rb spec/**/*.rb locales/*
|
35
|
+
lib/logstash/api/init.ru lib/logstash-core/logstash-core.jar)
|
36
|
+
)
|
15
37
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
16
38
|
gem.name = "logstash-core"
|
17
39
|
gem.require_paths = ["lib"]
|
@@ -46,7 +68,7 @@ Gem::Specification.new do |gem|
|
|
46
68
|
gem.add_runtime_dependency "rubyzip", "~> 1.2.1"
|
47
69
|
gem.add_runtime_dependency "thread_safe", "~> 0.3.5" #(Apache 2.0 license)
|
48
70
|
|
49
|
-
gem.add_runtime_dependency "jrjackson", "~>
|
71
|
+
gem.add_runtime_dependency "jrjackson", "~> #{ALL_VERSIONS.fetch('jrjackson')}" #(Apache 2.0 license)
|
50
72
|
|
51
73
|
gem.add_runtime_dependency "jar-dependencies"
|
52
74
|
# as of Feb 3rd 2016, the ruby-maven gem is resolved to version 3.3.3 and that version
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require "spec_helper"
|
3
|
+
require "logstash/modules/kibana_client"
|
4
|
+
module LogStash module Modules
|
5
|
+
KibanaTestResponse = Struct.new(:code, :body, :headers)
|
6
|
+
class KibanaTestClient
|
7
|
+
def http(method, endpoint, options)
|
8
|
+
self
|
9
|
+
end
|
10
|
+
def call
|
11
|
+
KibanaTestResponse.new(200, '{"version":{"number":"1.2.3","build_snapshot":false}}', {})
|
12
|
+
end
|
13
|
+
end
|
14
|
+
describe KibanaClient do
|
15
|
+
let(:settings) { Hash.new }
|
16
|
+
let(:test_client) { KibanaTestClient.new }
|
17
|
+
let(:kibana_host) { "https://foo.bar:4321" }
|
18
|
+
subject(:kibana_client) { described_class.new(settings, test_client) }
|
19
|
+
|
20
|
+
context "when supplied with conflicting scheme data" do
|
21
|
+
let(:settings) { {"var.kibana.scheme" => "http", "var.kibana.host" => kibana_host} }
|
22
|
+
it "a new instance will throw an error" do
|
23
|
+
expect{described_class.new(settings, test_client)}.to raise_error(ArgumentError, /Detected differing Kibana host schemes as sourced from var\.kibana\.host: 'https' and var\.kibana\.scheme: 'http'/)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
context "when supplied with invalid schemes" do
|
28
|
+
["httpd", "ftp", "telnet"].each do |uri_scheme|
|
29
|
+
it "a new instance will throw an error" do
|
30
|
+
re = /Kibana host scheme given is invalid, given value: '#{uri_scheme}' - acceptable values: 'http', 'https'/
|
31
|
+
expect{described_class.new({"var.kibana.scheme" => uri_scheme}, test_client)}.to raise_error(ArgumentError, re)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
context "when supplied with the scheme in the host only" do
|
37
|
+
let(:settings) { {"var.kibana.host" => kibana_host} }
|
38
|
+
it "has a version and an endpoint" do
|
39
|
+
expect(kibana_client.version).to eq("1.2.3")
|
40
|
+
expect(kibana_client.endpoint).to eq("https://foo.bar:4321")
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
context "when supplied with the scheme in the scheme setting" do
|
45
|
+
let(:settings) { {"var.kibana.scheme" => "https", "var.kibana.host" => "foo.bar:4321"} }
|
46
|
+
it "has a version and an endpoint" do
|
47
|
+
expect(kibana_client.version).to eq("1.2.3")
|
48
|
+
expect(kibana_client.endpoint).to eq(kibana_host)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
context "when supplied with a no scheme host setting and ssl is enabled" do
|
53
|
+
let(:settings) { {"var.kibana.ssl.enabled" => "true", "var.kibana.host" => "foo.bar:4321"} }
|
54
|
+
it "has a version and an endpoint" do
|
55
|
+
expect(kibana_client.version).to eq("1.2.3")
|
56
|
+
expect(kibana_client.endpoint).to eq(kibana_host)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end end
|
@@ -28,6 +28,36 @@ describe LogStash::Modules::SettingsMerger do
|
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
|
+
describe "#merge_kibana_auth" do
|
32
|
+
|
33
|
+
before do
|
34
|
+
described_class.merge_kibana_auth!(mod_settings)
|
35
|
+
end
|
36
|
+
|
37
|
+
context 'only elasticsearch username and password is set' do
|
38
|
+
let(:mod_settings) { {"name"=>"mod1", "var.input.tcp.port"=>2222, "var.elasticsearch.username"=>"rupert", "var.elasticsearch.password"=>"fotherington" } }
|
39
|
+
it "sets kibana username and password" do
|
40
|
+
expect(mod_settings["var.elasticsearch.username"]).to eq("rupert")
|
41
|
+
expect(mod_settings["var.elasticsearch.password"]).to eq("fotherington")
|
42
|
+
expect(mod_settings["var.kibana.username"]).to eq("rupert")
|
43
|
+
expect(mod_settings["var.kibana.password"]).to eq("fotherington")
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
context 'elasticsearch and kibana usernames and passwords are set' do
|
48
|
+
let(:mod_settings) { {"name"=>"mod1", "var.input.tcp.port"=>2222, "var.elasticsearch.username"=>"rupert", "var.elasticsearch.password"=>"fotherington",
|
49
|
+
"var.kibana.username"=>"davey", "var.kibana.password"=>"stott"} }
|
50
|
+
|
51
|
+
it "keeps existing kibana username and password" do
|
52
|
+
expect(mod_settings["var.elasticsearch.username"]).to eq("rupert")
|
53
|
+
expect(mod_settings["var.elasticsearch.password"]).to eq("fotherington")
|
54
|
+
expect(mod_settings["var.kibana.username"]).to eq("davey")
|
55
|
+
expect(mod_settings["var.kibana.password"]).to eq("stott")
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
|
31
61
|
describe "#merge_cloud_settings" do
|
32
62
|
let(:cloud_id) { LogStash::Util::CloudSettingId.new("label:dXMtZWFzdC0xLmF3cy5mb3VuZC5pbyRub3RhcmVhbCRpZGVudGlmaWVy") }
|
33
63
|
let(:cloud_auth) { LogStash::Util::CloudSettingAuth.new("elastix:bigwhoppingfairytail") }
|
@@ -38,7 +68,7 @@ describe LogStash::Modules::SettingsMerger do
|
|
38
68
|
{
|
39
69
|
"var.kibana.scheme" => "https",
|
40
70
|
"var.kibana.host" => "identifier.us-east-1.aws.found.io:443",
|
41
|
-
"var.elasticsearch.hosts" => "notareal.us-east-1.aws.found.io:443",
|
71
|
+
"var.elasticsearch.hosts" => "https://notareal.us-east-1.aws.found.io:443",
|
42
72
|
"var.elasticsearch.username" => "elastix",
|
43
73
|
"var.kibana.username" => "elastix"
|
44
74
|
}
|
@@ -63,7 +93,7 @@ describe LogStash::Modules::SettingsMerger do
|
|
63
93
|
{
|
64
94
|
"var.kibana.scheme" => "https",
|
65
95
|
"var.kibana.host" => "identifier.us-east-1.aws.found.io:443",
|
66
|
-
"var.elasticsearch.hosts" => "notareal.us-east-1.aws.found.io:443",
|
96
|
+
"var.elasticsearch.hosts" => "https://notareal.us-east-1.aws.found.io:443",
|
67
97
|
}
|
68
98
|
end
|
69
99
|
let(:ls_settings) { SubstituteSettingsForRSpec.new({"cloud.id" => cloud_id}) }
|
@@ -254,6 +254,14 @@ describe LogStash::Pipeline do
|
|
254
254
|
pipeline = mock_pipeline_from_string(test_config_with_filters, pipeline_settings_obj)
|
255
255
|
pipeline.close
|
256
256
|
end
|
257
|
+
|
258
|
+
it "should log each filtered event if config.debug is set to true" do
|
259
|
+
pipeline_settings_obj.set("config.debug", true)
|
260
|
+
pipeline = mock_pipeline_from_string(test_config_with_filters, pipeline_settings_obj)
|
261
|
+
expect(logger).to receive(:debug).with(/filter received/, anything)
|
262
|
+
pipeline.filter_func([LogStash::Event.new])
|
263
|
+
pipeline.close
|
264
|
+
end
|
257
265
|
end
|
258
266
|
|
259
267
|
context "when there is no command line -w N set" do
|
@@ -618,9 +626,9 @@ describe LogStash::Pipeline do
|
|
618
626
|
|
619
627
|
it "should handle evaluating different config" do
|
620
628
|
expect(pipeline1.output_func(LogStash::Event.new)).not_to include(nil)
|
621
|
-
expect(pipeline1.filter_func(LogStash::Event.new)).not_to include(nil)
|
629
|
+
expect(pipeline1.filter_func([LogStash::Event.new])).not_to include(nil)
|
622
630
|
expect(pipeline2.output_func(LogStash::Event.new)).not_to include(nil)
|
623
|
-
expect(pipeline1.filter_func(LogStash::Event.new)).not_to include(nil)
|
631
|
+
expect(pipeline1.filter_func([LogStash::Event.new])).not_to include(nil)
|
624
632
|
end
|
625
633
|
end
|
626
634
|
|
@@ -700,9 +708,9 @@ describe LogStash::Pipeline do
|
|
700
708
|
# in the current instance and was returning an array containing nil values for
|
701
709
|
# the match.
|
702
710
|
expect(pipeline1.output_func(LogStash::Event.new)).not_to include(nil)
|
703
|
-
expect(pipeline1.filter_func(LogStash::Event.new)).not_to include(nil)
|
711
|
+
expect(pipeline1.filter_func([LogStash::Event.new])).not_to include(nil)
|
704
712
|
expect(pipeline2.output_func(LogStash::Event.new)).not_to include(nil)
|
705
|
-
expect(pipeline1.filter_func(LogStash::Event.new)).not_to include(nil)
|
713
|
+
expect(pipeline1.filter_func([LogStash::Event.new])).not_to include(nil)
|
706
714
|
end
|
707
715
|
end
|
708
716
|
|
@@ -53,7 +53,7 @@ describe LogStash::Setting::Modules do
|
|
53
53
|
context "when given a badly formatted encoded id" do
|
54
54
|
it "should not raise an error" do
|
55
55
|
encoded = Base64.urlsafe_encode64("foo$$bal")
|
56
|
-
expect { subject.set(encoded) }.to raise_error(ArgumentError,
|
56
|
+
expect { subject.set(encoded) }.to raise_error(ArgumentError, "Cloud Id, after decoding, is invalid. Format: '<segment1>$<segment2>$<segment3>'. Received: \"foo$$bal\".")
|
57
57
|
end
|
58
58
|
end
|
59
59
|
|
@@ -0,0 +1,93 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require "spec_helper"
|
3
|
+
require "logstash/util/cloud_setting_id"
|
4
|
+
|
5
|
+
describe LogStash::Util::CloudSettingId do
|
6
|
+
let(:input) { "foobar:dXMtZWFzdC0xLmF3cy5mb3VuZC5pbyRub3RhcmVhbCRpZGVudGlmaWVy" }
|
7
|
+
subject { described_class.new(input) }
|
8
|
+
|
9
|
+
describe "when given unacceptable input" do
|
10
|
+
it "a nil input does not raise an exception" do
|
11
|
+
expect{described_class.new(nil)}.not_to raise_exception
|
12
|
+
end
|
13
|
+
it "when given a nil input, the accessors are all nil" do
|
14
|
+
cloud_id = described_class.new(nil)
|
15
|
+
expect(cloud_id.original).to be_nil
|
16
|
+
expect(cloud_id.decoded).to be_nil
|
17
|
+
expect(cloud_id.label).to be_nil
|
18
|
+
expect(cloud_id.elasticsearch_host).to be_nil
|
19
|
+
expect(cloud_id.kibana_host).to be_nil
|
20
|
+
expect(cloud_id.elasticsearch_scheme).to be_nil
|
21
|
+
expect(cloud_id.kibana_scheme).to be_nil
|
22
|
+
end
|
23
|
+
|
24
|
+
context "when a malformed value is given" do
|
25
|
+
let(:raw) {%w(first second)}
|
26
|
+
let(:input) { described_class.cloud_id_encode(*raw) }
|
27
|
+
it "raises an error" do
|
28
|
+
expect{subject}.to raise_exception(ArgumentError, "Cloud Id does not decode. You may need to enable Kibana in the Cloud UI. Received: \"#{raw[0]}$#{raw[1]}\".")
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
context "when at least one segment is empty" do
|
33
|
+
let(:raw) {["first", "", "third"]}
|
34
|
+
let(:input) { described_class.cloud_id_encode(*raw) }
|
35
|
+
it "raises an error" do
|
36
|
+
expect{subject}.to raise_exception(ArgumentError, "Cloud Id, after decoding, is invalid. Format: '<segment1>$<segment2>$<segment3>'. Received: \"#{raw[0]}$#{raw[1]}$#{raw[2]}\".")
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
context "when elasticsearch segment is undefined" do
|
41
|
+
let(:raw) {%w(us-east-1.aws.found.io undefined my-kibana)}
|
42
|
+
let(:input) { described_class.cloud_id_encode(*raw) }
|
43
|
+
it "raises an error" do
|
44
|
+
expect{subject}.to raise_exception(ArgumentError, "Cloud Id, after decoding, elasticsearch segment is 'undefined', literally.")
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
context "when kibana segment is undefined" do
|
49
|
+
let(:raw) {%w(us-east-1.aws.found.io my-elastic-cluster undefined)}
|
50
|
+
let(:input) { described_class.cloud_id_encode(*raw) }
|
51
|
+
it "raises an error" do
|
52
|
+
expect{subject}.to raise_exception(ArgumentError, "Cloud Id, after decoding, the kibana segment is 'undefined', literally. You may need to enable Kibana in the Cloud UI.")
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
describe "without a label" do
|
58
|
+
let(:input) { "dXMtZWFzdC0xLmF3cy5mb3VuZC5pbyRub3RhcmVhbCRpZGVudGlmaWVy" }
|
59
|
+
it "#label is empty" do
|
60
|
+
expect(subject.label).to be_empty
|
61
|
+
end
|
62
|
+
it "#decode is set" do
|
63
|
+
expect(subject.decoded).to eq("us-east-1.aws.found.io$notareal$identifier")
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
describe "when given acceptable input, the accessors:" do
|
68
|
+
it '#original has a value' do
|
69
|
+
expect(subject.original).to eq(input)
|
70
|
+
end
|
71
|
+
it '#decoded has a value' do
|
72
|
+
expect(subject.decoded).to eq("us-east-1.aws.found.io$notareal$identifier")
|
73
|
+
end
|
74
|
+
it '#label has a value' do
|
75
|
+
expect(subject.label).to eq("foobar")
|
76
|
+
end
|
77
|
+
it '#elasticsearch_host has a value' do
|
78
|
+
expect(subject.elasticsearch_host).to eq("notareal.us-east-1.aws.found.io:443")
|
79
|
+
end
|
80
|
+
it '#elasticsearch_scheme has a value' do
|
81
|
+
expect(subject.elasticsearch_scheme).to eq("https")
|
82
|
+
end
|
83
|
+
it '#kibana_host has a value' do
|
84
|
+
expect(subject.kibana_host).to eq("identifier.us-east-1.aws.found.io:443")
|
85
|
+
end
|
86
|
+
it '#kibana_scheme has a value' do
|
87
|
+
expect(subject.kibana_scheme).to eq("https")
|
88
|
+
end
|
89
|
+
it '#to_s has a value of #decoded' do
|
90
|
+
expect(subject.to_s).to eq(subject.decoded)
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
---
|
2
|
+
logstash: 6.0.0-rc2
|
3
|
+
logstash-core: 6.0.0-rc2
|
4
|
+
logstash-core-plugin-api: 2.1.16
|
5
|
+
jruby:
|
6
|
+
version: 9.1.13.0
|
7
|
+
sha1: 815bac27d5daa1459a4477d6d80584f007ce6a68
|
8
|
+
|
9
|
+
# jruby-runtime-override, if specified, will override the jruby version installed in vendor/jruby for logstash runtime only,
|
10
|
+
# not for the compile-time jars
|
11
|
+
#
|
12
|
+
#jruby-runtime-override:
|
13
|
+
# url: http://ci.jruby.org/snapshots/previous/jruby-bin-9.1.13.0-SNAPSHOT.tar.gz
|
14
|
+
# version: 9.1.13.0-SNAPSHOT
|
15
|
+
# sha1: IGNORE
|
16
|
+
|
17
|
+
# Note: this file is copied to the root of logstash-core because its gemspec needs it when
|
18
|
+
# bundler evaluates the gemspec via bin/logstash
|
19
|
+
# Ensure Jackson version here is kept in sync with version used by jrjackson gem
|
20
|
+
jrjackson: 0.4.4
|
21
|
+
jackson: 2.9.1
|
22
|
+
|
23
|
+
# This is a copy the project level versions.yml into this gem's root and it is created when the gemspec is evaluated.
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstash-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.0.0.
|
4
|
+
version: 6.0.0.rc2
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Elastic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-10-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -251,7 +251,7 @@ dependencies:
|
|
251
251
|
requirements:
|
252
252
|
- - "~>"
|
253
253
|
- !ruby/object:Gem::Version
|
254
|
-
version: 0.4.
|
254
|
+
version: 0.4.4
|
255
255
|
name: jrjackson
|
256
256
|
prerelease: false
|
257
257
|
type: :runtime
|
@@ -259,7 +259,7 @@ dependencies:
|
|
259
259
|
requirements:
|
260
260
|
- - "~>"
|
261
261
|
- !ruby/object:Gem::Version
|
262
|
-
version: 0.4.
|
262
|
+
version: 0.4.4
|
263
263
|
- !ruby/object:Gem::Dependency
|
264
264
|
requirement: !ruby/object:Gem::Requirement
|
265
265
|
requirements:
|
@@ -556,6 +556,7 @@ files:
|
|
556
556
|
- spec/logstash/legacy_ruby_event_spec.rb
|
557
557
|
- spec/logstash/legacy_ruby_timestamp_spec.rb
|
558
558
|
- spec/logstash/modules/cli_parser_spec.rb
|
559
|
+
- spec/logstash/modules/kibana_client_spec.rb
|
559
560
|
- spec/logstash/modules/logstash_config_spec.rb
|
560
561
|
- spec/logstash/modules/scaffold_spec.rb
|
561
562
|
- spec/logstash/modules/settings_merger_spec.rb
|
@@ -593,6 +594,7 @@ files:
|
|
593
594
|
- spec/logstash/util/buftok_spec.rb
|
594
595
|
- spec/logstash/util/byte_value_spec.rb
|
595
596
|
- spec/logstash/util/charset_spec.rb
|
597
|
+
- spec/logstash/util/cloud_setting_id_spec.rb
|
596
598
|
- spec/logstash/util/duration_formatter_spec.rb
|
597
599
|
- spec/logstash/util/java_version_spec.rb
|
598
600
|
- spec/logstash/util/plugin_version_spec.rb
|
@@ -609,6 +611,7 @@ files:
|
|
609
611
|
- spec/support/mocks_classes.rb
|
610
612
|
- spec/support/shared_contexts.rb
|
611
613
|
- spec/support/shared_examples.rb
|
614
|
+
- versions-gem-copy.yml
|
612
615
|
homepage: http://www.elastic.co/guide/en/logstash/current/index.html
|
613
616
|
licenses:
|
614
617
|
- Apache License (2.0)
|
@@ -631,11 +634,11 @@ requirements:
|
|
631
634
|
- jar org.apache.logging.log4j:log4j-slf4j-impl, 2.6.2
|
632
635
|
- jar org.apache.logging.log4j:log4j-api, 2.6.2
|
633
636
|
- jar org.apache.logging.log4j:log4j-core, 2.6.2
|
634
|
-
- jar com.fasterxml.jackson.core:jackson-core, 2.
|
635
|
-
- jar com.fasterxml.jackson.core:jackson-databind, 2.
|
636
|
-
- jar com.fasterxml.jackson.core:jackson-annotations, 2.
|
637
|
-
- jar com.fasterxml.jackson.module:jackson-module-afterburner, 2.
|
638
|
-
- jar com.fasterxml.jackson.dataformat:jackson-dataformat-cbor, 2.
|
637
|
+
- jar com.fasterxml.jackson.core:jackson-core, 2.9.1
|
638
|
+
- jar com.fasterxml.jackson.core:jackson-databind, 2.9.1
|
639
|
+
- jar com.fasterxml.jackson.core:jackson-annotations, 2.9.1
|
640
|
+
- jar com.fasterxml.jackson.module:jackson-module-afterburner, 2.9.1
|
641
|
+
- jar com.fasterxml.jackson.dataformat:jackson-dataformat-cbor, 2.9.1
|
639
642
|
rubyforge_project:
|
640
643
|
rubygems_version: 2.6.13
|
641
644
|
signing_key:
|
@@ -695,6 +698,7 @@ test_files:
|
|
695
698
|
- spec/logstash/legacy_ruby_event_spec.rb
|
696
699
|
- spec/logstash/legacy_ruby_timestamp_spec.rb
|
697
700
|
- spec/logstash/modules/cli_parser_spec.rb
|
701
|
+
- spec/logstash/modules/kibana_client_spec.rb
|
698
702
|
- spec/logstash/modules/logstash_config_spec.rb
|
699
703
|
- spec/logstash/modules/scaffold_spec.rb
|
700
704
|
- spec/logstash/modules/settings_merger_spec.rb
|
@@ -732,6 +736,7 @@ test_files:
|
|
732
736
|
- spec/logstash/util/buftok_spec.rb
|
733
737
|
- spec/logstash/util/byte_value_spec.rb
|
734
738
|
- spec/logstash/util/charset_spec.rb
|
739
|
+
- spec/logstash/util/cloud_setting_id_spec.rb
|
735
740
|
- spec/logstash/util/duration_formatter_spec.rb
|
736
741
|
- spec/logstash/util/java_version_spec.rb
|
737
742
|
- spec/logstash/util/plugin_version_spec.rb
|