Class: LogStash::Outputs::DatadogLogs::DatadogClient

Inherits:
Object
  • Object
show all
Defined in:
lib/logstash/outputs/datadog_logs.rb

Direct Known Subclasses

DatadogHTTPClient, DatadogTCPClient

Instance Method Summary collapse

Instance Method Details

#closeObject

Raises:

  • (NotImplementedError)


184
185
186
# File 'lib/logstash/outputs/datadog_logs.rb', line 184

def close
  raise NotImplementedError, "Datadog transport client should implement the close method"
end

#send(payload) ⇒ Object

Raises:

  • (NotImplementedError)


180
181
182
# File 'lib/logstash/outputs/datadog_logs.rb', line 180

def send(payload)
  raise NotImplementedError, "Datadog transport client should implement the send method"
end

#send_retries(payload, max_retries, max_backoff) ⇒ Object



161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
# File 'lib/logstash/outputs/datadog_logs.rb', line 161

def send_retries(payload, max_retries, max_backoff)
  backoff = 1
  retries = 0
  begin
    send(payload)
  rescue RetryableError => e
    if retries < max_retries || max_retries < 0
      @logger.warn("Retrying send due to: #{e.message}")
      sleep backoff
      backoff = 2 * backoff unless backoff > max_backoff
      retries += 1
      retry
    end
    @logger.error("Max number of retries reached, dropping message. Last exception: #{ex.message}")
  rescue => ex
    @logger.error("Unmanaged exception while sending log to datadog #{ex.message}")
  end
end