class FnordMetric::TimeseriesGauge
Public Class Methods
new(opts)
click to toggle source
Calls superclass method
FnordMetric::Gauge::new
# File lib/fnordmetric/gauges/timeseries_gauge.rb, line 3 def initialize(opts) super(opts) @opts[:series] = @opts[:series].map(&:to_sym) if @opts[:calculate] unless [:sum, :average, :progressive_sum].include?(@opts[:calculate].to_sym) raise "unknown calculate option: #{@opts[:calculate]}" end @calculate = @opts[:calculate].to_sym end @calculate ||= :sum @calculate_proc = lambda{ |c,d| d > 0 ? (c/d.to_f).round(2) : c } end
Public Instance Methods
execute(cmd, context, *args)
click to toggle source
# File lib/fnordmetric/gauges/timeseries_gauge.rb, line 46 def execute(cmd, context, *args) return incr(context, *args) if cmd == :incr return incr_numerator(context, *args) if cmd == :incr_numerator return incr_denominator(context, *args) if cmd == :incr_denominator FnordMetric.error("gauge '#{name}': unknown command: #{cmd}") end
has_series?()
click to toggle source
# File lib/fnordmetric/gauges/timeseries_gauge.rb, line 58 def has_series? true end
render(namespace, event)
click to toggle source
# File lib/fnordmetric/gauges/timeseries_gauge.rb, line 19 def render(namespace, event) @interval = parse_interval(event["interval"]) colors = FnordMetric::COLORS.dup @series = Hash.new @zooms = FnordMetric::TICKS[tick, @interval.size] @total = 0 @opts[:series].each do |series| ts = FnordMetric::Timeseries.new fraction_values_in(@interval, series).each do |time, frac| @total += frac.first # FIXPAUL ts.incr_fraction(time, *frac) end @series[series] = { :color => colors.unshift(colors.pop).first, :data => Hash[@zooms.map{ |int| [int, ts.timeseries(@interval, int) ] }], :timeseries => ts } end render_page(:timeseries_gauge) end
renderable?()
click to toggle source
# File lib/fnordmetric/gauges/timeseries_gauge.rb, line 54 def renderable? true end
Private Instance Methods
incr(ctx, series_name = :default, value = 1)
click to toggle source
# File lib/fnordmetric/gauges/timeseries_gauge.rb, line 64 def incr(ctx, series_name = :default, value = 1) if @calculate == :average incr_numerator(ctx, series_name, value) incr_denominator(ctx, series_name, 1) elsif @calculate == :sum incr_numerator(ctx, series_name, value) elsif @calculate == :progressive_sum incr_numerator(ctx, series_name, value, true) end end