Skip to content

Commit c184aa4

Browse files
authored
Adding a config to skip_healthcheck (#170)
* Adding a config for default_server_major_version, and use it when the version can't be fetched from the root path of OpenSearch. Signed-off-by: Deep Datta <deedatta@amazon.com>
1 parent fecdf8d commit c184aa4

File tree

4 files changed

+19
-5
lines changed

4 files changed

+19
-5
lines changed

lib/logstash/outputs/opensearch.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,11 +199,14 @@ class LogStash::Outputs::OpenSearch < LogStash::Outputs::Base
199199
# Set which ingest pipeline you wish to execute for an event. You can also use event dependent configuration
200200
# here like `pipeline => "%{INGEST_PIPELINE}"`
201201
config :pipeline, :validate => :string, :default => nil
202-
202+
203203
# When set to true, use legacy templates via the _template API
204204
# When false, use index templates using the _index_template API
205205
config :legacy_template, :validate => :boolean, :default => true
206206

207+
# The OpenSearch server major version to use when it's not available from the Healthcheck endpoint.
208+
config :default_server_major_version, :validate => :number
209+
207210
attr_reader :client
208211
attr_reader :default_index
209212
attr_reader :default_template_name

lib/logstash/outputs/opensearch/http_client.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -328,7 +328,8 @@ def build_pool(options)
328328
:healthcheck_path => options[:healthcheck_path],
329329
:resurrect_delay => options[:resurrect_delay],
330330
:url_normalizer => self.method(:host_to_url),
331-
:metric => options[:metric]
331+
:metric => options[:metric],
332+
:default_server_major_version => options[:default_server_major_version]
332333
}
333334
pool_options[:scheme] = self.scheme if self.scheme
334335

lib/logstash/outputs/opensearch/http_client/pool.rb

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ def message
4040
end
4141

4242
attr_reader :logger, :adapter, :sniffing, :sniffer_delay, :resurrect_delay, :healthcheck_path, :sniffing_path, :bulk_path
43+
attr_reader :default_server_major_version
4344

4445
ROOT_URI_PATH = '/'.freeze
4546

@@ -68,6 +69,7 @@ def initialize(logger, adapter, initial_urls=[], options={})
6869
@resurrect_delay = merged[:resurrect_delay]
6970
@sniffing = merged[:sniffing]
7071
@sniffer_delay = merged[:sniffer_delay]
72+
@default_server_major_version = merged[:default_server_major_version]
7173
end
7274

7375
# Used for all concurrent operations in this class
@@ -412,8 +414,15 @@ def return_connection(url)
412414
end
413415

414416
def get_version(url)
415-
request = perform_request_to_url(url, :get, ROOT_URI_PATH)
416-
LogStash::Json.load(request.body)["version"]["number"] # e.g. "7.10.0"
417+
response = perform_request_to_url(url, :get, ROOT_URI_PATH)
418+
if response.code != 404 && !response.body.empty?
419+
return LogStash::Json.load(response.body)["version"]["number"] # e.g. "7.10.0"
420+
end
421+
if @default_server_major_version.nil?
422+
@logger.error("Failed to get version from health_check endpoint and default_server_major_version is not configured.")
423+
raise "get_version failed! no default_server_major_version configured."
424+
end
425+
"#{default_server_major_version}.0.0"
417426
end
418427

419428
def last_version

lib/logstash/outputs/opensearch/http_client_builder.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ def self.build(logger, hosts, params)
2727
common_options = {
2828
:client_settings => client_settings,
2929
:metric => params["metric"],
30-
:resurrect_delay => params["resurrect_delay"]
30+
:resurrect_delay => params["resurrect_delay"],
31+
:default_server_major_version => params["default_server_major_version"]
3132
}
3233

3334
if params["sniffing"]

0 commit comments

Comments
 (0)