logstash-output-elasticsearch 9.1.4-java → 9.2.0-java

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a8917f99f05252cd3a9386839e0dbdbcc5196660620a60f15b3505979f76dcde
4
- data.tar.gz: f0eff97eb0951baa55a73db99131784ee9ddfd6498eab5b6d0bbf616582e728c
3
+ metadata.gz: 6d35b36dcfe8e22093ba7168cfe5dd86b40aefd706a31dc0264c7c65cec5003e
4
+ data.tar.gz: 64e0591505d8ea28dc0b739d6b7c0408384aaedbd8dade246ca21d59c3ad3e05
5
5
  SHA512:
6
- metadata.gz: 1832b2292c90c7c63ac4390a615abbd4215351f5949ec33d1e9a51e450af9066a09294cdb89b9bb24a9eed77d9546860eb929c80d6c515acb507b7c6bbab4397
7
- data.tar.gz: 6bee0365e4003c390e098901ae6ec0f62dec19123b7cdef184bed92eecb9c1d54cf5bfc0130a202f0f8cae72c5ae1fbb3eb89cfdd7731ebba0da7afc816eff50
6
+ metadata.gz: 96fcb5f6f82c621eff1db8675f510c66550d7fd43b53edbccf0d030081907a13dde42fa2086c0dffc8bea64d210bc6220c696ab02e0319977a441704bd10d920
7
+ data.tar.gz: d6878897f12cc383206a2412c730f9aee19bd70f090637d32a09ba086db3cf5d8a1132590041de75fd815d6cfd96133c1303feca3ec300e5a9757236bfbae2de
data/CHANGELOG.md CHANGED
@@ -1,3 +1,6 @@
1
+ ## 9.2.0
2
+ - Added support for customizing HTTP headers [#782](https://github.com/logstash-plugins/logstash-output-elasticsearch/pull/782)
3
+
1
4
  ## 9.1.4
2
5
  - Log an error -- not a warning -- when ES raises an invalid\_index\_name\_exception.
3
6
 
data/docs/index.asciidoc CHANGED
@@ -124,6 +124,7 @@ This plugin supports the following configuration options plus the <<plugins-{typ
124
124
  | <<plugins-{type}s-{plugin}-action>> |<<string,string>>|No
125
125
  | <<plugins-{type}s-{plugin}-bulk_path>> |<<string,string>>|No
126
126
  | <<plugins-{type}s-{plugin}-cacert>> |a valid filesystem path|No
127
+ | <<plugins-{type}s-{plugin}-custom_headers>> |<<hash,hash>>|No
127
128
  | <<plugins-{type}s-{plugin}-doc_as_upsert>> |<<boolean,boolean>>|No
128
129
  | <<plugins-{type}s-{plugin}-document_id>> |<<string,string>>|No
129
130
  | <<plugins-{type}s-{plugin}-document_type>> |<<string,string>>|No
@@ -258,6 +259,17 @@ Set the Elasticsearch errors in the whitelist that you don't want to log.
258
259
  A useful example is when you want to skip all 409 errors
259
260
  which are `document_already_exists_exception`.
260
261
 
262
+ [id="plugins-{type}s-{plugin}-custom_headers"]
263
+ ===== `custom_headers`
264
+
265
+ * Value type is <<hash,hash>>
266
+ * There is no default value for this setting.
267
+
268
+ Pass a set of key value pairs as the headers sent in each request to
269
+ an elasticsearch node. The headers will be used for any kind of request
270
+ (_bulk request, template installation, health checks and sniffing).
271
+ These custom headers will be overidden by settings like `http_compression`.
272
+
261
273
  [id="plugins-{type}s-{plugin}-healthcheck_path"]
262
274
  ===== `healthcheck_path`
263
275
 
@@ -226,6 +226,9 @@ class LogStash::Outputs::ElasticSearch < LogStash::Outputs::Base
226
226
  # Enable gzip compression on requests. Note that response compression is on by default for Elasticsearch v5.0 and beyond
227
227
  config :http_compression, :validate => :boolean, :default => false
228
228
 
229
+ # Custom Headers to send on each request to elasticsearch nodes
230
+ config :custom_headers, :validate => :hash, :default => {}
231
+
229
232
  def build_client
230
233
  params["metric"] = metric
231
234
  @client ||= ::LogStash::Outputs::ElasticSearch::HttpClientBuilder.build(@logger, @hosts, params)
@@ -46,6 +46,7 @@ module LogStash; module Outputs; class ElasticSearch;
46
46
  # * `:ssl` - Boolean. Enable or disable SSL/TLS.
47
47
  # * `:proxy` - String. Choose a HTTP HTTProxy to use.
48
48
  # * `:path` - String. The leading path for prefixing Elasticsearch
49
+ # * `:headers` - Hash. Pairs of headers and their values
49
50
  # requests. This is sometimes used if you are proxying Elasticsearch access
50
51
  # through a special http path, such as using mod_rewrite.
51
52
  def initialize(options={})
@@ -53,11 +54,11 @@ module LogStash; module Outputs; class ElasticSearch;
53
54
  @metric = options[:metric]
54
55
  @bulk_request_metrics = @metric.namespace(:bulk_requests)
55
56
  @bulk_response_metrics = @bulk_request_metrics.namespace(:responses)
56
-
57
+
57
58
  # Again, in case we use DEFAULT_OPTIONS in the future, uncomment this.
58
59
  # @options = DEFAULT_OPTIONS.merge(options)
59
60
  @options = options
60
-
61
+
61
62
  @url_template = build_url_template
62
63
 
63
64
  @pool = build_pool(@options)
@@ -65,7 +66,7 @@ module LogStash; module Outputs; class ElasticSearch;
65
66
  # connection pool at the same time
66
67
  @bulk_path = @options[:bulk_path]
67
68
  end
68
-
69
+
69
70
  def build_url_template
70
71
  {
71
72
  :scheme => self.scheme,
@@ -138,7 +139,7 @@ module LogStash; module Outputs; class ElasticSearch;
138
139
 
139
140
  def bulk_send(body_stream)
140
141
  params = http_compression ? {:headers => {"Content-Encoding" => "gzip"}} : {}
141
- # Discard the URL
142
+ # Discard the URL
142
143
  response = @pool.post(@bulk_path, params, body_stream.string)
143
144
  if !body_stream.closed?
144
145
  body_stream.truncate(0)
@@ -274,7 +275,9 @@ module LogStash; module Outputs; class ElasticSearch;
274
275
  end
275
276
 
276
277
  adapter_options[:ssl] = ssl_options if self.scheme == 'https'
277
-
278
+
279
+ adapter_options[:headers] = client_settings[:headers] if client_settings[:headers]
280
+
278
281
  adapter_class = ::LogStash::Outputs::ElasticSearch::HttpClient::ManticoreAdapter
279
282
  adapter = adapter_class.new(@logger, adapter_options)
280
283
  end
@@ -7,7 +7,8 @@ module LogStash; module Outputs; class ElasticSearch;
7
7
  :pool_max => params["pool_max"],
8
8
  :pool_max_per_route => params["pool_max_per_route"],
9
9
  :check_connection_timeout => params["validate_after_inactivity"],
10
- :http_compression => params["http_compression"]
10
+ :http_compression => params["http_compression"],
11
+ :headers => params["custom_headers"]
11
12
  }
12
13
 
13
14
  client_settings[:proxy] = params["proxy"] if params["proxy"]
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'logstash-output-elasticsearch'
3
- s.version = '9.1.4'
3
+ s.version = '9.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"
@@ -555,4 +555,22 @@ describe LogStash::Outputs::ElasticSearch do
555
555
  end
556
556
  end
557
557
  end
558
+
559
+ describe "custom headers" do
560
+ let(:manticore_options) { subject.client.pool.adapter.manticore.instance_variable_get(:@options) }
561
+
562
+ context "when set" do
563
+ let(:headers) { { "X-Thing" => "Test" } }
564
+ let(:options) { { "custom_headers" => headers } }
565
+ it "should use the custom headers in the adapter options" do
566
+ expect(manticore_options[:headers]).to eq(headers)
567
+ end
568
+ end
569
+
570
+ context "when not set" do
571
+ it "should have no headers" do
572
+ expect(manticore_options[:headers]).to be_empty
573
+ end
574
+ end
575
+ end
558
576
  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: 9.1.4
4
+ version: 9.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: 2018-05-23 00:00:00.000000000 Z
11
+ date: 2018-06-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement