logstash-output-elasticsearch 10.1.0-java → 10.2.0-java
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/docs/index.asciidoc +1 -1
- data/lib/logstash/outputs/elasticsearch.rb +4 -0
- data/lib/logstash/outputs/elasticsearch/elasticsearch-template-es8x.json +44 -0
- data/lib/logstash/outputs/elasticsearch/http_client/pool.rb +47 -6
- data/logstash-output-elasticsearch.gemspec +1 -1
- data/spec/es_spec_helper.rb +12 -4
- data/spec/fixtures/test_certs/ca/ca.crt +30 -20
- data/spec/fixtures/test_certs/ca/ca.key +49 -25
- data/spec/fixtures/test_certs/test.crt +34 -19
- data/spec/fixtures/test_certs/test.key +49 -25
- data/spec/integration/outputs/compressed_indexing_spec.rb +1 -5
- data/spec/integration/outputs/index_spec.rb +4 -11
- data/spec/integration/outputs/sniffer_spec.rb +5 -1
- data/spec/unit/outputs/elasticsearch/http_client/pool_spec.rb +36 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4aea0c5256b6eb8efe5917a3955f95598da3914c132a0337548842db070c1626
|
4
|
+
data.tar.gz: 06e5230273a4b72801071ff959f2ae8ca9c3e85b5b92a3a27b15a61cdf3b59c4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 287fb5f27a83288a49ab66680b419e64acd2ddf78d64f6cb0bbbf80ff8a616ac906eaaca28946445fe11736c99ce05c7197cdfe4dbe6624b791d04b6beeb12cb
|
7
|
+
data.tar.gz: 2e2c3814a30de542ae1ff56fdf40aa78720f8e0c4fd0d4af2d0fabdb7d807ae72edfbf7ffe30457ff1279fa5941e9e8280cbacc533d2928c0caa36010b57905e
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
## 10.2.0
|
2
|
+
- Deprecation: Added warning about connecting a default Distribution of Logstash with an OSS version of ES [#875](https://github.com/logstash-plugins/logstash-output-elasticsearch/pull/875)
|
3
|
+
- Added template for connecting to ES 8.x [#871](https://github.com/logstash-plugins/logstash-output-elasticsearch/pull/871)
|
4
|
+
- Added sniffing support for ES 8.x [#878](https://github.com/logstash-plugins/logstash-output-elasticsearch/pull/878)
|
5
|
+
|
1
6
|
## 10.1.0
|
2
7
|
- Added cluster id tracking through the plugin metadata registry [#857](https://github.com/logstash-plugins/logstash-output-elasticsearch/pull/857)
|
3
8
|
|
data/docs/index.asciidoc
CHANGED
@@ -248,7 +248,7 @@ The Elasticsearch action to perform. Valid actions are:
|
|
248
248
|
- delete: deletes a document by id (An id is required for this action)
|
249
249
|
- create: indexes a document, fails if a document by that id already exists in the index.
|
250
250
|
- update: updates a document by id. Update has a special case where you can upsert -- update a
|
251
|
-
document if not already present. See the `
|
251
|
+
document if not already present. See the `doc_as_upsert` option. NOTE: This does not work and is not supported
|
252
252
|
in Elasticsearch 1.x. Please upgrade to ES 2.x or greater to use this feature with Logstash!
|
253
253
|
- A sprintf style string to change the action based on the content of the event. The value `%{[foo]}`
|
254
254
|
would use the foo field for the action
|
@@ -244,6 +244,10 @@ class LogStash::Outputs::ElasticSearch < LogStash::Outputs::Base
|
|
244
244
|
@client.close if @client
|
245
245
|
end
|
246
246
|
|
247
|
+
def self.oss?
|
248
|
+
LogStash::OSS
|
249
|
+
end
|
250
|
+
|
247
251
|
@@plugins = Gem::Specification.find_all{|spec| spec.name =~ /logstash-output-elasticsearch-/ }
|
248
252
|
|
249
253
|
@@plugins.each do |plugin|
|
@@ -0,0 +1,44 @@
|
|
1
|
+
{
|
2
|
+
"index_patterns" : "logstash-*",
|
3
|
+
"version" : 80001,
|
4
|
+
"settings" : {
|
5
|
+
"index.refresh_interval" : "5s",
|
6
|
+
"number_of_shards": 1
|
7
|
+
},
|
8
|
+
"mappings" : {
|
9
|
+
"dynamic_templates" : [ {
|
10
|
+
"message_field" : {
|
11
|
+
"path_match" : "message",
|
12
|
+
"match_mapping_type" : "string",
|
13
|
+
"mapping" : {
|
14
|
+
"type" : "text",
|
15
|
+
"norms" : false
|
16
|
+
}
|
17
|
+
}
|
18
|
+
}, {
|
19
|
+
"string_fields" : {
|
20
|
+
"match" : "*",
|
21
|
+
"match_mapping_type" : "string",
|
22
|
+
"mapping" : {
|
23
|
+
"type" : "text", "norms" : false,
|
24
|
+
"fields" : {
|
25
|
+
"keyword" : { "type": "keyword", "ignore_above": 256 }
|
26
|
+
}
|
27
|
+
}
|
28
|
+
}
|
29
|
+
} ],
|
30
|
+
"properties" : {
|
31
|
+
"@timestamp": { "type": "date"},
|
32
|
+
"@version": { "type": "keyword"},
|
33
|
+
"geoip" : {
|
34
|
+
"dynamic": true,
|
35
|
+
"properties" : {
|
36
|
+
"ip": { "type": "ip" },
|
37
|
+
"location" : { "type" : "geo_point" },
|
38
|
+
"latitude" : { "type" : "half_float" },
|
39
|
+
"longitude" : { "type" : "half_float" }
|
40
|
+
}
|
41
|
+
}
|
42
|
+
}
|
43
|
+
}
|
44
|
+
}
|
@@ -31,6 +31,7 @@ module LogStash; module Outputs; class ElasticSearch; class HttpClient;
|
|
31
31
|
attr_reader :logger, :adapter, :sniffing, :sniffer_delay, :resurrect_delay, :healthcheck_path, :sniffing_path, :bulk_path
|
32
32
|
|
33
33
|
ROOT_URI_PATH = '/'.freeze
|
34
|
+
LICENSE_PATH = '/_license'.freeze
|
34
35
|
|
35
36
|
DEFAULT_OPTIONS = {
|
36
37
|
:healthcheck_path => ROOT_URI_PATH,
|
@@ -66,13 +67,21 @@ module LogStash; module Outputs; class ElasticSearch; class HttpClient;
|
|
66
67
|
@url_info = {}
|
67
68
|
@stopping = false
|
68
69
|
end
|
70
|
+
|
71
|
+
def oss?
|
72
|
+
LogStash::Outputs::ElasticSearch.oss?
|
73
|
+
end
|
69
74
|
|
70
75
|
def start
|
71
|
-
|
76
|
+
update_initial_urls
|
72
77
|
start_resurrectionist
|
73
78
|
start_sniffer if @sniffing
|
74
79
|
end
|
75
80
|
|
81
|
+
def update_initial_urls
|
82
|
+
update_urls(@initial_urls)
|
83
|
+
end
|
84
|
+
|
76
85
|
def close
|
77
86
|
@state_mutex.synchronize { @stopping = true }
|
78
87
|
|
@@ -101,7 +110,7 @@ module LogStash; module Outputs; class ElasticSearch; class HttpClient;
|
|
101
110
|
end
|
102
111
|
|
103
112
|
def alive_urls_count
|
104
|
-
@state_mutex.synchronize { @url_info.values.select {|v|
|
113
|
+
@state_mutex.synchronize { @url_info.values.select {|v| v[:state] == :alive }.count }
|
105
114
|
end
|
106
115
|
|
107
116
|
def url_info
|
@@ -170,7 +179,7 @@ module LogStash; module Outputs; class ElasticSearch; class HttpClient;
|
|
170
179
|
return nil
|
171
180
|
else
|
172
181
|
case major_version(url_meta[:version])
|
173
|
-
when 5, 6, 7
|
182
|
+
when 5, 6, 7, 8
|
174
183
|
sniff_5x_and_above(nodes)
|
175
184
|
when 2, 1
|
176
185
|
sniff_2x_1x(nodes)
|
@@ -236,13 +245,29 @@ module LogStash; module Outputs; class ElasticSearch; class HttpClient;
|
|
236
245
|
end
|
237
246
|
end
|
238
247
|
|
248
|
+
def get_license(url)
|
249
|
+
response = perform_request_to_url(url, :get, LICENSE_PATH)
|
250
|
+
LogStash::Json.load(response.body)
|
251
|
+
end
|
252
|
+
|
253
|
+
def valid_es_license?(url)
|
254
|
+
license = get_license(url)
|
255
|
+
license.fetch("license", {}).fetch("status", nil) == "active"
|
256
|
+
rescue => e
|
257
|
+
false
|
258
|
+
end
|
259
|
+
|
260
|
+
def health_check_request(url)
|
261
|
+
perform_request_to_url(url, :head, @healthcheck_path)
|
262
|
+
end
|
263
|
+
|
239
264
|
def healthcheck!
|
240
265
|
# Try to keep locking granularity low such that we don't affect IO...
|
241
266
|
@state_mutex.synchronize { @url_info.select {|url,meta| meta[:state] != :alive } }.each do |url,meta|
|
242
267
|
begin
|
243
268
|
logger.debug("Running health check to see if an Elasticsearch connection is working",
|
244
269
|
:healthcheck_url => url, :path => @healthcheck_path)
|
245
|
-
|
270
|
+
health_check_request(url)
|
246
271
|
# If no exception was raised it must have succeeded!
|
247
272
|
logger.warn("Restored connection to ES instance", :url => url.sanitized.to_s)
|
248
273
|
# We reconnected to this node, check its ES version
|
@@ -254,10 +279,22 @@ module LogStash; module Outputs; class ElasticSearch; class HttpClient;
|
|
254
279
|
@logger.info("ES Output version determined", :es_version => major)
|
255
280
|
set_new_major_version(major)
|
256
281
|
elsif major > @maximum_seen_major_version
|
257
|
-
@logger.warn("Detected a node with a higher major version than previously observed. This could be the result of an elasticsearch cluster upgrade.", :previous_major => @maximum_seen_major_version, :new_major => major, :node_url => url)
|
282
|
+
@logger.warn("Detected a node with a higher major version than previously observed. This could be the result of an elasticsearch cluster upgrade.", :previous_major => @maximum_seen_major_version, :new_major => major, :node_url => url.sanitized.to_s)
|
258
283
|
set_new_major_version(major)
|
259
284
|
end
|
260
|
-
|
285
|
+
if oss? || valid_es_license?(url)
|
286
|
+
meta[:state] = :alive
|
287
|
+
else
|
288
|
+
# As this version is to be shipped with Logstash 7.x we won't mark the connection as unlicensed
|
289
|
+
#
|
290
|
+
# logger.error("Cannot connect to the Elasticsearch cluster configured in the Elasticsearch output. Logstash requires the default distribution of Elasticsearch. Please update to the default distribution of Elasticsearch for full access to all free features, or switch to the OSS distribution of Logstash.", :url => url.sanitized.to_s)
|
291
|
+
# meta[:state] = :unlicensed
|
292
|
+
#
|
293
|
+
# Instead we'll log a deprecation warning and mark it as alive:
|
294
|
+
#
|
295
|
+
log_license_deprecation_warn(url)
|
296
|
+
meta[:state] = :alive
|
297
|
+
end
|
261
298
|
end
|
262
299
|
rescue HostUnreachableError, BadResponseCodeError => e
|
263
300
|
logger.warn("Attempted to resurrect connection to dead ES instance, but got an error.", url: url.sanitized.to_s, error_type: e.class, error: e.message)
|
@@ -269,6 +306,10 @@ module LogStash; module Outputs; class ElasticSearch; class HttpClient;
|
|
269
306
|
@resurrectionist.join if @resurrectionist
|
270
307
|
end
|
271
308
|
|
309
|
+
def log_license_deprecation_warn(url)
|
310
|
+
logger.warn("DEPRECATION WARNING: Connecting to an OSS distribution of Elasticsearch using the default distribution of Logstash will stop working in Logstash 8.0.0. Please upgrade to the default distribution of Elasticsearch, or use the OSS distribution of Logstash", :url => url.sanitized.to_s)
|
311
|
+
end
|
312
|
+
|
272
313
|
def resurrectionist_alive?
|
273
314
|
@resurrectionist ? @resurrectionist.alive? : nil
|
274
315
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'logstash-output-elasticsearch'
|
3
|
-
s.version = '10.
|
3
|
+
s.version = '10.2.0'
|
4
4
|
s.licenses = ['apache-2.0']
|
5
5
|
s.summary = "Stores logs in Elasticsearch"
|
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/logstash-plugin install gemname. This gem is not a stand-alone program"
|
data/spec/es_spec_helper.rb
CHANGED
@@ -9,9 +9,17 @@ require_relative "support/elasticsearch/api/actions/put_ilm_policy"
|
|
9
9
|
|
10
10
|
require 'json'
|
11
11
|
|
12
|
+
unless defined?(LogStash::OSS)
|
13
|
+
LogStash::OSS = ENV['DISTRIBUTION'] != "default"
|
14
|
+
end
|
15
|
+
|
12
16
|
module ESHelper
|
13
17
|
def get_host_port
|
14
|
-
"
|
18
|
+
if ENV["INTEGRATION"] == "true"
|
19
|
+
"elasticsearch:9200"
|
20
|
+
else
|
21
|
+
"localhost:9200"
|
22
|
+
end
|
15
23
|
end
|
16
24
|
|
17
25
|
def get_client
|
@@ -54,7 +62,7 @@ module ESHelper
|
|
54
62
|
end
|
55
63
|
|
56
64
|
def self.es_version
|
57
|
-
RSpec.configuration.filter[:es_version] || ENV['ES_VERSION']
|
65
|
+
RSpec.configuration.filter[:es_version] || ENV['ES_VERSION'] || ENV['ELASTIC_STACK_VERSION']
|
58
66
|
end
|
59
67
|
|
60
68
|
RSpec::Matchers.define :have_hits do |expected|
|
@@ -76,9 +84,9 @@ module ESHelper
|
|
76
84
|
|
77
85
|
|
78
86
|
def self.es_version_satisfies?(*requirement)
|
79
|
-
es_version = RSpec.configuration.filter[:es_version] || ENV['ES_VERSION']
|
87
|
+
es_version = RSpec.configuration.filter[:es_version] || ENV['ES_VERSION'] || ENV['ELASTIC_STACK_VERSION']
|
80
88
|
if es_version.nil?
|
81
|
-
puts "Info: ES_VERSION
|
89
|
+
puts "Info: ES_VERSION, ELASTIC_STACK_VERSION or 'es_version' tag wasn't set. Returning false to all `es_version_satisfies?` call."
|
82
90
|
return false
|
83
91
|
end
|
84
92
|
es_release_version = Gem::Version.new(es_version).release
|
@@ -1,22 +1,32 @@
|
|
1
1
|
-----BEGIN CERTIFICATE-----
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
+
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
2
|
+
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
|
31
|
+
nIg9fQPvVw+fIHACZQ==
|
22
32
|
-----END CERTIFICATE-----
|
@@ -1,27 +1,51 @@
|
|
1
1
|
-----BEGIN RSA PRIVATE KEY-----
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
+
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
2
|
+
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
|
27
51
|
-----END RSA PRIVATE KEY-----
|
@@ -1,21 +1,36 @@
|
|
1
1
|
-----BEGIN CERTIFICATE-----
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
2
|
+
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
|
35
|
+
FKbYFqzgpWksa+zZ2RYYplUAxq0wYw==
|
21
36
|
-----END CERTIFICATE-----
|
@@ -1,27 +1,51 @@
|
|
1
1
|
-----BEGIN RSA PRIVATE KEY-----
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
/
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
2
|
+
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
|
27
51
|
-----END RSA PRIVATE KEY-----
|
@@ -33,6 +33,7 @@ if ESHelper.es_version_satisfies?(">= 5")
|
|
33
33
|
|
34
34
|
before do
|
35
35
|
subject.register
|
36
|
+
subject.multi_receive([])
|
36
37
|
end
|
37
38
|
|
38
39
|
shared_examples "an indexer" do
|
@@ -58,11 +59,6 @@ if ESHelper.es_version_satisfies?(">= 5")
|
|
58
59
|
end
|
59
60
|
|
60
61
|
it "sets the correct content-encoding header and body is compressed" do
|
61
|
-
# Allow xpack endpoint to be checked\
|
62
|
-
allow(subject.client.pool.adapter.client).to receive(:send).at_least(:once).with(anything, /_template/, anything).and_call_original
|
63
|
-
allow(subject.client.pool.adapter.client).to receive(:send).with(anything, /_xpack/, anything).and_call_original
|
64
|
-
allow(subject.client.pool.adapter.client).to receive(:send).with(anything, /logstash/, anything).and_call_original
|
65
|
-
allow(subject.client.pool.adapter.client).to receive(:send).with(anything, /_ilm/, anything).and_call_original
|
66
62
|
expect(subject.client.pool.adapter.client).to receive(:send).
|
67
63
|
with(anything, anything, {:headers=>{"Content-Encoding"=>"gzip", "Content-Type"=>"application/json"}, :body => a_valid_gzip_encoded_string}).
|
68
64
|
and_call_original
|
@@ -63,6 +63,7 @@ describe "indexing" do
|
|
63
63
|
|
64
64
|
before do
|
65
65
|
subject.register
|
66
|
+
subject.multi_receive([])
|
66
67
|
end
|
67
68
|
|
68
69
|
shared_examples "an indexer" do |secure|
|
@@ -98,14 +99,6 @@ describe "indexing" do
|
|
98
99
|
:eager => true
|
99
100
|
}}
|
100
101
|
end
|
101
|
-
# Allow template to be checked for existence/installed
|
102
|
-
allow(subject.client.pool.adapter.client).to receive(:send).at_least(:once).with(anything, /_template/, anything).and_call_original
|
103
|
-
# Allow xpack endpoint to be checked\
|
104
|
-
allow(subject.client.pool.adapter.client).to receive(:send).with(anything, /_xpack/, anything).and_call_original
|
105
|
-
# Allow ilm policy to be checked for existence/installed
|
106
|
-
allow(subject.client.pool.adapter.client).to receive(:send).with(anything, /_ilm/, anything).and_call_original
|
107
|
-
# Allow write alias to be checked for existence/installed
|
108
|
-
allow(subject.client.pool.adapter.client).to receive(:send).with(anything, /logstash/, anything).and_call_original
|
109
102
|
expect(subject.client.pool.adapter.client).to receive(:send).
|
110
103
|
with(anything, anything, expected_manticore_opts).at_least(:once).
|
111
104
|
and_call_original
|
@@ -138,10 +131,10 @@ describe "indexing" do
|
|
138
131
|
let(:user) { "simpleuser" }
|
139
132
|
let(:password) { "abc123" }
|
140
133
|
let(:cacert) { "spec/fixtures/test_certs/test.crt" }
|
141
|
-
let(:es_url) {"https://
|
134
|
+
let(:es_url) {"https://elasticsearch:9200"}
|
142
135
|
let(:config) do
|
143
136
|
{
|
144
|
-
"hosts" => ["
|
137
|
+
"hosts" => ["elasticsearch:9200"],
|
145
138
|
"user" => user,
|
146
139
|
"password" => password,
|
147
140
|
"ssl" => true,
|
@@ -173,7 +166,7 @@ describe "indexing" do
|
|
173
166
|
describe "with a user/password requiring escaping in the URL" do
|
174
167
|
let(:config) do
|
175
168
|
{
|
176
|
-
"hosts" => ["https://#{CGI.escape(user)}:#{CGI.escape(password)}@
|
169
|
+
"hosts" => ["https://#{CGI.escape(user)}:#{CGI.escape(password)}@elasticsearch:9200"],
|
177
170
|
"ssl" => true,
|
178
171
|
"cacert" => "spec/fixtures/test_certs/test.crt",
|
179
172
|
"index" => index
|
@@ -2,10 +2,14 @@ require "logstash/devutils/rspec/spec_helper"
|
|
2
2
|
require_relative "../../../spec/es_spec_helper"
|
3
3
|
require "logstash/outputs/elasticsearch/http_client"
|
4
4
|
require "json"
|
5
|
+
require "socket"
|
5
6
|
|
6
7
|
describe "pool sniffer", :integration => true do
|
7
8
|
let(:logger) { Cabin::Channel.get }
|
8
9
|
let(:adapter) { LogStash::Outputs::ElasticSearch::HttpClient::ManticoreAdapter.new(logger) }
|
10
|
+
let(:es_host) { get_host_port.split(":").first }
|
11
|
+
let(:es_port) { get_host_port.split(":").last }
|
12
|
+
let(:es_ip) { IPSocket.getaddress(es_host) }
|
9
13
|
let(:initial_urls) { [::LogStash::Util::SafeURI.new("http://#{get_host_port}")] }
|
10
14
|
let(:options) do
|
11
15
|
{
|
@@ -36,7 +40,7 @@ describe "pool sniffer", :integration => true do
|
|
36
40
|
# We do a more thorough check on these versions because we can more reliably guess the ip
|
37
41
|
uris = subject.check_sniff
|
38
42
|
|
39
|
-
expect(uris).to include(::LogStash::Util::SafeURI.new("//#{
|
43
|
+
expect(uris).to include(::LogStash::Util::SafeURI.new("//#{es_ip}:#{es_port}"))
|
40
44
|
else
|
41
45
|
# ES 1.x (and ES 7.x) returned the public hostname by default. This is hard to approximate
|
42
46
|
# so for ES1.x and 7.x we don't check the *exact* hostname
|
@@ -8,12 +8,15 @@ describe LogStash::Outputs::ElasticSearch::HttpClient::Pool do
|
|
8
8
|
let(:initial_urls) { [::LogStash::Util::SafeURI.new("http://localhost:9200")] }
|
9
9
|
let(:options) { {:resurrect_delay => 2, :url_normalizer => proc {|u| u}} } # Shorten the delay a bit to speed up tests
|
10
10
|
let(:es_node_versions) { [ "0.0.0" ] }
|
11
|
+
let(:oss) { true }
|
12
|
+
let(:valid_license) { true }
|
11
13
|
|
12
14
|
subject { described_class.new(logger, adapter, initial_urls, options) }
|
13
15
|
|
14
16
|
let(:manticore_double) { double("manticore a") }
|
15
17
|
before(:each) do
|
16
18
|
|
19
|
+
allow(::LogStash::Outputs::ElasticSearch).to receive(:oss?).and_return(oss)
|
17
20
|
response_double = double("manticore response").as_null_object
|
18
21
|
# Allow healtchecks
|
19
22
|
allow(manticore_double).to receive(:head).with(any_args).and_return(response_double)
|
@@ -23,6 +26,8 @@ describe LogStash::Outputs::ElasticSearch::HttpClient::Pool do
|
|
23
26
|
allow(::Manticore::Client).to receive(:new).and_return(manticore_double)
|
24
27
|
|
25
28
|
allow(subject).to receive(:get_es_version).with(any_args).and_return(*es_node_versions)
|
29
|
+
allow(subject).to receive(:oss?).and_return(oss)
|
30
|
+
allow(subject).to receive(:valid_es_license?).and_return(valid_license)
|
26
31
|
end
|
27
32
|
|
28
33
|
after do
|
@@ -235,4 +240,35 @@ describe LogStash::Outputs::ElasticSearch::HttpClient::Pool do
|
|
235
240
|
end
|
236
241
|
end
|
237
242
|
end
|
243
|
+
|
244
|
+
describe "license checking" do
|
245
|
+
before(:each) do
|
246
|
+
allow(subject).to receive(:health_check_request)
|
247
|
+
end
|
248
|
+
context "when using default logstash distribution" do
|
249
|
+
let(:oss) { false }
|
250
|
+
context "if ES doesn't return a valid license" do
|
251
|
+
let(:valid_license) { false }
|
252
|
+
it "marks the url as active" do
|
253
|
+
subject.update_initial_urls
|
254
|
+
expect(subject.alive_urls_count).to eq(1)
|
255
|
+
end
|
256
|
+
it "logs a warning" do
|
257
|
+
expect(subject).to receive(:log_license_deprecation_warn).once
|
258
|
+
subject.update_initial_urls
|
259
|
+
end
|
260
|
+
end
|
261
|
+
context "if ES returns a valid license" do
|
262
|
+
let(:valid_license) { true }
|
263
|
+
it "marks the url as active" do
|
264
|
+
subject.update_initial_urls
|
265
|
+
expect(subject.alive_urls_count).to eq(1)
|
266
|
+
end
|
267
|
+
it "does not log a warning" do
|
268
|
+
expect(subject).to_not receive(:log_license_deprecation_warn)
|
269
|
+
subject.update_initial_urls
|
270
|
+
end
|
271
|
+
end
|
272
|
+
end
|
273
|
+
end
|
238
274
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstash-output-elasticsearch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 10.
|
4
|
+
version: 10.2.0
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Elastic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-10-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -163,6 +163,7 @@ files:
|
|
163
163
|
- lib/logstash/outputs/elasticsearch/elasticsearch-template-es5x.json
|
164
164
|
- lib/logstash/outputs/elasticsearch/elasticsearch-template-es6x.json
|
165
165
|
- lib/logstash/outputs/elasticsearch/elasticsearch-template-es7x.json
|
166
|
+
- lib/logstash/outputs/elasticsearch/elasticsearch-template-es8x.json
|
166
167
|
- lib/logstash/outputs/elasticsearch/http_client.rb
|
167
168
|
- lib/logstash/outputs/elasticsearch/http_client/manticore_adapter.rb
|
168
169
|
- lib/logstash/outputs/elasticsearch/http_client/pool.rb
|