class Yabeda::NewRelic::Adapter

NewRelic adapter. Sends yabeda metrics as custom metrics to NewRelic. See docs.newrelic.com/docs/agents/ruby-agent/api-guides/ruby-custom-metrics

Public Class Methods

new(*) click to toggle source
Calls superclass method
# File lib/yabeda/newrelic/adapter.rb, line 35
def initialize(*)
  super
  ::NewRelic::Agent.add_instrumentation(File.join(__dir__, "configure.rb"))
end

Public Instance Methods

perform_counter_increment!(counter, tags, increment) click to toggle source
# File lib/yabeda/newrelic/adapter.rb, line 15
def perform_counter_increment!(counter, tags, increment)
  ::NewRelic::Agent.increment_metric(build_name(counter, tags), increment)
end
perform_gauge_set!(metric, tags, value) click to toggle source
# File lib/yabeda/newrelic/adapter.rb, line 23
def perform_gauge_set!(metric, tags, value)
  ::NewRelic::Agent.record_metric(build_name(metric, tags), value)
end
perform_histogram_measure!(metric, tags, value) click to toggle source
# File lib/yabeda/newrelic/adapter.rb, line 31
def perform_histogram_measure!(metric, tags, value)
  ::NewRelic::Agent.record_metric(build_name(metric, tags), value)
end
register_counter!(_metric) click to toggle source
# File lib/yabeda/newrelic/adapter.rb, line 11
def register_counter!(_metric)
  # Do nothing. NewRelic don't need to register metrics
end
register_gauge!(_metric) click to toggle source
# File lib/yabeda/newrelic/adapter.rb, line 19
def register_gauge!(_metric)
  # Do nothing. NewRelic don't need to register metrics
end
register_histogram!(_metric) click to toggle source
# File lib/yabeda/newrelic/adapter.rb, line 27
def register_histogram!(_metric)
  # Do nothing. NewRelic don't need to register metrics
end

Private Instance Methods

build_name(metric, labels = {}) click to toggle source

docs.newrelic.com/docs/plugins/plugin-developer-resources/developer-reference/metric-naming-reference

# File lib/yabeda/newrelic/adapter.rb, line 43
def build_name(metric, labels = {})
  name = metric.name.to_s
  # Attrs: https://docs.newrelic.com/docs/plugins/plugin-developer-resources/developer-reference/metric-naming-reference#metric_attributes
  name = "#{name}/#{labels.values.join('/')}" if labels.any?
  name += units_for(metric)

  ["Custom", metric.group&.capitalize, name].compact.join("/")
end
units_for(metric) click to toggle source

docs.newrelic.com/docs/plugins/plugin-developer-resources/developer-reference/metric-units-reference

# File lib/yabeda/newrelic/adapter.rb, line 53
def units_for(metric)
  return "[#{[metric.unit, metric.per].compact.join('/')}]" if metric.unit
  return "#{name}[|#{metric.per}]" if !metric.unit && metric.per

  ""
end