Class: LogStash::Outputs::Ciscozeusmetrics
- Inherits:
-
Base
- Object
- Base
- LogStash::Outputs::Ciscozeusmetrics
- Defined in:
- lib/logstash/outputs/CiscoZeusMetrics.rb
Overview
Outputs metrics to CiscoZeus
Instance Method Summary collapse
-
#multi_receive(events) ⇒ Object
def register.
-
#reform(event) ⇒ Object
Matches Zeus metrics API format.
- #register ⇒ Object
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 |
#register ⇒ Object
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 |