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