class Metrics::Drivers::L2Met

Attributes

logger[R]
source_prefix[R]

Public Class Methods

new(logger, source_prefix) click to toggle source
# File lib/metrics/drivers/l2met.rb, line 6
def initialize(logger, source_prefix)
  @logger = logger
  @source_prefix = source_prefix
end

Public Instance Methods

lines(instrumenters) click to toggle source

Example source=web.2 sample#load_avg_1m=0.31 sample#load_avg_5m=0.10 sample#load_avg_15m=0.05

# File lib/metrics/drivers/l2met.rb, line 20
def lines(instrumenters)
  groups(instrumenters).map do |source, instrumenters|
    measurements = instrumenters.map { |instrumenter| measurement(instrumenter) }
    Lines.new(full_source(source), measurements).lines
  end.flatten
end
write(*instrumenters) click to toggle source
# File lib/metrics/drivers/l2met.rb, line 11
def write(*instrumenters)
  lines(instrumenters).each do |line|
    logger.info line
  end
  instrumenters
end

Private Instance Methods

blank?(string) click to toggle source
# File lib/metrics/drivers/l2met.rb, line 47
def blank?(string)
  string.nil? || string.empty?
end
full_source(source=nil) click to toggle source
# File lib/metrics/drivers/l2met.rb, line 35
def full_source(source=nil)
  [source_prefix, source].reject { |s| blank?(s) }.join('.')
end
groups(instrumenters) click to toggle source

Internal: We group the metrics by their source so that we can separate the lines.

# File lib/metrics/drivers/l2met.rb, line 31
def groups(instrumenters)
  instrumenters.group_by(&:source)
end
measurement(instrumenter) click to toggle source
# File lib/metrics/drivers/l2met.rb, line 39
def measurement(instrumenter)
  type = instrumenter.type
  type = 'measure' if type == 'histogram' # histogram not supported.
  value = instrumenter.value
  value = value.round(PRECISION) if value.is_a?(Float)
  "#{type}##{instrumenter.metric}=#{value}#{instrumenter.units}"
end