class LogStash::Outputs::Ciscozeusmetrics

Outputs metrics to CiscoZeus

Public Instance Methods

multi_receive(events) click to toggle source
# 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) click to toggle source

Matches Zeus metrics API format

# 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
register() click to toggle source
# File lib/logstash/outputs/CiscoZeusMetrics.rb, line 24
def register
  @zeus_client = Zeus::APIClient.new({
    access_token: @token,
    endpoint: @endpoint
  })
end