Class: LogStash::Outputs::DatadogLogs

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

Overview

DatadogLogs lets you send logs to Datadog based on LogStash events.

Instance Method Summary collapse

Instance Method Details

#receive(event) ⇒ Object



53
54
55
56
# File 'lib/logstash/outputs/datadog_logs.rb', line 53

def receive(event)
  # handle new event
  @codec.encode(event)
end

#registerObject



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/logstash/outputs/datadog_logs.rb', line 27

def register
  require "socket"
  client = nil
  @codec.on_event do |event, payload|
    message = "#{@api_key} #{payload}\n"
    retries = 0
    backoff = 1
    begin
      client ||= new_client
      client.write(message)
    rescue => e
      @logger.warn("Could not send payload", :exception => e, :backtrace => e.backtrace)
      client.close rescue nil
      client = nil
      if retries < max_retries || max_retries < 0
        sleep backoff
        backoff = 2 * backoff unless backoff > max_backoff
        retries += 1
        retry
      end
      @logger.warn("Max number of retries reached, dropping the payload", :payload => payload, :max_retries => max_retries)
    end
  end
end