Class: Hitimes::ValueMetric
- 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
-
#stats ⇒ Object
readonly
holds all the statistics.
Attributes inherited from Metric
#additional_data, #name, #sampling_delta
Instance Method Summary collapse
-
#initialize(name, additional_data = {}) ⇒ ValueMetric
constructor
:call-seq: ValueMetric.new( ‘my_metric’ ) -> ValueMetric ValueMetric.new( ‘my_metric’, ‘foo’ => ‘bar’, ‘this’ => 42 ) -> ValueMetric.
-
#measure(value) ⇒ Object
:call-seq: metric.measure( value ) -> Float.
-
#to_hash ⇒ Object
:call-seq: metric.to_hash -> Hash.
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
#stats ⇒ Object (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 |