class LogStash::Outputs::DatadogLogs::DatadogHTTPClient
Constants
- RETRYABLE_EXCEPTIONS
Public Class Methods
new(logger, use_ssl, no_ssl_validation, host, port, use_compression, api_key)
click to toggle source
# File lib/logstash/outputs/datadog_logs.rb, line 195 def initialize(logger, use_ssl, no_ssl_validation, host, port, use_compression, api_key) @logger = logger protocol = use_ssl ? "https" : "http" @url = "#{protocol}://#{host}:#{port.to_s}/v1/input/#{api_key}" @headers = {"Content-Type" => "application/json"} if use_compression @headers["Content-Encoding"] = "gzip" end logger.info("Starting HTTP connection to #{protocol}://#{host}:#{port.to_s} with compression " + (use_compression ? "enabled" : "disabled")) config = {} config[:ssl][:verify] = :disable if no_ssl_validation @client = Manticore::Client.new(config) end
Public Instance Methods
close()
click to toggle source
# File lib/logstash/outputs/datadog_logs.rb, line 233 def close @client.close end
retryable_exception?(exception)
click to toggle source
# File lib/logstash/outputs/datadog_logs.rb, line 229 def retryable_exception?(exception) RETRYABLE_EXCEPTIONS.any? { |e| exception.is_a?(e) } end
send(payload)
click to toggle source
# File lib/logstash/outputs/datadog_logs.rb, line 209 def send(payload) begin response = @client.post(@url, :body => payload, :headers => @headers).call if response.code >= 500 raise RetryableError.new "Unable to send payload: #{response.code} #{response.body}" end if response.code >= 400 @logger.error("Unable to send payload due to client error: #{response.code} #{response.body}") end rescue => client_exception should_retry = retryable_exception?(client_exception) if should_retry raise RetryableError.new "Unable to send payload #{client_exception.message}" else raise client_exception end end end