Class: Fluent::Plugin::Opentelemetry::HttpOutputHandler

Inherits:
Object
  • Object
show all
Defined in:
lib/fluent/plugin/opentelemetry/http_output_handler.rb

Instance Method Summary collapse

Constructor Details

#initialize(http_config, transport_config, logger) ⇒ HttpOutputHandler

Returns a new instance of HttpOutputHandler.



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/fluent/plugin/opentelemetry/http_output_handler.rb', line 12

def initialize(http_config, transport_config, logger)
  @http_config = http_config
  @transport_config = transport_config
  @logger = logger

  @tls_settings = {}
  if @transport_config.protocol == :tls
    @tls_settings[:client_cert] = @transport_config.cert_path
    @tls_settings[:client_key] = @transport_config.private_key_path
    @tls_settings[:client_key_pass] = @transport_config.private_key_passphrase
    @tls_settings[:ssl_min_version] = Fluent::Plugin::Opentelemetry::TLS_VERSIONS_MAP[@transport_config.min_version]
    @tls_settings[:ssl_max_version] = Fluent::Plugin::Opentelemetry::TLS_VERSIONS_MAP[@transport_config.max_version]
  end

  @timeout_settings = {
    read_timeout: http_config.read_timeout,
    write_timeout: http_config.write_timeout,
    connect_timeout: http_config.connect_timeout
  }
end

Instance Method Details

#export(record) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/fluent/plugin/opentelemetry/http_output_handler.rb', line 33

def export(record)
  uri, connection = create_http_connection(record)
  response = connection.post

  if response.status != 200
    if response.status == 400
      # The client MUST NOT retry the request when it receives HTTP 400 Bad Request response.
      raise Fluent::UnrecoverableError, "got unrecoverable error response from '#{uri}', response code is #{response.status}"
    end

    if @http_config.retryable_response_codes&.include?(response.status)
      raise Fluent::Plugin::OpentelemetryOutput::RetryableResponse, "got retryable error response from '#{uri}', response code is #{response.status}"
    end
    if @http_config.error_response_as_unrecoverable
      raise Fluent::UnrecoverableError, "got unrecoverable error response from '#{uri}', response code is #{response.status}"
    else
      @logger.error "got error response from '#{uri}', response code is #{response.status}"
    end
  end
end