Class: LogStash::Outputs::Ciscozeusmetrics

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

Overview

Outputs metrics to CiscoZeus

Instance Method Summary collapse

Instance Method Details

#multi_receive(events) ⇒ Object

def register



31
32
33
34
35
36
37
38
39
# File 'lib/logstash/outputs/CiscoZeusMetrics.rb', line 31

def multi_receive(events)
  events.group_by{ |ev| ev.sprintf(@metric_name) }.each do |metric_name, events_group|
    metrics = events_group.map{|event| reform(event)}
    result = @zeus_client.send_metrics(metric_name, metrics)
    if not result.success?
      STDERR.puts "Failed to send data to zeus: " + result.data.to_s
    end
  end
end

#reform(event) ⇒ Object

Matches Zeus metrics API format



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

def reform(event)
  datapoint = {}
  if @fields == nil
    datapoint = event.to_hash.select{ |k,v| k != "@timestamp" and v.is_a? Numeric }
  else
    datapoint = event.to_hash.select{ |k,v| @fields.include? k }
    datapoint = Hash[datapoint.map{ |k,v|  [k,if v.is_a? Numeric then v else v.to_f end]}]
  end
  return {timestamp: event.get("@timestamp").to_f, point: datapoint}
end

#registerObject



24
25
26
27
28
29
# File 'lib/logstash/outputs/CiscoZeusMetrics.rb', line 24

def register
  @zeus_client = Zeus::APIClient.new({
    access_token: @token,
    endpoint: @endpoint
  })
end