Class: LogStash::Outputs::SumoLogic

Inherits:
Base
  • Object
show all
Includes:
PluginMixins::HttpClient
Defined in:
lib/logstash/outputs/sumologic.rb

Overview

Now you can use logstash to deliver logs to Sumo Logic

Create a HTTP Source in your Sumo Logic account and you can now use logstash to parse your log and send your logs to your account at Sumo Logic.

Instance Method Summary collapse

Instance Method Details

#closeObject



84
85
86
87
88
89
90
# File 'lib/logstash/outputs/sumologic.rb', line 84

def close
  @semaphore.synchronize {
    send_request(@pile.join($/))
    @pile.clear
  }
  client.close
end

#multi_receive(events) ⇒ Object



52
53
54
55
# File 'lib/logstash/outputs/sumologic.rb', line 52

def multi_receive(events)
  events.each { |event| receive(event) }
  client.execute!
end

#receive(event) ⇒ Object



58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/logstash/outputs/sumologic.rb', line 58

def receive(event)
  if event == LogStash::SHUTDOWN
    finished
    return
  end

  content = format_event(event)
  
  if @interval <= 0 # means send immediately
    send_request(content)
    return
  end

  @semaphore.synchronize {
    now = Time.now
    @pile << content

    if now - @timer > @interval # ready to send
      send_request(@pile.join($/))
      @timer = now
      @pile.clear
    end
  }
end

#registerObject



42
43
44
45
46
47
48
49
# File 'lib/logstash/outputs/sumologic.rb', line 42

def register
  # initialize request pool
  @request_tokens = SizedQueue.new(@pool_max)
  @pool_max.times { |t| @request_tokens << true }
  @timer = Time.now
  @pile = Array.new
  @semaphore = Mutex.new
end