Class: Hitimes::ValueMetric

Inherits:
Metric
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/hitimes/value_metric.rb

Overview

A ValueMetric holds the data from measuring a single value over a period of time. In most cases this may be a single measurement at a single point in time.

A good example of a ValueMetric is measuring the number of items in a queue.

A ValueMetric contains a Stats object, therefore ValueMetric has count, max, mean, min, stddev, sum, sumsq methods that delegate to that Stats object for convenience.

Instance Attribute Summary collapse

Attributes inherited from Metric

#additional_data, #name, #sampling_delta

Instance Method Summary collapse

Methods inherited from Metric

#sampling_start_time, #sampling_stop_time, #utc_microseconds

Constructor Details

#initialize(name, additional_data = {}) ⇒ ValueMetric

:call-seq:

ValueMetric.new( 'my_metric' ) -> ValueMetric
ValueMetric.new( 'my_metric', 'foo' => 'bar', 'this' => 42 ) -> ValueMetric

Create a new ValueMetric giving it a name and additional data. additional_data may be anything that follows the to_hash protocol.



33
34
35
36
# File 'lib/hitimes/value_metric.rb', line 33

def initialize(name, additional_data = {})
  super(name, additional_data)
  @stats = Stats.new
end

Instance Attribute Details

#statsObject (readonly)

holds all the statistics



23
24
25
# File 'lib/hitimes/value_metric.rb', line 23

def stats
  @stats
end

Instance Method Details

#measure(value) ⇒ Object

:call-seq:

metric.measure( value ) -> Float

Give the value as the measurement to the metric. The value is returned



44
45
46
47
48
49
50
51
52
# File 'lib/hitimes/value_metric.rb', line 44

def measure(value)
  @sampling_start_time ||= utc_microseconds
  @sampling_start_interval ||= Interval.now

  @stats.update(value)

  # update the length of time we have been sampling
  @sampling_delta = @sampling_start_interval.duration_so_far
end

#to_hashObject

:call-seq:

metric.to_hash -> Hash

Convert the metric to a hash



60
61
62
63
64
65
66
# File 'lib/hitimes/value_metric.rb', line 60

def to_hash
  result = super
  (Stats::STATS - %w[rate]).each do |stat|
    result[stat] = send(stat)
  end
  result
end