class Hallmonitor::Outputters::NewRelic
Outputs events to NewRelic
using their custom metrics API
Public Class Methods
new(prefix = '')
click to toggle source
Initializes a new instance @raise String if {NewRelic::Agent} isn't defined (Library isn't loaded) @param prefix [String] String to prefix all metrics with
Calls superclass method
Hallmonitor::Outputter::new
# File lib/hallmonitor/outputters/new_relic.rb, line 8 def initialize(prefix = '') unless defined?(::NewRelic::Agent) fail 'In order to use NewRelic, new_relic gem must be installed' end super(prefix) end
Public Instance Methods
process(event)
click to toggle source
# File lib/hallmonitor/outputters/new_relic.rb, line 15 def process(event) if event.is_a?(Hallmonitor::TimedEvent) process_timed_event(event) elsif event.is_a?(Hallmonitor::GaugeEvent) process_gauge_event(event) else process_event(event) end end
Private Instance Methods
new_relic_name(name)
click to toggle source
Formats the event name into the naming scheme that NewRelic
expects
# File lib/hallmonitor/outputters/new_relic.rb, line 58 def new_relic_name(name) "Custom/#{name.tr('.', '/')}" end
process_event(event)
click to toggle source
# File lib/hallmonitor/outputters/new_relic.rb, line 47 def process_event(event) if event.count.is_a?(Hash) event.count.each do |name, value| ::NewRelic::Agent.increment_metric(new_relic_name("#{event.name}.#{name}"), value) end else ::NewRelic::Agent.increment_metric(new_relic_name(event.name), event.count) end end
process_gauge_event(event)
click to toggle source
# File lib/hallmonitor/outputters/new_relic.rb, line 37 def process_gauge_event(event) if event.value.is_a?(Hash) event.value.each do |name, value| ::NewRelic::Agent.record_metric(new_relic_name("#{event.name}.#{name}"), value) end else ::NewRelic::Agent.record_metric(new_relic_name(event.name), event.value) end end
process_timed_event(event)
click to toggle source
# File lib/hallmonitor/outputters/new_relic.rb, line 27 def process_timed_event(event) if event.duration.is_a?(Hash) event.duration.each do |name, value| ::NewRelic::Agent.record_metric(new_relic_name("#{event.name}.#{name}"), value) end else ::NewRelic::Agent.record_metric(new_relic_name(event.name), event.duration) end end