lib/fluent/plugin/out_metricsense.rb in fluent-plugin-metricsense-0.2.2 vs lib/fluent/plugin/out_metricsense.rb in fluent-plugin-metricsense-0.2.3

- old
+ new

@@ -59,11 +59,11 @@ config_param :remove_tag_prefix, :string, :default => nil config_param :add_tag_prefix, :string, :default => nil config_param :backend, :string - config_param :aggregate_interval, :integer, :default => 60 + config_param :aggregate_interval, :time, :default => 60 def configure(conf) super if @remove_tag_prefix @@ -83,10 +83,15 @@ be = BACKENDS[@backend] unless be raise ConfigError, "unknown backend: #{@backend.inspect}" end + # aggregate_interval must be a multiple of 60 to normalize values + # into X per minute + @aggregate_interval = @aggregate_interval.to_i / 60 * 60 + @normalize_factor = @aggregate_interval / 60 + @backend = be.new @backend.configure(conf) end def start @@ -169,10 +174,14 @@ def initialize @value = 0 end attr_reader :value + def normalized_value(n) + n == 1 ? @value : @value.to_f / n + end + def add(value) @value += value end def mode @@ -184,10 +193,14 @@ def initialize @value = 0 end attr_reader :value + def normalized_value(n) + @value + end + def add(value) if @value < value @value = value end @value @@ -229,10 +242,10 @@ } } data = [] counters.each_pair {|ak,up| - data << [ak.tag, ak.time, up.value, ak.seg_key, ak.seg_val, up.mode] + data << [ak.tag, ak.time, up.normalized_value(@normalize_factor), ak.seg_key, ak.seg_val, up.mode] } @backend.write(data) end end